当前位置: 代码迷 >> WinCE >> 怎么实现遥控器与wince之间的红外通信
  详细解决方案

怎么实现遥控器与wince之间的红外通信

热度:71   发布时间:2016-04-28 12:53:54.0
如何实现遥控器与wince之间的红外通信
大家好呀,最近在做一个遥控器跟wince开发板间的红外通信,遥控器使用单片机,故考虑wince开放板上的原始IR端口,现在不知道wince如何接收遥控器发送过来的数据并识别,有没有做过这方面的的朋友呀,恳请指教呀!

------解决方案--------------------
IRDA有它自己的协议,也可以请厂商定制自己的CODE,要识别接收到的信号要看遥控器的定义
以前做过一个设备就是用IRDA来跟遥控器通信的,可以先学习遥控器的功能,然后通过记忆功能把CE设备当做遥控器来使用
------解决方案--------------------
CE端做红外解码?
这个好做,需要用一个Timer(硬件的不是硬件的不精准),在CE端用一个HS0038应三个腿的,红外接收管,输出的电平信号接Timer的测量脚,然后写个驱动,检测中断测量脉冲宽度,判断是0还是1(有很多红外遥控器的协议),具体解码按照协议解码即可。
------解决方案--------------------
探讨
CE端做红外解码?
这个好做,需要用一个Timer(硬件的不是硬件的不精准),在CE端用一个HS0038应三个腿的,红外接收管,输出的电平信号接Timer的测量脚,然后写个驱动,检测中断测量脉冲宽度,判断是0还是1(有很多红外遥控器的协议),具体解码按照协议解码即可。

------解决方案--------------------
以前弄个,我自己做了个红外接收的电路,把IR转成串口发送到WinCE上。呵呵。
------解决方案--------------------
郁闷 没法上传原理图图片
------解决方案--------------------
这个么,红外的解码实际上最重要的就是解析通过红外接收器的电平信号的时间;
这个时间决定着是0还是1;(时间由协议来决定,国内通常使用的是NEC协议)

举个例子,在国内,常用的红外遥控器的协议是NEC协议(还有好多协议,比如Sharp,Sony等),该协议规定了一帧的数据是如何构成的:NEC的是一帧32位数据,加头码和结束码,这些都规定了红外发送时发送的信号;
红外发送器则在控制芯片的控制下,发送低电平的红外信号,高电平的红外信号,以及持续的时间;
NEC的头码:低电平9ms,高电平4.5ms;
NEC数据码:数据1:高电平0.56ms,低电平1.68ms 

也就是说如果你测量的脉冲宽度高电平为0.56ms(有个适当的误差)低电平为1.68ms的话,你就判读该位为1;这样你一共判断32位(NEC格式),然后你就有了一帧的NEC格式数据,然后按照格式的内容把按键值解出来;

原理就是这些,所有工作的重点就在测量脉冲宽度上,如果你有硬件Timer可用(测脉宽模式),你就写个这个Timer的驱动;如果没有的话,就得用软件的方法了,这个比较麻烦也不太准(不过还可以),我原来在51下做,就是因为没有硬件Timer用软件做的,也凑活能用(出错率不大,因为红外载波的频率比较低)
------解决方案--------------------
探讨
我看了下开发板的电路,红外接收芯片HSDL-3600跟pxa270的UART相连,即IR端口跟串行端口相连,现在我想读取数据,是不是重新写一下串口驱动函数就可以了。

------解决方案--------------------
红外码格式各有不同,空调之类的,都是自己编码,乱的很。采用串口接收的那种,硬件上要能把红外信号,转成串口信号才行。
  相关解决方案