![自制电脑红外遥控接收器_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/5/c260b9ef-1443-4605-9269-f748bf6cf128/c260b9ef-1443-4605-9269-f748bf6cf1281.gif)
![自制电脑红外遥控接收器_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/5/c260b9ef-1443-4605-9269-f748bf6cf128/c260b9ef-1443-4605-9269-f748bf6cf1282.gif)
![自制电脑红外遥控接收器_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/5/c260b9ef-1443-4605-9269-f748bf6cf128/c260b9ef-1443-4605-9269-f748bf6cf1283.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、自制电脑红外遥控接收器(PC软解码)分类:嵌入式 智能家居 2009-10-14 09:52 4649人阅读 评论(9)收藏 举报网上有很多介绍红外遥控接收器制作的文章,但其中大部分是用单片进行红外解 码,然后再通过串口或USB把解码后的按键信息传入到 PC的。这样的电路制 作起来,不仅造价相对偏高,而且需要对单片编程,这会令大部分软件开发爱好 者望而却步。最近看到一篇仅需要7个简单元器件的红外接收器,只需拿起烙铁,不需硬件编 程就可以制作完成,原理图如下:红外按收头1I50038X9针串口由原理图我们可知,红外接收头把接收的红外信号转换为高低电平通过串口的DSR管脚传入到PC,PC软件通过对
2、DSR高低电平信号的时间曲线进行分析, 从而获得相对应的按键信息。红外遥控器一般采用脉宽调制的串行码,经38kHz的载频把红外信号发射出去。 其编码信息一般由三部分组成:引导码、地址码和数据码。一般信号长度大约 100ms左右,持续按键则重复发送(中间会有 10ms以上的间歇)。 常态下,红外接收头的输出(OUT)都是高电平,引导码信号首先会令红外接收头 输出一个大约10ms左右的低电平(不同遥控器有不同的时延),这可令接收设 备从容判定信号的到来,而后面的地址码和数据码其电平高低变化就相对较快 了,大概在几十或几百个微秒之间。PC红外遥控软件一般选用 Girder,在使用之前需要安装“ SF
3、H-56 plugin for Girder ”这个插件(文件名"igor SFH-56P lug.dll"),否则不能正常处理我们 这种电路的红外接收器信号。可悲的是我至今没找到这个插件,网上提供的很多 链接都是坏的。即使找到了这个插件,要想在我们自己编写的程序中使用也是困难的,因为Girder并没有为我们开发者提供API接口。既然Girder能用软件实现红外解码,我们为什么不能呢?凡事都要开动大脑, 积极行动才对,下面就是我自己焊接的一个红外接收器(元器件是在中发买的,一共不到10元钱,还富裕好多电阻、电容!)(图下方的红外遥控器的接收器是基于 USB的,仅支持Vist
4、a以上版本,并且 不支持个人开发,不过今天它终于发挥了它应有的作用。当然用电视或 VCD遥 控器也是可以的)硬件有了,但程序该从何编起呢?1、由于接收到的红外信号在微秒级别中变化,对系统实时性要求较高,所以具 备垃圾回收功能,实时性没有保证的 C#,似乎完不成这种信号的接收功能,所 以我们选择的是VC,由它实现高优先级的线程去进行信号接收。2、由于红外遥控信号是脉宽调制的串行码,所以我们需要采集信号的宽度,显然采用一般的时钟函数来获取时间间隔是不可行的,因为精度太低,所以我们需用采用多媒体时钟和高精度计时的 API函数。3、 一般我们按键持续时间为几秒钟,并且由于按键发出前有一个10ms左右的
5、 引导信号,所以我们的程序很容易判断出信号起始点, 这样我们一次仅需要接收 一定量的原始数据就可以完成初步信号米集工作。4、对于我们的红外接收程序来说并不需要实际解码出红外信号到底包含了那些 具体的信息,只要其能够区分出红外遥控上的各个按键就行。5、由于红接收器是通过串口 RTS管脚供电,且通过DSR传递红外信号的,所以我们的程序即使不接收数据,也要打开串口,不过仅需要处理RTS和DSR管脚的信号即可。好了,动手去做,下面是用VC实现的一个DLL,其功能就是接收并记录红外信 号的持续时间。核心代码如下:DWORD WINAPI ThreadProc(LPVOID pParam)LARGE_IN
6、TEGER litmp;LONGLONG QPart1,QPart2;double dfFreq;int iTime=0; / 微秒/获得计数器的时钟频率QueryPerforma nceFreque ncy(&litmp);dfFreq = (double)1000000.0/litmp.QuadPart;DWORD ModemState,oldModemState=MS_DSR_ON;EV_BREAK or EV_CTS or EV_DSR or EV_ERR or EV_RING orEV_RLSD or EV_RXCHAR or EV_RXFLAG or EV_TXEMPTYS
7、etCommMask(HSC_COM_Ha ndle,EV_DSR);/DWORD EvtMask,dwError;/COMSTAT cs;while(HSC_Thread_Ru nFlag)/等待DSR信号发生变化/WaitCommEve nt(HSC_COM_Ha ndle,&EvtMask,&HSC_Ovread);ClearCommError(HSC_COM_Ha ndle,&dwError,&cs);/获得DSR的状态GetCommModemStatus(HSC_COM_Ha ndle,&M odemState);ModemState = (M
8、odemState & MS_DSR_ON); if(ModemState = oldModemState)continue;oldModemState=ModemState;/清计数In terlockedExcha nge(&HSC_NUM,0);/开始接收数据if(HSC_State = 0 && ModemState = 0)QueryPerforma nceCo un ter(&litmp);QPart1 = litmp.QuadPart;HSC_State=1;/复位计数In terlockedExcha nge( &HSC_NUM,
9、0);In terlockedExcha nge( &HSCn dex,0);/开启定时器HSC_TimerlD =timeSetEve nt(10,HSC_Accuracy,MMTimer,NULL,TIME_PERIODIC);con ti nue;/接收数据状态if(HSC_State = 1)QueryPerforma nceCo un ter(&litmp);QPart2 = litmp.QuadPart;/-if(ModemState = 0)iTime = (in t)(QPart2-QPart1)*dfFreq);elseiTime = (in t)(QPart
10、1-QPart2)*dfFreq);if(HSC_l ndex < HSC_BufferSize)*(HSC_Buffer+HSC_l ndex) = iTime;In terlockedl ncreme nt(&HSC _ln dex);/-QPart1=QPart2;return STILL_ACTIVE;不过它会让CPU使用时如果采用 WaitCommEvent函数,你会发现CPU使用时间会很低,接收程序无法正常退出,所以只好注释掉该函数了,此时你会发现 间会很高。原始数据一旦采集完毕,剩下的就由C#程序大显身手吧。C#中DLL的接口函数如下:const string Dl
11、lPath = "YFHSCollect.dll"Dlllmport(DIIPath)public static extern Int32 HSCStart(Int32 COM, Int32 delay, Int32 BufferSize);Dlllmport(DllPath)public static extern In t32 HSCE nd();Dlllmport(DIIPath)public static extern Int32 HSCData(int intData);我封装了一个类,一旦有按键信息,就会触发一个 Click事件。此外程序还具备 自学习功能,并且
12、可以把学习后的结果序列化到一个 XML文件中去,这样下次 再按键就可以识别出键名了。主程序中测试代码如下:public partial class frmMa in : FormYFHWCollect hw =n ull;in t hwData = null;public frmMai n()In itializeComp onen t();hw = new YFHWCollect(this, 1);hw.Click += new YFHWCollect.HWEve ntHa ndler(hw_Click);void hw_Click(object sen der, HWEve ntArgs
13、e)stri ng strI nfo =""for (i nt j = 0; j < e.lstDatai.Le ngth; j+)strI nfo += e.lstDataij.ToStri ng() + ""strI nfo += "/r/n"txtI nfo.Text = strI nfo;IblKeyName.Text = e.KeyName+ " (" + (e.I nterval /10).ToStri ng() "ms)"hwData = e.Data;picBar.Refr
14、esh();private void btnCommand_Click(object sender, EventArgs e)if (bt nComma nd.Text =" 开始")bt nComma nd.Text ="停止"hw.Start();elsebt nComma nd.Text =" 开始"hw.E nd();private void btnStudy_Click(object sender, EventArgs e)hw.Study(txtKeyName.Text);private void picBar_Pa in
15、 t(object sen der, Pai ntEve ntArgs e)int width = picBar.Width, height = picBar.Height;/ 2, width, height / 2);if (hwData != n ull)float Len=0;foreach(i nt l in hwData)Len+=l;float dx = width / Len, DX=0;Pen p = new Pen(Color.Green);float Y=0, 丫仁 height/4,Y2=(float)(height*3.0/4.0);float X=0;for(int
16、 i=0;i<hwData.Length;i+)Y = (i % 2)=0 ? Y2:Y1);DX = hwDatai * dx;+ DX, Y);X += DX;测试程序运行结果如下:工 益 ET 262T 滥25272T歴红外承控儔号叢杖测试l ro.fSc4 3 4 4 4 4 4 4-444 s 4 4 4 4 4 4-4-44 444 4 4 444暫 £ 二!<口 ? s 8243 44 44 44 44 44 4(上面显示的数据为高电平和低电平的持续时间(低高低高),单位为 1/10毫秒)注意事项:1、红外遥控器按键偶数次和奇数次的编码是不同的,程序需要学习两次,才能 正常识别按键信息。2、 普通的USB转串口由于仅连接了 2、3、5管脚,所以不能正常使用,对比 较好的USB转串口(比如Moxa的三百多一根),虽然所有的管脚都引出了, 但是由于是通过USB转换的,所以响应时间很是问题,我就因为这个差一点
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023三年级英语上册 Module 1 Getting to know you Unit 3 Are you Kitty说课稿 牛津沪教版(三起)
- 21《古诗三首》说课稿-2024-2025学年语文四年级上册统编版001
- 6《摸一摸》说课稿-2024-2025学年科学一年级上册青岛版
- 2024-2025学年高中生物 第3章 植物的激素调节 第1节 植物生长素的发现说课稿 新人教版必修3001
- 2024年五年级英语下册 Module 7 Unit 2 I will be home at seven oclock说课稿 外研版(三起)
- 2025住宅装修物业管理合同(合同范本)
- 8《池子与河流》(说课稿)-2023-2024学年统编版语文三年级下册
- 2025锅炉拆除安全施工合同
- 2025有关电梯广告的合同范本
- Unit 6 Disaster and Hope Understanding ideas 说课稿-2023-2024学年外研版高中英语(2019)必修第三册
- 2024年农村述职报告
- 2025-2030年中国减肥连锁市场发展前景调研及投资战略分析报告
- 2024年湖南司法警官职业学院高职单招职业技能测验历年参考题库(频考版)含答案解析
- 女性私密项目培训
- 2025年丽水龙泉市招商局招考招商引资工作人员高频重点提升(共500题)附带答案详解
- 《加拿大概况》课件
- 期末复习之一般疑问句、否定句、特殊疑问句练习(画线部分提问)(无答案)人教版(2024)七年级英语上册
- TD-T 1048-2016耕作层土壤剥离利用技术规范
- 抖音账号租赁合同协议
- 2024年高考真题-化学(重庆卷) 含解析
- 三甲医院临床试验机构-31 V00 专业组备案及考核SOP
评论
0/150
提交评论