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

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

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

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

IT-новости

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

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

подробнее

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

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

подробнее

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

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

подробнее

/* Записываем в регистр данных переданный 12-байтный командный пакет

 * (отметим одну особенность – если записывать по одному байту, команда работать не будет)

 */

    for(i = 0; i < 12; i += 2) {

           memcpy((void *)&a, (cmd_buff + i), 2);

           OUT_P_W(a, port);

    }

 

    port = 0x177;

 

/* Ждём сброса бита BSY и установки DRDY */

    for(;;) {

           do {

                 IN_P_B(status, port);

           } while(status & BSY);

           if(status & DRDY) break;

    }

 

    return;

}

Перед отправкой устройству команды START/STOP UNIT проверим его готовность. Проверка готовности выполняется путём посылки устройству команды TEST UNIT READY:

void wait_while_ready()

{

    __u8 cmd_buff[12];

 

    memset((void *)cmd_buff, 0, 12);

    cmd_buff[0] = 0x00;

    send_packet_command(cmd_buff);

 

    return;

}

Функция закрытия лотка CD-ROM:

void close_cdrom()

{

    __u8 cmd_buff[12];

 

    memset((void *)cmd_buff, 0, 12);

    cmd_buff[0] = 0x1B; // код команды START/STOP UNIT

    cmd_buff[4] = 0x3; // LoEj = 1, Start = 1

    send_packet_command(cmd_buff);

}

Функция открытия лотка CD-ROM:

void open_cdrom()

{

    __u8 cmd_buff[12];

 

    memset((void *)cmd_buff, 0, 12);

    cmd_buff[0] = 0x1B;

    cmd_buff[4] = 0x2; // LoEj = 1, Start = 0

    send_packet_command(cmd_buff);

}

Главная функция:

int main()

{

    ioperm(0x170, 8, 1);

 

/* Ждём готовности устройства и открываем лоток */

    wait_while_ready();

    open_cdrom();

    printf("CD-ROM открыт. Нажмите 'Enter' для закрытия.");

    getchar();

 

/* Закрываем лоток */

    close_cdrom();

    wait_while_ready();

    printf("OK. CD-ROM закрыт. ");

    ioperm(0x170, 8, 0);

    return 0;

}

Теперь вместо команды START/STOP UNIT пошлём устройству команду PLAY AUDIO. По этой команде устройство начнёт воспроизведение звукового фрагмента с Аудио-CD. Формат команды PLAY AUDIO представлен на рис. 2:

PLAY AUDIO Command

Bit

Byte

7

6

5

4

3

2

1

0

0

 

Operation Code (45h)

 

1

 

Reserved

 

2

MSB

 

 

 

 

 

 

Starting Logical Block Address

 

 

 

LSB

3

4

5

6

 

Reserved

 

7

MSB

 

Transfer Length

 

 

 

LSB

8

9

 

Reserved

 

10

 

Reserved

 

11

 

Reserved

 


Предыдущая страницаОглавлениеСледующая страница
 
[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