Russian
What is this?
Hardware
Configuration (please, read carefully!)
It doen't work!
How to teach WIRC?
How to tune WIRC for better recognizing?
Comments
I found error! What to do?
System requirements
What is this?
This is program, with help of which you can control you computer via
remote control from TV, audio-center or other infrared remote controls.
It is derived from WinLIRC (Windows Linux Infrared Remote Control) 0.6.1pre2,
which is derived from LIRC (Linux Infrared Remote Control). I simply added some
features, including RX device support.
Hardware
Nesessary hardware is simple - there are actually 2 variants:
RX device. It can be any IrDA receiver at IrDA port. I tryed ILMS5360 and
TK69 649 chips. Their cost is about $1.5 here at Russia. I guess, that any 5V
reciever will be suitable. Also, it can be simple scheme on COM port.
ILMS5360, TK69 649, TFMS 5NN0, SFH 506 pinout:
_______
| _____|------ TX (connect to RX line on mainboard)
| |_____|______ +5V
|_______|------ GND
DCD device. It is device which sends incoming bit stream through Data
Carrier Detect line. It's basic device for WinLIRC - you can find many schemes
of it at Internet.
Configuration
Now I haven't time to explain everithing :) so, read other WinLIRC documentation.
I will explain only main things, which are important if you're using
RX device:
FIRST, you should disable standard IrDA drivers, which are installed
on some mainboards after enabling IrDA. If you're using Windows 9x, or Windows ME find msports.inf
in your Windows\Inf directory and edit it:
1) In section [Std] comment/remove the following lines (if they present):
%*PNP0510.DeviceDesc% = InfraredComPort, *PNP0510
%*PNP0511.DeviceDesc% = InfraredComPort, *PNP0511
Uncomment/add the following lines:
%*PNP0510.DeviceDesc% = ComPort, *PNP0510
%*PNP0511.DeviceDesc% = ComPort, *PNP0511
2) In section [Strings] uncomment/add the following lines:
*PNP0510.DeviceDesc = "Generic Ir Serial Port"
*PNP0511.DeviceDesc = "Generic Ir Serial Port"
For Windows ME you should also delete irmini.inf
(or, better rename to irmini.bak for example)
For Windows 2000 I used such a method to delete standart drivers:
1) Remove folowing strings from netirsir.inf:
%*PNP0510.DevDesc% = PNP, *PNP0510
%*PNP0511.DevDesc% = PNP, *PNP0511
and replace
ExcludeFromSelect=*PNP0510,*PNP0511,*IBM0002,*IBM0034,*IBM0020
to
ExcludeFromSelect=*IBM0002,*IBM0034,*IBM0020
2) Add to msports.inf to section [Std]:
%*PNP0510.DeviceDesc% = ComPort, *PNP0510, *PNP0511 ; Communications Port
%*PNP0511.DeviceDesc% = ComPort, *PNP0511, *PNP0510 ; Communications Port
to section [Strings]:
*PNP0510.DeviceDesc = "Generic Ir Serial Port"
*PNP0511.DeviceDesc = "Generic Ir Serial Port"
add
ExcludeFromSelect=*PNP0510,*PNP0511
to section [ControlFlags]
ONLY NOW enable IrDA in BIOS. Usually you should also enable RX inverting.
WIRC (same as WinLIRC) is only server. It receives IR signals, decode them,
and sends decoded commands to clients, so you need a WinLIRC client program,
which will change volume, run and close programs etc.
There are many different clients, but I recommend you uICE. Latest version
can be found on http://www.mediatexx.com/.
uICE also supports RX device, but it uses incorrect agorithm, and as a result
recognizes commands unstable.
That's why you should use it only as a WinLIRC client.
It doen't work!
You should have TCP/IP installed on your computer (simply install Dial-Up)
You should have mfc42.dll in your Windows\System directory
How to teach WIRC?
In this version teaching algorithm is from original WinLIRC. Maybe I'll
change it, and teching will be more simple, but now AS IS. Well, I know
two types of remotes:
Signal repeating remotes
Special repeat code remotes
Signal repeating remotes are Panasonic and Sony - they send identical packets
wnen you press and hold button. Special repeat code remote send unique packet
when you press button, and if you hold it, they send repeat code - one for
all buttons. You can differentiate one type from another if you look at
packets in Raw Codes mode. When teaching WIRC, you should select remote type.
If your remote is with special repeat code, WIRC will not recognize button
holding after teaching. You should manually add new button with name _repeat
to .cf file. Codes for this button you should
also add manually - you can see them in Raw Data mode.
Panasonic.cf is a sample of signal repeating remote.
ONWA.cf - sample of special repeat code remote.
How to tune WIRC for better recognizing?
Recognizing stability and maximum distance depends on correct
setting aeps value in .cf
file. You should do it manualy with any text editor.
To understand how to do it look to the part of .cf
file:
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
What we see? Many numbers, but actually, there are only three
REALY different: 4570, 3640 and 1807 - all other are close to these.
Now let's calculate difference: 4570-3640=930, 3640-1807=1833. Then, we
take smallest one - 930 and divide it by 2: 930/2=465. Let's take a numer
which is a bit smaller, for example 430 - it will be
aeps value.
Comments
This program is distributed under the GNU Public License and comes
with absolutely NO WARRANTY.
I found error! What to do?
Simply e-mail me:Nsky@bigfoot.com
But first, you should go to my homepage
http://www.bigfoot.com/~Nsky/
maybe I've released new version.
System requirements
Computer with IR receiver and Windows 95/98/ME/2000. Other OS's are not tested.
Decode errors are possible on slow machines.
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 и не предусматривает
НИКАКОЙ ГАРАНТИИ.
Программа глючит! Что делать?
Писать мне:Nsky@bigfoot.com
Для начала следует сходить на мою страничку:
http://www.bigfoot.com/~Nsky/
Может там версия посвежее.
Системные требования
Компьютер с ИК приемником и Windows 95/98/ME/2000. Другие OS'ки не проверялись.
Возможны ошибки распознавания на медленных машинах.