Модуль считывания ИК-кодов WinLIRC
Будем работать в программе WinLIRC, доступной для свободного использования, с соответствующим модулем в качестве считывающего устройства для предварительной подготовки ИК-кодов. Излучатель WinLIRC, возможно, используем для генерации системных ИК-кодов.
Схема фотосчитывателя и излучателя для работы с программой WinLIRC показана на рис. 1.76. Программа доступна на сайте Http://winlirc. sourceforge. net.
Элементы, необходимые для сборки фотосчитывателя приведены в табл. 1.10.
DTR4 |
WinLIRC приемник-передатчик R2 M7^VD2 IC1TSOP 1738
DCD |
1C278L05 oUt 2 Її ІС1 - GND =f= |
R1 |
X1 5GNDI^I |
Рис. 1.76. Схема приемника WinURC Таблица 1.10. Спецификация фотосчитывателя
|
Вид платы может быть таким, как показано на рис. 1.77. |
Рис. 1.77. Плата фотоприемника WinURC |
Программа WinLIRC работает в двух режимах при прочи - тывании ИК-кодов. В первом режиме она определяет соответствие кода стандарту и создает текстовый файл, в котором записаны параметры кода. Во втором режиме она непосредственно выводит во встроенное окно времена посылок и пауз ИК команды (рис. 1.78).
Рис. 1.78. Вид программы WinURC |
Появление в правом углу панели значка Q означает, что программа работает. Правой клавишей мыши с помощью этого значка можно вывести окно программы на экран. Кнопкой Browse задать файл конфигурации. А, щелкнув кнопку Raw Codes, прочитать ИК-команду.
Думаю, что для считывания команд мы используем второй метод, поскольку существует много кодов, не читаемых первым. Файл, записанный с помощью программы WinLIRC, выглядит следующим образом:
Коды с пульта VCR Sony Прямое считывание, клавиша power
Outputting raw mode2 data.
Space 12856572
Pulse 2455
Space 532
Pulse 1291
Space 506
Pulse 664
Space 533
Pulse 1266
Space 533
Pulse 665
Space 591
Pulse 1211
Space 533
Pulse 685
Space 515
Pulse 693
Space 526
Pulse 1271
Space 506
Pulse 1265
Space 533
Pulse 666
Space 557
Pulse 1241
Space 533
Pulse 664
Space 24527
Pulse 2463
Space 579
Pulse 1219
Space 534
Pulse 664
Space 534
Pulse 1266
Space 534
Pulse 666
Space 531
Pulse 1266
Space 534
Pulse 663
Space 536
Pulse 662
Space 567
Реально эта запись получается еще длиннее, если пульт при нажатии клавиши постоянно воспроизводит одну команду до тех пор, пока клавиша не будет отпущена (рис. 1.79).
Рис. 1.79. Считывание ИК-кода программой WinURC |
Собственно, команда, интересующая нас, содержится в следующей записи:
Outputting raw mode2 data.
Pulse 2455
Space 532
Pulse 1291
Space 506
Pulse 664
Space 533
Pulse 1266
Space 533
Pulse 665
Space 591
Pulse 1211
Space 533
Pulse 685 space 515 pulse 693 space 526 pulse 1271 space 506 pulse 1265 space 533 pulse 666 space 557 pulse 1241 space 533 pulse 664 space 24527
Здесь pulse - вспышка излучателя с частотой, положим, 36 кГц, a space - пауза между вспышками.
Раскрасим эту запись в соответствии с тем, что говорилось о кодах Sony выше:
Pulse |
2455 |
Заголовс |
Space |
532 |
|
Pulse |
1291 |
Единица |
Space |
506 |
|
Pulse |
664 |
Ноль |
Space |
533 |
|
Pulse |
1266 |
Единица |
Space |
533 |
|
Pulse |
665 |
Ноль |
Space |
591 |
|
Pulse |
1211 |
Единица |
Space |
533 |
|
Pulse |
685 |
Ноль |
Space |
515 |
|
Pulse |
693 |
Ноль |
Space |
526 |
|
Pulse |
1271 |
Единица |
Space |
506 |
|
Pulse |
1265 |
Р. дхттща |
Space |
533 |
|
Pulse |
666 |
Ноль |
Space |
557 |
|
Pulse |
1241 |
Единица |
Space |
533 |
Pulse 664
Space 24527 Пауза между командами
Числа здесь - времена в микросекундах. Код, если записать информационное представление, выглядит как 10101001101 в двоичном виде или 54D в шестнадцатеричном.
Конечно, хорошо бы хранить команду в информационном представлении, в виде двух байт. В этом случае в EEPROM можно было бы хранить до 64 команд. Но не все ИК-коды таковы. Некоторые имеют до 48 бит, то есть в информационном представлении требуют 6 байт. Есть команды, состоящие из двух последовательно воспроизводимых команд и, вдобавок, длиннее 48 бит.
Можно придумать систему шифрования кодов (с целью их сжатия), но мне кажется, что пока лучше отказаться от идеи хранения кодов в модуле передатчика ИК-команд. До поры до времени будем хранить их на компьютере в файле данных, который будет прочитываться при работе основной программы. При трансляции кода он будет передаваться по системной линии, запоминаться модулем излучения ИК-команд и воспроизводиться им. В этом случае в модуле нам предстоит запомнить только одну команду, которая снимает ограничения на общее количество команд и сложность их хранения в плане длинных кодов.
Итак, мы будем прочитывать ИК-коды с пультов устройств с помощью программы WinLIRC, обрабатывать вручную, записывать их в текстовый файл (или файлы) и воспроизводить по мере необходимости, передавая соответствующему модулю. В этом случае формат команды можно оставить таким, каким мы пользовались при работе с модулем трансляции.
На этом мы можем завершить первую версию в части исполняющих модулей. Пришло время создания основной программы для управляющего компьютера.