Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

    cgc.buffer = data_buff;

    cgc.buflen = buff_size;

 

    buff_size = __swab16(buff_size);

    memcpy((void *)(cgc.cmd + 7), (void *)&buff_size, 2);

 

    if(ioctl(fd, CDROM_SEND_PACKET, &cgc) < 0) {

           perror("ioctl");

           printf("Sense key - 0x%02x ", sense.sense_key);

           printf("ASC - 0x%02x ", sense.asc);

           printf("ASCQ - 0x%02x ", sense.ascq);

 

    exit(-1);

}

 

/* Размер считанных данных */

    memcpy(&sch_length, data_buff + 2, 2);

    sch_length = __swab16(sch_length);

    printf("Sub-channel data length - %d ", sch_length);

 

    memset((void *)&cur_pos, 0, 12);

    memcpy((void *)&cur_pos, data_buff + 4, 12);

 

    printf("Data format code - %d ", cur_pos.dfc);

    printf("ADR - %d ", cur_pos.adr);

    printf("Track number - %d ", cur_pos.tno);

 

/* Текущая позиция оптического элемента */

    cur_pos.a_addr = __swab32(cur_pos.a_addr);

    printf("Current position - %u ", cur_pos.a_addr);

 

/* Освобождаем память и выходим */

    free(data_buff);

    return;

}

Полный листинг программы позиционирования оптического элемента и чтения текущей позиции находится в файле IOCTL/read_subch.c.

Результаты работы программы показали, что разные приводы выполняют команду позиционирования с разной точностью. Из двух имеющихся в моём распоряжении приводов лучший результат показал TEAC – из 30 попыток позиционирования на разные сектора не было зафиксировано ни одного промаха. У MITSUMI картина прямо противоположная: из 30 попыток ни одного точного попадания в заданный сектор, постоянные перелеты. Результаты работы программы для разных типов привода находятся в каталоге IOCTL/RESULT, файлы TEAC и MITSUMI.

Кроме спецификатора CDROM_SEND_PACKET, в файле <linux/cdrom.h> определён целый набор специализированных команд, выполняющих определенное действие и не требующих формирования командного пакета в том объеме, который был нами рассмотрен в предыдущих примерах. Это в значительной степени упрощает работу с устройством. Например, команда для открытия и закрытия лотка CD-ROM выглядит следующим образом:

ioctl(fd, CDROMEJECT); // открыть лоток CD-ROM

ioctl(fd, CDROMCLOSETRAY); // закрыть его

Рассмотрим пример функции, которая считывает TOC компакт-диска.

#define CD_DEVICE "/dev/cdrom"

int read_toc()

{

    int fd, i;

 

/* Структура struct cdrom_tochdr содержит заголовок содержимого TOC, структура struct cdrom_tocentry –

 * дескриптор трека. Обе структуры определены в файле <linux/cdrom.h>

 */

    struct cdrom_tochdr hdr;

    struct cdrom_tocentry toc;

 

/* Открываем файл устройства */


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160]
[161]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100