CN103236154B - 一种红外串口通信方法和装置 - Google Patents
一种红外串口通信方法和装置 Download PDFInfo
- Publication number
- CN103236154B CN103236154B CN201310101170.4A CN201310101170A CN103236154B CN 103236154 B CN103236154 B CN 103236154B CN 201310101170 A CN201310101170 A CN 201310101170A CN 103236154 B CN103236154 B CN 103236154B
- Authority
- CN
- China
- Prior art keywords
- data
- infrared
- serial
- call
- port
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000004891 communication Methods 0.000 title claims abstract description 26
- 230000005540 biological transmission Effects 0.000 claims abstract description 98
- 238000000034 method Methods 0.000 claims abstract description 93
- 238000012545 processing Methods 0.000 claims abstract description 44
- 238000012856 packing Methods 0.000 claims abstract description 17
- 230000002159 abnormal effect Effects 0.000 claims abstract description 8
- 238000012360 testing method Methods 0.000 claims description 33
- 238000004321 preservation Methods 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 20
- 238000005516 engineering process Methods 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000002253 acid Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
Landscapes
- Optical Communication System (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种红外串口通信方法和装置,所述方法包括当有数据需要发送时:创建高频调制发送进程;调用所述高频调制发送进程将I/O端口模拟成红外发送串口;调用I/O模拟串口发送函数对需要发送的数据进行红外发送打包处理;当有数据需要接收时:进行红外中断处理以初始化串口接收模式;将I/O端口模拟成红外接收串口;调用I/O模拟串口接收函数对需要接收的数据进行红外接收数据处理。本发明技术方案可用于无线的串口通信,即红外串口通信,可使机顶盒端不接串口线就能方便开发人员进行调试程序,且出了异常故障时可以方便查找问题,尤其对于不允许有硬件串口接口的市场,可以有效解决串口升级和出故障时方便查找并解决问题。
Description
技术领域
本发明涉及通信技术领域,特别地,涉及一种红外串口通信方法和装置。
背景技术
串行接口(SerialInterface)是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,特别适用于近距离通信,但传送速度较慢。根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。串口通信广泛应用于电子设备中,特别是对于产品的软件开发人员,串口调试是一种很常用的调试工具。在数字机顶盒中,串口的应用更加广泛,串口是开发人员调试程序的必备工具,另外程序的升级往往都是通过串口来进行。在国内的数字机顶盒中串口几乎是一个必须具备的接口,主要是方便工厂生产时进行软件升级。
串口的应用中,技术方案有多种,目前应用于数字机顶盒主要的串口技术方案有采用标准的RS232串口和采用USB转串口。标准的RS232的串口是比较理想的接口,但它的缺点是使用时必须要连接线路到与之通信的设备,且通信的线路不能太长,否则会有干扰。另外,尽管传统的PC机端的主板都有这个接口,但由于现在主板市场定位不同,很多新主板并不带串口接口,且笔记本一般很少再带有这些老式接口,从而使得一些新的主板或笔记本在连接RS232串口通讯时遇到了难点。
USB转串口在个人计算机(PC)端很常用,但数字机顶盒中应用得不多,一方面是由于需要软件上驱动的支持,USB转串口的驱动在机顶盒这边软件开发上有一定的难度,另一方面,由于一些标清的机顶盒,特别是一些低端的产品,是不带有USB接口的,因此,相对于RS232串口,USB转串口的缺点更加明显。
发明内容
本发明实施例提供一种红外串口通信方法和装置,可实现红外串口通信。
本发明实施例中,实现红外串口通信方法包括:
当有数据需要发送时:
创建高频调制发送进程;
调用所述高频调制发送进程将I/O端口模拟成红外发送串口;
调用I/O模拟串口发送函数对需要发送的数据进行红外发送打包处理;
当有数据需要接收时:
进行红外中断处理以初始化串口接收模式;
将I/O端口模拟成红外接收串口;
调用I/O模拟串口接收函数对需要接收的数据进行红外接收数据处理。
进一步,所述创建高频调制发送进程包括:
创建红外高频调制线程;
判断发射标志位是否等于1;
若发射标志位等于1,则红外发射端口电平取反,以发射红外信号
判断38khz定时时间是否到达;
若38khz定时时间还未到,则继续判断38khz定时时间是否到达;
所述调用所述高频调制发送进程将I/O端口模拟成红外发送串口包括:
发送起始位;
进行延时;
判断发送的数据位是否为1;
若发送的数据位为1,则置发送标志位为0;若发送的数据位为0,则置发送标志位为1;
按照设定的波特率时间表进行延时;
判断8位数据是否已经发送完毕;
若8位数据已经发送完毕,则发送停止位,以实现将I/O端口模拟成红外发送串口。
进一步,调用I/O模拟串口发送函数对需要发送的数据进行红外发送打包处理包括:
调用I/O模拟串口发送函数发送数据包头;
计算发送的数据个数;
调用I/O模拟串口发送函数发送计算出来的数据个数;
调用I/O模拟串口发送函数发送传进来的数据;
判断数据是否发送完毕;
若未发送完毕,则继续调用I/O模拟串口发送函数发送传进来的数据;
若发送完毕,则计算校验值;
调用I/O模拟串口发送函数发送计算出来的校验值;
调用I/O模拟串口发送函数发送数据包尾。
进一步,所述红外接收中断处理以初始化串口接收模式包括:
判断是否为正常接收模式;
若为正常接收模式,则初始化正常接收模式,并转正常红外遥控按键识别处理;
若为非正常接收模式,则初始化成为串口接收模式,并置串口数据标志位为1,以实现红外接收中断处理;
所述将I/O端口模拟成红外接收串口包括:
有中断产生时,进行延时;
判断接收到的数据位是否为1;
若接收到的数据位为1,则将接收到的数据先左移一位再加上1;若接收到的数据位为0,则将接收到的数据直接左移一位;
按照设定的波特率时间表进行延时;
判断8位数据是否已接收完毕;
若8位数据已经接收完毕,则接收停止位,以实现将I/O端口模拟成红外接收串口。
进一步,所述调用I/O模拟串口接收函数对需要接收的数据进行红外接收数据处理包括:
创建红外串口接收线程;
若接收的包头为数据包头,则调用I/O模拟串口接收函数接收传进来的数据,并保存接收到的数据到接收数组;
判断数据是否接收完毕,若否,则继续调用I/O模拟串口接收函数接收传进来的数据,并保存接收到的数据到接收数组;
若数据已接收完毕,则调用I/O模拟串口接收函数取出校验值,并计算本次接收到的数据的校验值,然后将所述取出的校验值与所述计算得出的校验值进行比较,若一致,则调用I/O模拟串口接收函数接收数据包尾;
若接收到的包头为命令包头,则进一步判断接收到的数据是否为键值,若是,则上传键值给应用,若否,则调用命令处理函数;若接收到的包头非命令包头,则调用正常串口数据处理。
相应地,本发明还提供一种红外串口通信装置,所述装置包括红外串口发送模块和红外串口接收模块;
所述红外串口发送模块包括:
高频调制发送单元,用于创建高频调制发送进程;
将I/O端口模拟成红外发送串口单元,用于调用所述高频调制发送进程将I/O端口模拟成红外发送串口;
红外发送打包处理单元,用于调用I/O模拟串口发送函数对需要发送的数据进行红外发送打包处理;
所述红外串口接收模块包括:
红外接收中断处理单元,用于进行红外中断处理以初始化串口接收模式;
将I/O端口模拟成红外接收串口单元,用于将I/O端口模拟成红外接收串口;
红外接收数据处理单元,用于调用I/O模拟串口接收函数对需要接收的数据进行红外接收数据处理。
本发明技术方案可用于无线的串口通信,即红外串口通信,可使机顶盒端不接串口线就能方便开发人员进行调试程序,且出了异常故障时可以方便查找问题,尤其对于不允许有硬件串口接口的市场,可以有效解决串口升级和出故障时方便查找并解决问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是图1示出了本发明实施例提供的红外串口发射的原理框图;
图2是本发明实施例提供的红外发射电路的电路图;
图3是本发明实施例提供的利用电源指示灯来接红外发射电路的电路原理图;
图4是本发明实施例提供的创建高频调制发送进程的流程图;
图5是本发明实施例提供的将I/O端口模拟成红外发送串口的流程图;
图6是本发明实施例提供的红外发送打包处理的流程图;
图7是本发明实施例提供的红外接收中断处理的流程图;
图8是本发明实施例提供的将I/O端口模拟成红外接收串口的流程图;
图9是本发明实施例提供的红外接收数据处理的流程图;
图10是本发明实施例提供的红外串口通信装置的设备框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本发明实施例提供的红外串口发射的原理框图。数字机顶盒目前一般都具有红外接收功能,其内置有红外接收头,但是数字机顶盒一般不会有红外发射功能,主要是其没有红外发射器。考虑到机顶盒的结构,如果主CPU芯片1有多余的引脚,则可单独引一个端口出来接红外发射电路2。
若从主CPU芯片1独引一个端口出来,则红外发射电路2的电路图如图2所示,该红外发射电路包括电阻R1、电阻R2、红外发射二极管D1和三极管Q1,电阻R2的一端连接主CPU芯片1,另一端连接三极管Q1的基极,电阻R1的一端连接第一输入电源(输入电压Vcc)另一端连接红外发光二极管D1的阳极,红外发射二极管D1的阴极连接三极管Q1的集电极,三极管Q1的发射极接地。如此这样,调制信号从主CPU芯片1的端口出来经过三极管放大后,可通过红外发光二极管发射出去。
数字机顶盒一般都会有电源指示灯和锁频指示灯,如果主CPU芯片1没有多余的引脚,就可以采用电源指示灯作为红外串口发射端口,平时是作为电源指示灯,正常时电源指示灯是常亮的,作调试用时(即发射调试用数据时)就会变成闪烁状态。用电源指示灯来接红外发射电路的电路原理图如图3所示,除了包括图2所示的红外发射电路外,图3中的电路还包括电源指示灯电路,电源指示灯电路包括第三电阻R3、第四电阻R4、第二三极管Q2和电源指示灯(即电源指示二极管)D2,第三电阻R3的一端连接主CPU芯片1,第三电阻R3的另一端连接第二三极管Q2的基极,第二三极管Q2的发射极连接第二输入电源(输入电压Vcc),第四电阻R4的一端连接第二三极管Q2的集电极,第四电阻R4的另一端连接电源指示灯D2的阳极,电源指示灯D2的阴极接地。需要指出的是,图3中的红外发射电路与电源指示灯电路共用主CPU芯片1的一个引脚。正常情况下,电源指示灯D2亮时,图3中的红外发射电路是断开的,不会发射红外信号,从而不会影响其它设备的工作,只有当需要发射调试用数据时,红外发射电路才接通,同时,电源指示灯编程闪烁状态。
由于数字机顶盒目前一般都具有红外接收功能,因此本发明的红外串口通讯系统中的红外接收电路同现有技术,故在此不再赘述。
本发明的红外串口通信方法包括红外串口发送流程和红外串口接收流程。红外串口发送流程包括:创建高频调制发送进程;调用所述高频调制发送进程将I/O端口模拟成红外发送串口;调用I/O模拟串口发送函数对需要发送的数据进行红外发送打包处理。红外串口接收流程包括:进行红外中断处理以初始化串口接收模式;将I/O端口模拟成红外接收串口;调用I/O模拟串口接收函数对需要接收的数据进行红外接收数据处理。
图4示出了本发明实施例提供的创建高频调制发送进程的流程图。
S401:创建红外高频调制线程。
S402:判断发射标志位IR_OUT是否等于1。
S403:若发射标志位IR_OUT等于1,则红外发射端口电平取反。
S404:若发射标志位IR_OUT等于0,则红外发射端口电平置低。
S405:判断38khz定时时间是否到达;
具体地,若38khz定时时间已到,则再次判断发射标志位是否等于1以继续上述流程;若38khz定时时间还未到,则继续判断38khz定时时间是否到达。
由于这里用的红外发射端口并不是串口,而是普通的I/O端口,因此是需要将它模拟成串口,将串口发送的每一个8位的16进制数转换成一个8位二进制数,然后将每一位按顺序发送出去。将I/O端口模拟成红外发送串口的流程图如图5所示。
S501:发送起始位。
S502:进行延时。
S503:判断发送的数据位是否为1。
S504:若发送的数据位为1,则置发送标志位为0。
S505:若发送的数据位为0,则置发送标志位为1。
S506:按照设定的波特率时间表进行延时。
S507:判断8位数据是否已经发送完毕;
若8位数据已经发送完毕,则发送停止位;若8位数据还未发送完毕,则本流程转回到步骤S503,即再次判断下一个发送的数据位是否为1以继续上述流程。
红外串口的发送还有一个数据打包的部分,主要是对要发送的数据或者命令进行打包,还有计算检验值。发送的串口数据主要是机顶盒软件中的串口调试数据,发送的命令主要是一些特殊的命令,如接收失败就要发送一个重发请求命令,要求重发这一包数据。对于数字机顶盒这一端不需要发送键值,图6所示的红外发送打包处理的流程图主要是针对普通串口数据的,对于串口命令,则按照命令的格式打包即可这个流程是串口发送的入口,它是直接调用普通I/O端口模拟串口来发送的。如图6所示:
S601:调用I/O模拟串口发送函数发送数据包头;
S602:计算发送的数据个数;
S603:调用I/O模拟串口发送函数发送计算出来的数据个数;
S604:调用I/O模拟串口发送函数发送传进来的数据;
S605:判断数据是否发送完毕;
若未发送完毕,则继续调用I/O模拟串口发送函数发送传进来的数据;
S606:若发送完毕,则计算校验值;
S607:调用I/O模拟串口发送函数发送计算出来的校验值;
S608:调用I/O模拟串口发送函数发送数据包尾。
图7示出了本发明实施例提供的红外接收中断处理的流程图。红外接收中断处理主要是在中断里面去判断当前是串口模式还是正常的遥控模式,开机默认下都是正常的遥控接收模式,只有当用遥控器在3秒之内连续发送8+0+9+6+静音时才会进入串口接收模式。而退出则是需要通过串口发送退出命令。这里的中断处理流程在正常的模式下是做正常的按键识别。而在串口模式下,有数据来时会置串口数据标志位IRIN=1。如图7所示:
S701:判断是否为正常接收模式;若是,则本流程转至步骤S702,若否,则本流程转至步骤S705。
S702:判断是否已经初始化为正常接收模式;若否,则本流程转至S703,若是,则本流程转至S704。
S703:初始化为正常接收模式。
S704:转正常红外遥控按键识别处理。
S705:判断是否已经初始化为串口接收模式;若否,则本流程转至S706,若是,则本流程转至S707。
S706:初始化成为串口接收模式。
S707:串口数据标志位IRIN为1。
红外接收的端口也只是普通带外部中断的红外接收端口,并不是串口的RX端口,因此用作串口接收,也需要模拟成串口。这个接收端口的模拟方法跟发射端口的模拟流程差不多,只不过发射的模拟流程是将数据拆分,而接收的模拟流程则需要将每一位合并,重新还原成16进制的数据。当有接收到起始位后,开始接收数据,通过读取红外接收端口的电平来判断接收到的数据位的值,如果是0则将数据直接左移一位,如果是1则是先左移一位再加上1。每接收完一位都要延时设定的波特率的时间,这个波特率要跟发送设定的一致,当8位都接收完毕后再接收停止位。将I/O端口模拟成红外接收串口的流程图如图8所示。
S801:有中断产生。
S802:进行延时。
S803:判断接收到的数据位是否为1;
具体地,通过读取红外接收端口的电平来判断接收到的数据位是否为1;若接收到的数据位为1,则本流程转至步骤S804,若接收到的数据位为0,则本流程转至步骤S805。
S804:将接收到的数据先左移一位再加上1(buf=(buf<<1)|1;i++)。
S805:将接收到的数据直接左移一位(buf=buf<<1;i++)。
S806:按照设定的波特率时间表进行延时。
S807:判断8位数据是否已接收完毕;若否,则本流程转回步骤S803,再次判断下一个接收的数据位是否为1以继续上述流程;若是,则本流程转至步骤S808。
S808:接收停止位。
红外串口接收部分的主要流程是数据接收处理,这里的数据接收包括了普通串口数据,命令和键值。如果接收过程受到干扰导致接收数据不正确,还需要调用串口发送函数,发送重发请求命令。这里的红外接收主要也是创建一个线程,没有来数据时IRIN=0时一直是处理等待状态。有数据来时,调用红外接收的模拟串口函数。当接收到第一个数据时,首先是判断是否是命令或者数据的包头,如果不是则转出错处理。如果是正常的包头,则接着接收第二个数据,这个是发送方发过来的这一包数据的总的数据个数sendnumber;然后继续接收其它的数据,且边接收边计算接收到的数据个数Receive_number++,直到接收完毕,即sendnumber=Receive_number;然后接收检验值,并且将接收到的数据校验值和本轮接到的数据所计算出来的检验值进行比较,如果不一致说明接收出错,转出错处理,如果检验通过再接着接收包尾;如果不是正确的包尾,同样转出错处理;如果接收到的数据都正确,再来分别对数据进行判断和处理,如果接收到的包头并不是命令包头那就是正常的串口数据,调用正常的串口数据处理;如果是命令包头,则还要继续进行判断,如果是键值则上传键值给应用程序;如果是命令则转命令处理。红外接收数据处理的流程图如图9所示:
S901:创建红外串口接收线程.
S902:判断串口数据标志位IRIN是否等于1;若否,则继续进行步骤S902中的判断;若否则本流程转至步骤S903;
S903:调用模拟串口接收函数;
具体地,有数据来时,调用模拟串口接收函数准备接收数据。
S904:判断是否为命令或者数据包头;若否,则本流程转至步骤S911;若是,则本流程转至步骤S905。
S905:调用I/O模拟串口接收函数接收发送的数据个数sendnumber。
S906:调用I/O模拟串口接收函数接收传进来的数据,并保存接收到的数据到接收数组Receive_number++。
S907:判断sendnumber是否等于Receive_number;若否,则本流程转回步骤S906。
S908:调用I/O模拟串口接收函数取出校验值,并将所取出的校验值与本次接收到的数据的校验值进行比较;
具体地,调用I/O模拟串口接收函数取出校验值,并计算本次接收到的数据的校验值,然后将所述取出的校验值与所述计算得出的校验值进行比较。
S909:判断两个校验值是否一致;
具体地,判断调用I/O模拟串口接收函数所取出校验值与本次接收到的数据的校验值是否一致,若否,则本流程转至步骤S904;若是,则本流程转至步骤S910。
S910:调用I/O模拟串口接收函数接收数据包尾。
S911:判断接收到的数据包尾是否为包尾;若否,则本流程推进到步骤S912;若是,则本流程推进到S913;
S912:调用I/O模拟串口发送函数发送重发请求。
S913:判断接收到的包头是否为命令包头;若否,则本流程转至步骤S914;若是,则本流程转至步骤S915;
S914:调用正常的串口数据处理。
S915:判断接收到的命令包头是否为键值;若是,则本流程专职步骤S916;若否,则本流程转至步骤S917。
S916:上传键值给应用。
S917:调用命令处理函数。
S918:IRIN=0;
具体地,串口数据标志位IRIN=0,即本流程回到没有数据来时的一直处于等待的状态。
本发明实施例提供的红外串口通信方法,可使机顶盒端不接串口线就能方便开发人员进行调试程序,且出了异常故障时可以方便查找问题,尤其对于不允许有硬件串口接口的市场,可以有效解决串口升级和出故障时方便查找并解决问题。
图10示出了本发明实施例提供的红外串口通信装置的设备框图。该红外串口通信装置10包括红外串口发送模块101和红外串口接收模块102。红外串口发送模块101包括高频调制发送单元1011、将I/O端口模拟成红外发送串口单元1012和红外发送打包处理单元1013;红外串口接收模块102包括红外接收中断处理单元1021、将I/O端口模拟成红外接收串口单元1022和红外接收数据处理单元1023。
高频调制发送单元1011用于:
创建红外高频调制线程;
判断发射标志位是否等于1;
若发射标志位等于1,则红外发射端口电平取反,以发射红外信号
判断38khz定时时间是否到达;
若38khz定时时间还未到,则继续判断38khz定时时间是否到达。
将I/O端口模拟成红外发送串口单元1012用于:
发送起始位;
进行延时;
判断发送的数据位是否为1;
若发送的数据位为1,则置发送标志位为0;若发送的数据位为0,则置发送标志位为1;
按照设定的波特率时间表进行延时;
判断8位数据是否已经发送完毕;
若8位数据已经发送完毕,则发送停止位,以实现将I/O端口模拟成红外发送串口。
红外发送打包处理单元1013用于:
调用I/O模拟串口发送函数发送数据包头;
计算发送的数据个数;
调用I/O模拟串口发送函数发送计算出来的数据个数;
调用I/O模拟串口发送函数发送传进来的数据;
判断数据是否发送完毕;
若未发送完毕,则继续调用I/O模拟串口发送函数发送传进来的数据;
若发送完毕,则计算校验值;
调用I/O模拟串口发送函数发送计算出来的校验值;
调用I/O模拟串口发送函数发送数据包尾。
红外接收中断处理单元1021用于:
判断是否为正常接收模式;
若为正常接收模式,则初始化正常接收模式,并转正常红外遥控按键识别处理;
若为非正常接收模式,则初始化称为串口接收模式,并置串口数据表示为1,以实现红外接收中断处理。
将I/O端口模拟成红外接收串口单元1022用于:
有中断产生时,进行延时;
判断接收到的数据位是否为1;
若接收到的数据位为1,则将接收到的数据先左移一位再加上1;若接收到的数据位为0,则将接收到的数据直接左移一位;
按照设定的波特率时间表进行延时;
判断8位数据是否已接收完毕;
若8位数据已经接收完毕,则接收停止位,以实现将I/O端口模拟成红外接收串口。
红外接收数据处理单元1023用于:
创建红外串口接收线程;
若接收的包头为数据包头,则调用I/O模拟串口接收函数接收传进来的数据,并保存接收到的数据到接收数组;
判断数据是否接收完毕,若否,则继续调用I/O模拟串口接收函数接收传进来的数据,并保存接收到的数据到接收数组;
若数据已接收完毕,则调用I/O模拟串口接收函数取出校验值,并计算本次接收到的数据的校验值,然后将所述取出的校验值与所述计算得出的校验值进行比较,若一致,则调用I/O模拟串口接收函数接收数据包尾;
若接收到的包头为命令包头,则进一步判断接收到的数据是否为键值,若是,则上传键值给应用,若否,则调用命令处理函数;若接收到的包头非命令包头,则调用正常串口数据处理。
本发明实施例提供的红外串口通信装置可应用于机顶盒等电子设备中,可使机顶盒端不接串口线就能方便开发人员进行调试程序,且出了异常故障时可以方便查找问题,尤其对于不允许有硬件串口接口的市场,可以有效解决串口升级和出故障时方便查找并解决问题。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种红外串口通信方法,其特征在于,所述方法包括:
当有数据需要发送时:
创建高频调制发送进程;
调用所述高频调制发送进程将I/O端口模拟成红外发送串口;
调用I/O模拟串口发送函数对需要发送的数据进行红外发送打包处理;
当有数据需要接收时:
进行红外中断处理以初始化串口接收模式;
将I/O端口模拟成红外接收串口;
调用I/O模拟串口接收函数对需要接收的数据进行红外接收数据处理;
其中,所述红外接收中断处理以初始化串口接收模式包括:
判断是否为正常接收模式;
若为正常接收模式,则初始化正常接收模式,并转正常红外遥控按键识别处理;
若为非正常接收模式,则初始化成为串口接收模式,并置串口数据标志位为1,以实现红外接收中断处理。
2.根据权利要求1所述的红外串口通信方法,其特征在于,所述创建高频调制发送进程包括:
创建红外高频调制线程;
判断发射标志位是否等于1;
若发射标志位等于1,则红外发射端口电平取反,以发射红外信号;
判断38khz定时时间是否到达;
若38khz定时时间还未到,则继续判断38khz定时时间是否到达;
所述调用所述高频调制发送进程将I/O端口模拟成红外发送串口包括:
发送起始位;
进行延时;
判断发送的数据位是否为1;
若发送的数据位为1,则置发送标志位为0;若发送的数据位为0,则置发送标志位为1;
按照设定的波特率时间表进行延时;
判断8位数据是否已经发送完毕;
若8位数据已经发送完毕,则发送停止位,以实现将I/O端口模拟成红外发送串口。
3.根据权利要求1所述的红外串口通信方法,其特征在于,调用I/O模拟串口发送函数对需要发送的数据进行红外发送打包处理包括:
调用I/O模拟串口发送函数发送数据包头;
计算发送的数据个数;
调用I/O模拟串口发送函数发送计算出来的数据个数;
调用I/O模拟串口发送函数发送传进来的数据;
判断数据是否发送完毕,若未发送完毕,则继续调用I/O模拟串口发送函数发送传进来的数据;
若发送完毕,则计算校验值;
调用I/O模拟串口发送函数发送计算出来的校验值;
调用I/O模拟串口发送函数发送数据包尾。
4.根据权利要求1所述的红外串口通信方法,其特征在于,所述将I/O端口模拟成红外接收串口包括:
有中断产生时,进行延时;
判断接收到的数据位是否为1;
若接收到的数据位为1,则将接收到的数据先左移一位再加上1;若接收到的数据位为0,则将接收到的数据直接左移一位;
按照设定的波特率时间表进行延时;
判断8位数据是否已接收完毕;
若8位数据已经接收完毕,则接收停止位,以实现将I/O端口模拟成红外接收串口。
5.根据权利要求1所述的红外串口通信方法,其特征在于,所述调用I/O模拟串口接收函数对需要接收的数据进行红外接收数据处理包括:
创建红外串口接收线程;
若接收的包头为数据包头,则调用I/O模拟串口接收函数接收传进来的数据,并保存接收到的数据到接收数组;
判断数据是否接收完毕,若否,则继续调用I/O模拟串口接收函数接收传进来的数据,并保存接收到的数据到接收数组;
若数据已接收完毕,则调用I/O模拟串口接收函数取出校验值,并计算本次接收到的数据的校验值,然后将所述取出的校验值与所述计算得出的校验值进行比较,若一致,则调用I/O模拟串口接收函数接收数据包尾;
若接收到的包头为命令包头,则进一步判断接收到的数据是否为键值,若是,则上传键值给应用,若否,则调用命令处理函数;若接收到的包头非命令包头,则调用正常串口数据处理。
6.一种红外串口通信装置,其特征在于,所述装置包括红外串口发送模块和红外串口接收模块;
所述红外串口发送模块包括:
高频调制发送单元,用于创建高频调制发送进程;
将I/O端口模拟成红外发送串口单元,用于调用所述高频调制发送进程将I/O端口模拟成红外发送串口;
红外发送打包处理单元,用于调用I/O模拟串口发送函数对需要发送的数据进行红外发送打包处理;
所述红外串口接收模块包括:
红外接收中断处理单元,用于进行红外中断处理以初始化串口接收模式;
将I/O端口模拟成红外接收串口单元,用于将I/O端口模拟成红外接收串口;
红外接收数据处理单元,用于调用I/O模拟串口接收函数对需要接收的数据进行红外接收数据处理;
其中,所述红外接收中断处理单元具体用于:
判断是否为正常接收模式;
若为正常接收模式,则初始化正常接收模式,并转正常红外遥控按键识别处理;
若为非正常接收模式,则初始化成为串口接收模式,并置串口数据表示为1,以实现红外接收中断处理。
7.根据权利要求6所述的红外串口通信装置,其特征在于,所述高频调制发送单元具体用于:
创建红外高频调制线程;
判断发射标志位是否等于1;
若发射标志位等于1,则红外发射端口电平取反,以发射红外信号;
判断38khz定时时间是否到达;
若38khz定时时间还未到,则继续判断38khz定时时间是否到达;
所述将I/O端口模拟成红外发送串口单元具体用于:
发送起始位;
进行延时;
判断发送的数据位是否为1;
若发送的数据位为1,则置发送标志位为0;若发送的数据位为0,则置发送标志位为1;
按照设定的波特率时间表进行延时;
判断8位数据是否已经发送完毕;
若8位数据已经发送完毕,则发送停止位,以实现将I/O端口模拟成红外发送串口。
8.根据权利要求6所述的红外串口通信装置,其特征在于,所述红外发送打包处理单元具体用于:
调用I/O模拟串口发送函数发送数据包头;
计算发送的数据个数;
调用I/O模拟串口发送函数发送计算出来的数据个数;
调用I/O模拟串口发送函数发送传进来的数据;
判断数据是否发送完毕;
若未发送完毕,则继续调用I/O模拟串口发送函数发送传进来的数据;
若发送完毕,则计算校验值;
调用I/O模拟串口发送函数发送计算出来的校验值;
调用I/O模拟串口发送函数发送数据包尾。
9.根据权利要求6所述的红外串口通信装置,其特征在于,所述将I/O端口模拟成红外接收串口单元具体用于:
有中断产生时,进行延时;
判断接收到的数据位是否为1;
若接收到的数据位为1,则将接收到的数据先左移一位再加上1;若接收到的数据位为0,则将接收到的数据直接左移一位;
按照设定的波特率时间表进行延时;
判断8位数据是否已接收完毕;
若8位数据已经接收完毕,则接收停止位,以实现将I/O端口模拟成红外接收串口。
10.根据权利要求6所述的红外串口通信装置,其特征在于,所述红外接收数据处理单元具体用于:
创建红外串口接收线程;
若接收的包头为数据包头,则调用I/O模拟串口接收函数接收传进来的数据,并保存接收到的数据到接收数组;
判断数据是否接收完毕,若否,则继续调用I/O模拟串口接收函数接收传进来的数据,并保存接收到的数据到接收数组;
若数据已接收完毕,则调用I/O模拟串口接收函数取出校验值,并计算本次接收到的数据的校验值,然后将所述取出的校验值与所述计算得出的校验值进行比较,若一致,则调用I/O模拟串口接收函数接收数据包尾;
若接收到的包头为命令包头,则进一步判断接收到的数据是否为键值,若是,则上传键值给应用,若否,则调用命令处理函数;若接收到的包头非命令包头,则调用正常串口数据处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310101170.4A CN103236154B (zh) | 2013-03-27 | 2013-03-27 | 一种红外串口通信方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310101170.4A CN103236154B (zh) | 2013-03-27 | 2013-03-27 | 一种红外串口通信方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103236154A CN103236154A (zh) | 2013-08-07 |
CN103236154B true CN103236154B (zh) | 2016-03-02 |
Family
ID=48884191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310101170.4A Expired - Fee Related CN103236154B (zh) | 2013-03-27 | 2013-03-27 | 一种红外串口通信方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103236154B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104992553B (zh) * | 2015-07-29 | 2018-05-01 | 上海斐讯数据通信技术有限公司 | 一种家电红外遥控波形的复制学习方法及系统 |
CN105068947B (zh) * | 2015-08-20 | 2018-01-16 | 浪潮软件集团有限公司 | 一种基于驱动层处理串口通信的方法 |
CN118138452B (zh) * | 2024-04-03 | 2024-09-06 | 东莞市拓嘉新能源科技有限公司 | 一种高效可靠的rs485总线多设备软件升级的方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201336032Y (zh) * | 2009-01-22 | 2009-10-28 | 天津理工大学 | 一种软件模拟串行数据传输装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007142970A (ja) * | 2005-11-21 | 2007-06-07 | Kenwood Corp | 無線通信機の起動方法及びそのソフトウエア |
-
2013
- 2013-03-27 CN CN201310101170.4A patent/CN103236154B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201336032Y (zh) * | 2009-01-22 | 2009-10-28 | 天津理工大学 | 一种软件模拟串行数据传输装置 |
Non-Patent Citations (2)
Title |
---|
单片机89C52的I/O模拟串口与PC机通信数据采集实现方法;陈铭;《中国水运》;20091130;第09卷(第11期);第109-110页 * |
单片机多路模拟串口的实现及其性能分析;吴名陵等;《自动化仪表》;20081031;第29卷(第10期);第67-69页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103236154A (zh) | 2013-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Peña et al. | Uart: A hardware communication protocol understanding universal asynchronous receiver/transmitter | |
US7433991B2 (en) | Selector, selection method, and program product | |
CN101911000B (zh) | 用于连接电子装置的控制总线 | |
CN107209739A (zh) | 电压模式和电流模式设备枚举 | |
JPH07296125A (ja) | リーダライタ及び非接触icカードシステム | |
CN103236154B (zh) | 一种红外串口通信方法和装置 | |
US7457898B2 (en) | Substitute SATA host for communicating with a SATA device | |
CN104598285A (zh) | 烧录方法和烧录系统 | |
CN104461624A (zh) | 一种三维声波测井仪近探头测量模块的远程升级方法 | |
CN105279130A (zh) | 一种对同地址的多个i2c器件进行操作的方法 | |
CN105068955B (zh) | 一种局部总线结构及数据交互方法 | |
US10721022B2 (en) | Communication apparatus, communication method, program, and communication system | |
WO2017166672A1 (zh) | 异步收发传输器和通用串行总线接口复用电路及电路板 | |
US9015365B2 (en) | Integrated circuit using I2C bus and control method thereof | |
CN100504831C (zh) | 一种i2c总线被从器件锁定后的恢复方法及装置 | |
CN108563595B (zh) | 一种远距离传输usb数据的系统及方法 | |
US20130304999A1 (en) | Electronic device and serial data communication method | |
US9817778B2 (en) | Electronic device and method for communicating with USB device | |
TWI539285B (zh) | 主機端及從屬端之間的單線雙向傳輸通訊方法 | |
US8799545B2 (en) | Restoring stability to an unstable bus | |
KR20160104079A (ko) | 통신 장치 및 방법 | |
CN115408321A (zh) | 接口电路及其控制方法、信号传输系统和电子设备 | |
US20140244874A1 (en) | Restoring stability to an unstable bus | |
US10977206B2 (en) | Data communication device and method for data communication | |
CN105471518A (zh) | 通信设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 518000 Guangdong city of Shenzhen province Nanshan District Gao Xin Road Building A14, SKYWORTH Applicant after: SHENZHEN SKYWORTH DIGITAL TECHNOLOGY Co.,Ltd. Address before: 518000 Guangdong city of Shenzhen province Nanshan District Gao Xin Road Building A14, SKYWORTH Applicant before: SHENZHEN SKYWORTH DIGITAL TECHNOLOGY Co.,Ltd. |
|
COR | Change of bibliographic data | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160302 |
|
CF01 | Termination of patent right due to non-payment of annual fee |