Системные
требования Что это такое?
Это программа, с помощью которой можно управлять компьютером с обычного пульта
от телевизора, аудио-центра или еще от чего-нибудь.
Она основывается на WinLIRC (Windows Linux Infrared Remote Control) 0.6.1pre2,
которая в свою очередь основана на LIRC (Linux Infrared Remote Control). Я просто
добавил некоторые возможности, включая поддержку RX устройств
Железо
Необходимые железки просты до безобразия - есть 2 варианта:
RX устройство. Это может быть любой IrDA приемник на IrDA порту. Я пробовал
приемники ILMS5360 и TK69 649. Стоят они примерно $1.5. Я думаю, подойдет любой
приемник на 5В. Также можно придумать простую схемку на COM порт.
DCD устройство. Это устройство передает сигналы по линии Data Carrier Detect.
Это стандартное устройство для WinLIRC - вы найдете кучу его схем в интернете.
Конфигурирование
Сейчас нет времени все объяснять :) поэтому читайте доки к WinLIRC. Объясню
только основные моменты, которые важны если вы используете RX устройство:
СНАЧАЛА следует отключить стандартные драйвера
для IrDA, которые ставятся на некоторых матерях после включения IrDA. Если у
вас Windows 9x или Windows ME,
то найдите msports.inf в каталоге Windows\Inf и отредактируйте его:
1) В секции [Std] закоментируйте/удалите следующие строки (если они есть):
2) В секции [Strings] раскоментируйте/добавьте следующие строки:
*PNP0510.DeviceDesc = "Generic Ir Serial Port"
*PNP0511.DeviceDesc = "Generic Ir Serial Port"
Кроме того, для Windows ME надо удалить irmini.inf (или, лучше переименовать его например в irmini.bak)
Для Windows 2000 я удалял стандартные драйвера так:
1) В netirsir.inf удалил строки:
%*PNP0510.DeviceDesc% = ComPort, *PNP0510, *PNP0511 ; Communications
Port
%*PNP0511.DeviceDesc% = ComPort, *PNP0511, *PNP0510 ; Communications Port
в секции [Strings] добавил:
*PNP0510.DeviceDesc = "Generic Ir Serial Port"
*PNP0511.DeviceDesc = "Generic Ir Serial Port"
Добавил
ExcludeFromSelect=*PNP0510,*PNP0511
в секцию [ControlFlags]
И ТОЛЬКО ТЕПЕРЬ включите IrDA в BIOS'е. Обычно
еще требуется включить RX inverting.
WIRC (как и WinLIRC) это только сервер. Он получает ИК сигналы, декодирует
их, и посылает декодированные комманды клиентам, поэтому вам нужен WinLIRC клиент,
который и будет менять громкость, запускать и вырубать программы и т.д. Существует
много различных клиентов, но я рекомендую uICE. Свежую версию можно скачать
на http://www.mediatexx.com/. uICE тоже
может работать с RX устройством, но делает это в корне неправильно, в результате
нестабильно распознает и путает кнопки, поэтому следует использовать его только
в качестве WinLIRC клиента.
Должен быть поставлен протокол TCP/IP (просто поставьте контроллер удаленного
доступа)
Нужен файл mfc42.dll в вашем каталоге Windows\System
Как обучить WIRC?
На данный момент алгоритм обучения оставлен от оригинального WinLIRC. Возможно,
когда-нибудь я его перепишу, и обучение будет происходить проще, однако пока
AS IS. Итак, известно 2 типа пультов:
Пульты с повтором посылки
Пульты со специальным кодом повтора
К первым пультам вроде как относятся пульты Panasonic и Sony - у них при нажатии
и удержании кнопки постоянно посылается одна и та же последовательность. У пультов
со специальным кодом повтора при нажатии посылается уникальная для данной кнопки
последовательность, а при удержании - коротенький код повтора. Отличить первый
от второго можно наугад :) или поглядев в режиме Raw Codes на посылаемые пультом
посылки. Во время обучения нужно будет выбрать тип пульта, так как процесс обучения
для них отличается. Если у вас пульт с кодом повтора, то после обучения WIRC
будет распознавать только первое нажатие, но не будет распознавать удержание
кнопки. Для распознавания удержания следует руками, с помощью текстового редактора
добавить в .cf файл новую кнопку с именем _repeat,
а значения кодов для нее посмотреть в режиме Raw Codes. В качестве примера пультов
первого типа приведен файл Panasonic.cf, а пультов
второго типа - ONWA.cf
Как настроить WIRC на лучшее распознавание?
Стабильность распознавания и максимальное расстояние, на котором сможет работать
пульт зависит от корректной установки величины aeps
в .cf файле. Вам придется сделать это ручками используя любой
текстовый редактор. Чтобы понять метод, посмотрим на пример куска .cf файла:
Что мы видим? Кучу разных чисел, но РЕАЛЬНО различных
всего три: 4570, 3640 и 1807 - все остальные совсем немного отличаются от этих.
Теперь посчитаем разницу между ними: 4570-3640=930, 3640-1807=1833. Выберем
наименьшую - 930 и поделим пополам: 930/2=465. Возьмем число чуть меньше полученого,
например 430 - оно и будет величиной aeps.
Замечания
Эта программа распространяется согласно лицензии GNU и не
предусматривает НИКАКОЙ ГАРАНТИИ.
Системные требования
Компьютер с ИК приемником и Windows 95/98/ME/2000. Другие OS'ки не проверялись.
Возможны ошибки распознавания на медленных машинах.