如何实现遥控器与wince之间的红外通信

sqju1983 2009-03-31 12:47:47
大家好呀,最近在做一个遥控器跟wince开发板间的红外通信,遥控器使用单片机,故考虑wince开放板上的原始IR端口,现在不知道wince如何接收遥控器发送过来的数据并识别,有没有做过这方面的的朋友呀,恳请指教呀!
...全文
558 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
水工古月 2012-08-18
  • 打赏
  • 举报
回复
请问红外接收器HS0038的接收头,能接受315Mhz的红外信号吗
水工古月 2012-08-18
  • 打赏
  • 举报
回复
请问那个HS0038(三个引脚的)是红外接收器吗?红外接收管是哪个?还有Timer的测量脚在哪里?谢谢了,我现在也在做这个,好多不懂的,请多指教?[Quote=引用 5 楼 的回复:]

引用 3 楼 friendfish 的回复:
CE端做红外解码?
这个好做,需要用一个Timer(硬件的不是硬件的不精准),在CE端用一个HS0038应三个腿的,红外接收管,输出的电平信号接Timer的测量脚,然后写个驱动,检测中断测量脉冲宽度,判断是0还是1(有很多红外遥控器的协议),具体解码按照协议解码即可。

up
[/Quote]
zhongguoxin99 2010-12-07
  • 打赏
  • 举报
回复
楼主,你好,问一下,你也是搞wince上的红外驱动么?
我最近也在搞遇到了很多问题,能不能探讨一下,谢谢
yaya1987yaya 2009-11-16
  • 打赏
  • 举报
回复
驱动不是能用pb添加吗?
wjf_zjut 2009-04-01
  • 打赏
  • 举报
回复
红外码格式各有不同,空调之类的,都是自己编码,乱的很。采用串口接收的那种,硬件上要能把红外信号,转成串口信号才行。
friendfish 2009-04-01
  • 打赏
  • 举报
回复
楼主先确定下做的是遥控器还是数据传输,两种有差别;

WinCE提供的红外串口是用来传输数据的;

IRDA标准的格式跟电视遥控器的红外格式不一样,一个是用来作数据传输的(有效距离在1m内),另外一个只是传输简单的脉冲调制序列(有效距离可达10米);

如果要做遥控器,楼主可能要做驱动,如果做数据传输,那不用做驱动CE本身就有;
sqju1983 2009-04-01
  • 打赏
  • 举报
回复
"wince有自带的红外串口以及相关的DLL附加的。以前我们还要把红外串口变成普通的串口来用呢。"?
那是不是直接调用红外串口的DLL就行了,驱动不用改
sqju1983 2009-04-01
  • 打赏
  • 举报
回复
我用的开发板是主芯片为pxa270的,红外接收器为HSDL-3600,我在网上看到下面这段:
“PXA270的标准UART口集成有符合IrDA 1.0协议的红外编、解码器,将其与安捷伦SIR标准型红外收发器HSDL-3600连接便可组成串口红外通信系统。”
我们实现的是遥控器与开发板通信,没用用到IrDA协议,所以还要自己实现红外的解码,这样理解对吗?
sqju1983 2009-04-01
  • 打赏
  • 举报
回复
谢谢LS的几位!
做的是遥控器,红外遥控器的协议是NEC的协议,只是传输简单的脉冲调制序列
wince开发板硬件上能把红外信号转成串口信号
如果要做驱动的话,应该怎么做呢?
能不能给点思路
hzdysymbol 2009-03-31
  • 打赏
  • 举报
回复
IRDA有它自己的协议,也可以请厂商定制自己的CODE,要识别接收到的信号要看遥控器的定义
以前做过一个设备就是用IRDA来跟遥控器通信的,可以先学习遥控器的功能,然后通过记忆功能把CE设备当做遥控器来使用
gooogleman 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sqju1983 的回复:]
我看了下开发板的电路,红外接收芯片HSDL-3600跟pxa270的UART相连,即IR端口跟串行端口相连,现在我想读取数据,是不是重新写一下串口驱动函数就可以了。
[/Quote]

wince有自带的红外串口以及相关的DLL附加的。以前我们还要把红外串口变成普通的串口来用呢。
sqju1983 2009-03-31
  • 打赏
  • 举报
回复
我看了下开发板的电路,红外接收芯片HSDL-3600跟pxa270的UART相连,即IR端口跟串行端口相连,现在我想读取数据,是不是重新写一下串口驱动函数就可以了。
friendfish 2009-03-31
  • 打赏
  • 举报
回复
这个么,红外的解码实际上最重要的就是解析通过红外接收器的电平信号的时间;
这个时间决定着是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用软件做的,也凑活能用(出错率不大,因为红外载波的频率比较低)
sqju1983 2009-03-31
  • 打赏
  • 举报
回复
“然后写个驱动,检测中断测量脉冲宽度,判断是0还是1(有很多红外遥控器的协议),具体解码按照协议解码即可”?
楼上的你好,那是不是也要写个驱动判断0还是1?
如果要写的话,应该怎么写呢?
friendfish 2009-03-31
  • 打赏
  • 举报
回复
ht6222应该是NEC的协议

为什么要改串口的协议呢?红外解码主要问题是脉冲宽度的测量
sqju1983 2009-03-31
  • 打赏
  • 举报
回复
太感谢大家了,谢谢各位!
因为遥控器用的是单片机,没法跟wince开发板建立红外协议(自己的理解,不知道对不对)
遥控器用的红外发射芯片是ht6222,wince开发板上用的红外接收芯片是HSDL-3600,红外接收芯片直接跟主芯片PXA270相连。
现在不知道驱动要怎么写,是不是改串口驱动?
有没有可以参考的代码?
gooogleman 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xajhuang 的回复:]
郁闷 没法上传原理图图片
[/Quote]

要先上传到博客,才可以链接过来的。
xajhuang 2009-03-31
  • 打赏
  • 举报
回复
郁闷 没法上传原理图图片
xajhuang 2009-03-31
  • 打赏
  • 举报
回复
以前弄个,我自己做了个红外接收的电路,把IR转成串口发送到WinCE上。呵呵。
Ei 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 friendfish 的回复:]
CE端做红外解码?
这个好做,需要用一个Timer(硬件的不是硬件的不精准),在CE端用一个HS0038应三个腿的,红外接收管,输出的电平信号接Timer的测量脚,然后写个驱动,检测中断测量脉冲宽度,判断是0还是1(有很多红外遥控器的协议),具体解码按照协议解码即可。
[/Quote]
up
加载更多回复(3)

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧