一、基于LIRC的红外遥控接收端
(一)驱动选择
下载lirc驱动源码,。这里用的是lirc-0.8.2版本。内有多种驱动包括
serial,sir,gpio……等等。从它驱动里选择和自己硬件最符合的一种,serial是最通用的一种,但它需要有载波判断的DCD信号输入,由
于连线原因,选择了SIR的驱动有移植。
(二)驱动移植
(三)编译安装
1、运行 ./configure
--host=mipsel-linux --build=i486-pc-linux-gnu --with-driver=sir
--with-kerneldir=/root/linux-2.6.22.8/trunk/
这里--with-driver=serial是选择的串口红外方式/driver/lirc_sir/下的驱动。--with-kerneldir=/root/linux-2.6.22.8/trunk/为内核源码所在路径。
2、运行 make
3、运行 make install DESTDIR=/tmp
这里DESTDIR=/tmp为安装到文件系统路径,安装内容除了驱动模块外还有一些应用程序。
4、注意:
这里要安装完成后,模块是否在内核指定的地目录下。这和内核版本有关,也是为了适应原有的内核依赖关系。如:LIRC把模块安装在/lib
/modules/2.6.22-14-generic/misc/下,把其移动到/lib/modules/2.6.22.8/misc/下。
(四)测试
1、系统启动后加载驱动模块,运行modprobe lirc_sir(如有IOPORT/IOMMAP冲突,需停掉原有空间上已有设备,如:运行#setserial /dev/ttyS1 uart none)。
2、运行#mode2应用程序,然后按遥控器,如果出现类以下字样,说明驱动可用。
space 1666
pulse 564
space 40786
pulse 9007
space 2216
pulse 564
问题:
1、如果按键后无反应。
A、查看设备和中断是否注册上。
cat /proc/devices
cat /proc/interrupts
B、如果注册都没问题,查看驱动程序中寄存器初始是否有问题。
2、按键后,一直打印,无法操作。
A、可能1:中断处理函数内部的循环无法跳出,此时检查循环条件。
B、可能2:反复运行中断处理函数,查看IIR中对应中断类型的中断清空条件(clear condition)如:把buffer读到小于指定位。然后在中断处理函数中做这样的处理。
(五)使用
(加载驱动模块后)
1、记录所用遥控器按键编码。
运行irrecord -f lircd.conf
按提示操作。
一般打两次回车键。
将遥控器对准盒子的前面板,随便按下一些建,按下后保留1秒种左右,屏幕上会出现一些小数点,不断按,直到屏幕上出现另外的信息。
再次随意按下一些键,这时发现每次按下一个键,屏幕上显示一个小数点。停止按键,等待10秒钟,屏幕上出现提示信息。
Please enter the name for the next button (press to finish recording)
这时才开始一一记录每个按键的键值。
最后会生成一个lircd.conf文件在当前目录.
2、把irrecord生成lircd.conf目录拷到/etc/lircd.conf
运行lircd (本服务默认加载/etc/lircd.conf配置文件)
然后运行irw后,按遥控器键可检验之前录入的键值是否可用.如果可用会打印出之前记录的名字.
3、按键对应命令的执行。
创建文件/etc/lircrc
写入对应命令的项,格式如下:
--------------------------------------------
begin
prog = irexec
remote = *
button = power
repeat = 0
config = echo "shutdown now!";halt;
end
begin
prog = irexec
remote = lirc.conf
button = mute
repeat = 0
config = echo "now mute"
end
--------------------------------------------
begin~end表示一个独立的配置块。
prog域的值表示使用该配置块的程序名称。
remote的值表示使用的遥控器名称(参见lircd.conf中的定义)。只有一个遥控时也可为*
button 的值表示遥控器按键名称(参见lircd.conf中的定义)。
repeat 的值表示按键的重复次数。
config 的值表示该按键对应的字符串,该字符串可以被prog定义的应用程序获得。
然后运行irexec命令。
阅读(2660) | 评论(0) | 转发(0) |