WIRC FAQ

  • Что это такое?
  • Железо
  • Конфигурирование (пожалуйста, прочтите внимательно!)
  • Не работает!
  • Как обучить WIRC?
  • Как настроить WIRC на лучшее распознавание?
  • Замечани
  • Системные требования

    Что это такое?
    Это программа, с помощью которой можно управлять компьютером с обычного пульта от телевизора, аудио-центра или еще от чего-нибудь.
    Она основывается на 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 порт.
    разводка ILMS5360, TK69 649, TFMS 5NN0, SFH 506:
     _______
    |  _____|------ TX (соединяется с RX на материнской плате)
    | |_____|______ +5V
    |_______|------ GND
    
  • DCD устройство. Это устройство передает сигналы по линии Data Carrier Detect. Это стандартное устройство для WinLIRC - вы найдете кучу его схем в интернете.

    Конфигурирование
    Сейчас нет времени все объяснять :) поэтому читайте доки к WinLIRC. Объясню только основные моменты, которые важны если вы используете RX устройство:
  • СНАЧАЛА следует отключить стандартные драйвера для IrDA, которые ставятся на некоторых матерях после включения IrDA. Если у вас Windows 9x или Windows ME, то найдите msports.inf в каталоге Windows\Inf и отредактируйте его:
    1) В секции [Std] закоментируйте/удалите следующие строки (если они есть):
    %*PNP0510.DeviceDesc% = InfraredComPort, *PNP0510
    %*PNP0511.DeviceDesc% = InfraredComPort, *PNP0511
    Раскоментируйте/добавьте следующие строки:
    %*PNP0510.DeviceDesc% = ComPort, *PNP0510
    %*PNP0511.DeviceDesc% = ComPort, *PNP0511
    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.DevDesc% = PNP, *PNP0510
    %*PNP0511.DevDesc% = PNP, *PNP0511
    И заменил строку
    ExcludeFromSelect=*PNP0510,*PNP0511,*IBM0002,*IBM0034,*IBM0020
    на
    ExcludeFromSelect=*IBM0002,*IBM0034,*IBM0020
    2) В msports.inf добавил в секцию [Std] строки:
    %*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 файла:
              name Stop
                 4569    1807    3630    3641    3644    1812
                 1818    1820    1814    1814    1818    1810
                 3639    1811    1817    1818    3651    3635
                 3641    3647    3644    3636    3639
    
              name Rew
                 4570    1805    3628    3646    3645    1810
                 1816    3637    1819    1817    1811    1818
                 3642    1815    1813    1821    3650    3645
                 1815    3634    3637    3642    3644
    
    Что мы видим? Кучу разных чисел, но РЕАЛЬНО различных всего три: 4570, 3640 и 1807 - все остальные совсем немного отличаются от этих. Теперь посчитаем разницу между ними: 4570-3640=930, 3640-1807=1833. Выберем наименьшую - 930 и поделим пополам: 930/2=465. Возьмем число чуть меньше полученого, например 430 - оно и будет величиной aeps.

    Замечания
    Эта программа распространяется согласно лицензии GNU и не предусматривает НИКАКОЙ ГАРАНТИИ.

    Системные требования
    Компьютер с ИК приемником и Windows 95/98/ME/2000. Другие OS'ки не проверялись.
    Возможны ошибки распознавания на медленных машинах.
  • Рейтинг@Mail.ru

    Счетчик mail.ru