基于单片机的红外遥控信号解码方法、系统及计量装置转让专利

申请号 : CN201911066597.9

文献号 : CN110910629B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张青松卜俭青黄志武李双全朱程鹏

申请人 : 杭州海兴电力科技股份有限公司宁波恒力达科技有限公司南京海兴电网技术有限公司

摘要 :

本发明公开一种基于单片机的红外遥控信号解码方法、系统及计量装置,其中方法包括以下步骤:配置UART信息和定时器信息,开启UART中断并关闭定时器中断;通过UART接收一个字符的待解析的红外遥控信号后,关闭UART中断并开启定时器中断;当定时器中断触发时,启动定时器中断服务函数,对UART的电平状态进行采集,并根据所述电平状态和预设的解码规则生成解析结果;当完成对待解析的红外遥控信号的接收时,关闭定时器中断并开启UART中断,同时根据所有解析结果生成解码信息。本发明提出的解码方法无需占用外部中断资源。

权利要求 :

1.一种基于单片机的红外遥控信号解码方法,其特征在于包括以下步骤:配置UART信息和定时器信息,开启UART中断并关闭定时器中断;

通过UART接收一个字符的待解析的红外遥控信号后,关闭UART中断并开启定时器中断;

当定时器中断触发时,启动定时器中断服务函数,对UART的电平状态进行采集,并根据所述电平状态和预设的解码规则生成解析结果;

当完成对待解析的红外遥控信号的接收时,关闭定时器中断并开启UART中断,同时根据所有解析结果生成解码信息,具体为:当启动定时器中断服务函数时,提取定时器中断的开启总时长,并将所述开启总时长与预设的开启超时阈值相比较,当开启总时长大于预设的开启超时阈值时,判定接收完成,否则判定接收未完成;

当获得解析结果时记录解析数量,将所述解析数量与预设的解析数量阈值相比较,当所述解析数量达到解析数量阈值时,判定接收完成,否则判定接收未完成;

当判定结果为接收未完成时,退出定时器中断服务函数等待下一次定时器中断触发,当判定结果为接收完成时,关闭定时器中断并开启UART中断,并根据所有解析结果生成解码信息。

2.根据权利要求1所述的基于单片机的红外遥控信号解码方法,其特征在于,对UART的电平状态进行采集,并根据所述电平状态和预设的解码规则生成解析结果的具体步骤为:在定时器中断未开启超时的条件下按照预设的采样规则判断是否进行采样,当判定结果为采样时,采集UART的电平状态;

基于预设的解码规则对所述电平状态进行解析,获得解析结果。

3.根据权利要求1或2所述的基于单片机的红外遥控信号解码方法,其特征在于:定时器信息包括定时间隔。

4.根据权利要求3所述的基于单片机的红外遥控信号解码方法,其特征在于:所述定时间隔为70us、140us 、280us或560us。

5.根据权利要求1或2所述的基于单片机的红外遥控信号解码方法,其特征在于:所述UART信息包括波特率和字符格式,此时UART在所述波特率下接收一个字符的待解析的红外遥控信号的用时为 其中Tbc为红外遥控信号引导码的时长。

6.根据权利要求5所述的基于单片机的红外遥控信号解码方法,其特征在于:所述波特率为1000bps,所述字符为10bit, UART在所述波特率下接收一个字符的待解析的红外遥控信号的用时为10ms。

7.一种基于单片机的红外遥控信号解码系统,其特征在于,包括:信息配置模块,用于配置UART信息和定时器信息,开启UART中断并关闭定时器中断;

中断服务模块,用于通过UART接收一个字符的待解析的红外遥控信号后,关闭UART中断并开启定时器中断;还用于当定时器中断触发时,启动定时器中断服务函数,对UART的电平状态进行采集,并根据所述电平状态和预设的解码规则生成解析结果;

解码信息生成模块,用于当完成对待解析的红外遥控信号的接收时,关闭定时器中断并开启UART中断,同时根据所有解析结果生成解码信息;

所述中断服务模块包括UART中断服务单元和定时器中断服务单元,其中定时器中断服务单元包括采样解析子单元和接收判断子单元,所述接收判断子单元被配置为:当启动定时器中断服务函数时,提取定时器中断的开启总时长,并将所述开启总时长与预设的开启超时阈值相比较,当开启总时长大于预设的开启超时阈值时,判定接收完成,否则判定接收未完成;

当获得解析结果时记录解析数量,将所述解析数量与预设的解析数量阈值相比较,当所述解析数量达到解析数量阈值时,判定接收完成,否则判定接收未完成;

当判定结果为接收未完成时,退出定时器中断服务函数等待下一次定时器中断触发,当判定结果为接收完成时,令所述解码信息生成模块关闭定时器中断并开启UART中断,并根据所有解析结果生成解码信息。

8.根据权利要求7所述的基于单片机的红外遥控信号解码系统,其特征在于,所述采样解析子单元被配置为:当定时器中断触发时,启动定时器中断服务函数,在定时器中断未开启超时的条件下按照预设的采样规则判断是否进行采样,当判定结果为采样时,采集UART的电平状态;

基于预设的解码规则对所述电平状态进行解析,获得解析结果。

9.一种计量装置,包含单片机和红外接收器,所述红外接收器与单片机的UART相连,其特征在于,所述单片机执行时实现权利要求1至6任意一项所述方法的步骤。

说明书 :

基于单片机的红外遥控信号解码方法、系统及计量装置

技术领域

[0001] 本发明涉及红外遥控解码领域,尤其涉及一种基于单片机的红外遥控信号解码方法、系统及计量装置。

背景技术

[0002] 现今红外遥控器得到广泛的应用,且红外遥控信号具有其专属的编码标准,目前红外遥控编码包括引导码和32位数据,其中引导码由9ms的低电平和4.5ms高电平组成数据由逻辑‘0’和逻辑‘1’组成。
[0003] 常见的解码方式有两种,一种是基于单片机的外部中断和定时器所进行的解码方式;另一种是基于UART所进行的解码方式。
[0004] 外部中断为单片机的稀缺资源,主要用于响应最高优先级的操作,如表计产品中,计量功能的优先级最高,当使用独立的计量芯片时,计量芯片的中断信号就需要占用单片机的外部中断资源,并以高优先级响应;故基于单片机的外部中断和定时器的软件解码算法的解码方式适用范围窄,故需要做进一步改进。

发明内容

[0005] 本发明针对现有技术中的缺点,提供了无需占用单片机外部中断资源的一种基于单片机的红外遥控信号解码方法、系统及计量装置。
[0006] 为了解决上述技术问题,本发明通过下述技术方案得以解决:
[0007] 一种基于单片机的红外遥控信号解码方法,包括以下步骤:
[0008] 配置UART信息和定时器信息,开启UART中断并关闭定时器中断;
[0009] 通过UART接收一个字符的待解析的红外遥控信号后,关闭UART中断并开启定时器中断;
[0010] 当定时器中断触发时,启动定时器中断服务函数,对UART的电平状态进行采集,并根据所述电平状态和预设的解码规则生成解析结果;
[0011] 当完成对待解析的红外遥控信号的接收时,关闭定时器中断并开启UART中断,同时根据所有解析结果生成解码信息。
[0012] 作为一种可实施方式,对UART的电平状态进行采集,并根据所述电平状态和预设的解码规则生成解析结果的具体步骤为:
[0013] 在定时器中断未开启超时的条件下按照预设的采样规则判断是否进行采样,当判定结果为采样时,采集UART的电平状态;
[0014] 基于预设的解码规则对所述电平状态进行解析,获得解析结果。
[0015] 作为一种可实施方式,当完成对待解析的红外遥控信号的接收时,关闭定时器中断并开启UART中断,同时根据所有解析结果生成解码信息的具体步骤为:
[0016] 当启动定时器中断服务函数时,提取定时器中断的开启总时长,并将所述开启总时长与预设的开启超时阈值相比较,当开启总时长大于预设的开启超时阈值时,判定接收完成,否则判定接收未完成;
[0017] 当获得解析结果时记录解析数量,将所述解析数量与预设的解析数量阈值相比较,当所述解析数量达到解析数量阈值时,判定接收完成,否则判定接收未完成;
[0018] 当判定结果为接收未完成时,退出定时器中断服务函数等待下一次定时器中断触发,当判定结果为接收完成时,关闭定时器中断并开启UART中断,并根据所有解析结果生成解码信息。
[0019] 作为一种可实施方式:
[0020] 定时器信息包括定时间隔。
[0021] 作为一种可实施方式:
[0022] 所述定时间隔为70us、140us、280us或560us。
[0023] 作为一种可实施方式:
[0024] 所述UART信息包括波特率和字符格式,此时UART在所述波特率下接收一个字符的待解析的红外遥控信号的用时为 其中Tbc为红外遥控信号引导码的时长。
[0025] 作为一种可实施方式:
[0026] 所述波特率为1000bps,所述字符为10bit,UART在所述波特率下接收一个字符的待解析的红外遥控信号的用时为10ms。
[0027] 为解决上述技术问题,本发明还提出一种基于单片机的红外遥控信号解码系统,包括:
[0028] 信息配置模块,用于配置UART信息和定时器信息,开启UART中断并关闭定时器中断;
[0029] 中断服务模块,用于通过UART接收一个字符的待解析的红外遥控信号后,关闭UART中断并开启定时器中断;还用于当定时器中断触发时,启动定时器中断服务函数,对UART的电平状态进行采集,并根据所述电平状态和预设的解码规则生成解析结果;
[0030] 解码信息生成模块,当完成对待解析的红外遥控信号的接收时,关闭定时器中断并开启UART中断,同时根据所有解析结果生成解码信息。
[0031] 作为一种可实施方式,所述中断服务模块包括UART中断服务单元和定时器中断服务单元,其中定时器中断服务单元包括采样解析子单元和接收判断子单元;
[0032] 所述采样解析子单元被配置为:
[0033] 当定时器中断触发时,启动定时器中断服务函数,在定时器中断未开启超时的条件下按照预设的采样规则判断是否进行采样,当判定结果为采样时,采集UART的电平状态;
[0034] 基于预设的解码规则对所述电平状态进行解析,获得解析结果;
[0035] 所述接收判断子单元被配置为:
[0036] 当启动定时器中断服务函数时,提取定时器中断的开启总时长,并将所述开启总时长与预设的开启超时阈值相比较,当开启总时长大于预设的开启超时阈值时,判定接收完成,否则判定接收未完成;
[0037] 当获得解析结果时记录解析数量,将所述解析数量与预设的解析数量阈值相比较,当所述解析数量达到解析数量阈值时,判定接收完成,否则判定接收未完成;
[0038] 当判定结果为接收未完成时,退出定时器中断服务函数等待下一次定时器中断触发,当判定结果为接收完成时,关闭定时器中断并开启UART中断,并根据所有解析结果生成解码信息。
[0039] 为解决上述技术问题,本发明还提出一种计量装置,包含单片机和红外接收器,所述红外接收器与单片机的UART相连,其特征在于,所述单片机执行时实现上述任意一项所述方法的步骤。
[0040] 本发明由于采用了以上技术方案,具有显著的技术效果:
[0041] 1、本发明通过对UART信息的设计,巧妙的通过UART信息,利用UART接收一个字符的用时实现精确定时,令定时器启动定时采样进行红外解码,此时无需占用外部中断资源,适用范围广,与无中断信号时利用定时采样进行红外解码的技术方案相比,无需要求很短很精确的定时间隔以快速发送红外遥控信号的引导码,与现有利用UART进行解码的方式相比,无需预先进行编码学习和大量的调试。
[0042] 2、本发明对定时器中断服务函数的设计,一方面通过采样规则进行采样,无需在每一次定时器中断被触发时都进行采样,另一方面能够直接根据采样获得的电平状态和解码规则获取解析结果(数据“0”或“1”),与现有利用UART进行解码的方式相比,无需对所接收的红外遥控信号的波形进行匹配分析,将其转换成对应的解码信息,且针对任意红外遥控信号都能输出相对应的解码信息。
[0043] 3、本发明通过对开启超时阈值的设计,能够防止意外干扰导致无法结束本次解码工作的异常情况,以便于在出现上述情况时恢复初始状态,重新接收待解析红外遥控信号。

附图说明

[0044] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0045] 图1是本发明一种基于单片机的红外遥控信号解码方法的流程示意图;
[0046] 图2是定时间隔为280us时基于红外遥控信号设置采样规则的第一原理示意图;
[0047] 图3是定时间隔为280us时基于红外遥控信号设置采样规则的第二原理示意图;
[0048] 图4是本实施例1中URAT中断服务函数和定时器中断服务函数的工作流程示意图;
[0049] 图5是基于单片机的红外遥控信号解码系统的模块连接示意图。

具体实施方式

[0050] 现今基于单片机的外部中断和定时器所进行的解码方式包括以下步骤:
[0051] 将红外接收口与单片机的外部中断口相连,当外部中断接收到中断信号(下降沿捕获)后进入外部中断服务;
[0052] 外部中断服务函数中开启定时器中断,并关闭外部中断使能,防止在当前解码周期内再次进入此中断服务;
[0053] 在定时器中断服务函数中采集接收口的电平状态,并利用定时器记录低电平的脉宽,并依据编码规则根据所述间隔时间解析用户编码、按键数据码等数据。
[0054] 注,数据“0”由560us的高电平与565us的低电平构成,数据“1”由560us的高电平与1690us的低电平构成,即,当低电平脉宽在565us左右时可判定其对应的数据为“0”,低电平脉宽在1690us左右时可判定其对应的数据为“1”。
[0055] 现今基于单片机的UART接收口所进行的解码方式包括以下步骤:
[0056] 1、红外接收口与单片机的UART接收口相连;
[0057] 2、设定单片机的UART波特率为某一波特率;
[0058] 3、接收某一按键数据,并记录UART的接收数据;
[0059] 4、调整波特率保证同一按键下接收到的UART接收的数据始终一致;
[0060] 5、切换另一按键,重复步骤3和步骤4操作;
[0061] 6、当所有按键都调试完成后,确定不同的按键得到了不同的UART数据,否则调整波特率,重复进行步骤3到步骤6内容。
[0062] 7、完成上述步骤后,在使用过程中,通过UART接收到的数据与已知的数据进行匹配,并转换为对应的按键数据码并使用。
[0063] 由上可知,现有基于单片机UART的软件解码方式仅能对预先学习过的红外遥控信号进行解析,且需要预先学习的步骤中为防止UART数据冲突需要进行大量的调试工作,工作量大且工作效率低。
[0064] 下面结合实施例对本发明做进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。
[0065] 实施例1、一种基于单片机的红外遥控信号解码方法,如图1所示,包括以下步骤:
[0066] S100、获取UART信息和定时器信息,此时UART中断开启,定时器中断关闭;
[0067] S200、通过UART接收一个字符的待解析的红外遥控信号后,关闭UART中断并开启定时器中断;
[0068] 注,UART(Universal Asynchronous Receiver/Transmitter,异步收发传输器),UART在接收模式时自动检测UART的起始信号(接收口的一个下降沿),这与红外遥控器编码的引导码起始信号相同。
[0069] S300、当定时器中断触发时,启动定时器中断服务函数,对UART的电平状态进行采集,并根据所述电平状态和预设的解码规则生成解析结果;
[0070] 上述获取接收中断信号时关闭UART中断,以防止在本次解码流程中,当UART再次接收到下降沿时进入UART中断。
[0071] S400、当完成对待解析的红外遥控信号的接收时,关闭定时器中断并开启UART中断,同时根据所有解析结果生成解码信息。
[0072] 即,此时结束对红外遥控信号的解码,回到初始状态等待下一次待解析的红外遥控信号。
[0073] 由上可知,本实施例中取消外部中断口的使用,利用单片机的UART接收口和定时器实现对红外遥控信号的解码;
[0074] 本实施例中通过对UART信息的设计,巧妙的通过UART信息,利用UART接收一个字符的用时实现精确定时,令定时器启动进行定时采样。
[0075] 请注意,如在无中断信号时使用定时器采样,为使采样精度达到要求,则需要将定时器的定时间隔设定的很短很精确才能及时发现红外遥控信号中引导码中的下降沿,此时对单片机的控制芯片主频和对定时器中断在程序处理优先级有较高要求,否则将造成采样不准,误码率上升的情况。
[0076] 上述定时器信息为定时间隔,相关领域的技术人员可根据实际需要自行设定,小于560us即可,例如可采用70us、140us、280us或560us(定时间隔越小对单片机主频要求越高),本实施例中定时间隔采用280us。
[0077] 上述UART信息包括波特率和字符格式,用于限定UART接收一个字符的用时,相关领域的技术人员可根据实际需要自行设定,仅需UART在所述波特率下接收一个字符的待解析的红外遥控信号的用时为 (含 和Tbc),其中Tbc为红外遥控信号引导码的时长。
[0078] 本实施例中将UART的波特率配置为1000bps,字符包含1个起始位、8个数据位、1个停止位,其长度为10bit(起始位1bit、数据位8bit、停止位1bit),此时UART在所述波特率下接收一个字符的待解析的红外遥控信号的用时为10ms。
[0079] 注,上述无中断信号、仅采用定时采样的技术方案中,需要采用7us的定时器,且其精度不能超过0.05us,否则误差的累计将导致后续接收的数据误码率升高;而本实施例中利用UART进行10ms的精准定时后生成接收中断信号,并采用280us定时器进行定时采样的方案,仅要求定时偏差不超过1us,既可以准确的捕获波形对红外遥控信号进行解码。
[0080] 步骤S300中对UART的电平状态进行采集,并根据所述电平状态和预设的解码规则生成解析结果的具体步骤为:
[0081] 当定时器中断触发时进入定时器中断服务函数,在定时器中断未开启超时的条件下按照预设的采样规则判断是否进行采样,当判定结果为采样时,采集UART的电平状态;
[0082] 基于预设的解码规则对所述电平状态进行解析,获得解析结果。
[0083] 由数据“0”和数据“1”比较可知,其区别在于低电平的脉宽;由于数据“0”和数据“1”起始都为高电平,故初始采样获得的电平状态均为高电平,此时跳过数据“0”的长度(1125us)后再进行采样,如采样获得的电平状态为高电平,即可证明对应数据为数据“0”(即,解析结果),此时采样点位于下一个数据的高电平上;如采样获得的电平状态为低电平,即可证明对应数据为数据“1”(即,解析结果),此时采样点位于所述数据“1”的低电平上,需达到与初始采样点相近的位置后跳过数据“0”的长度(1125us)进行下一点采样。
[0084] 由上可知,本实施例中无需在每一次定时器触发时都进行采样,仅需按照预设的采样规则进行间隔采样,并可直接按照解码规则确定数据为“0”或“1”,实现对红外遥控信号的解码,与现有利用单片机UART接收口所进行的解码方式相比,无需进行红外编码的学习与调试,也无需与预先学习的红外编码进行比较,直接可获取对应的红外编码的数据。
[0085] 注,上述预设的采样规则和解码规则为基于红外编码波形,根据UART信息和定时器信息设定的规则,相关领域的技术人员可自行设定UART信息和定时器信息,并按照UART信息和定时器信息设定采样规则和解码规则。
[0086] 本实施例中采样规则为:
[0087] 当收到接收中断信号开启定时器中断后,定时器触发14次后进行第一次采样。
[0088] 红外遥控信号的引导码共13.5ms,在去除前10ms的定时以后,还有3.5ms的引导码,计算可知,第13个间隔(用时3640us)进入红外遥控信号的数据区,但由于数据“0”的低电平为565us的低电平,数据“1”的低电平为1690us,即,与定时间隔280us相比,存在5us和10us的偏差,故本实施例中在第14次触发时进行采样,此时采样点位于进入数据区后第
420us。
[0089] 参照图2和图3,为便于理解,图2和图3中以高电平的第280us作为初始采样点,以280us为采样间隔,由图2,所示,当采样获得的电平状态为高电平时,在经过4个定时间隔后进行下一电平状态的采集,即,间隔1120us(近似的认为一个数据“0”)后进行下一电平状态的采集,当所得电平状态为高电平时获得数据“0”,否则获得数据“1”。
[0090] 由图3所示,当采样获得的电平状态为低电平时,在经过6个定时间隔后进行下一电平状态的采集,即,间隔1680us后进行下一电平状态的采集,即,到达与初始采样点相近的位置(用时560us)后再计时1120us(近似的认为一个数据“0”)后进行采样,当所得电平状态为高电平时获得数据“0”,否则获得数据“1”。
[0091] 所述步骤S400中,当完成对待解析的红外遥控信号的接收时,关闭定时器中断并开启UART中断,同时根据所有解析结果生成解码信息的具体步骤为:
[0092] 当启动定时器中断服务函数时,提取定时器中断的开启总时长,并将所述开启总时长与预设的开启超时阈值相比较,当开启总时长大于预设的开启超时阈值时,判定接收完成,否则判定接收未完成;
[0093] 当获得解析结果时记录解析数量(解析结果的总量),将所述解析数量与预设的解析数量阈值相比较,当所述解析数量达到解析数量阈值时,判定接收完成,否则判定接收未完成;
[0094] 当判定结果为接收未完成时,退出定时器中断服务函数等待下一次定时器中断触发,当判定结果为接收完成时,关闭定时器中断并开启UART中断,并根据所有解析结果生成解码信息。
[0095] 本实施例通过对开启超时阈值和解析数量阈值的设计判定是否完成待解析的红外遥控信号的接收是否完成。
[0096] 本实施例中解析数量阈值为32,即,解析数量达到解析数量阈值时,待解析的红外遥控信号32位数据都解析完成,此时可判定接收完成(解码正常)。
[0097] 本实施例中开启超时阈值基于UART信息和定时器信息确定,由上可知一个红外遥控信号由13.5ms的引导码和32个数据位组成,理论上32个数据位最大(全由数据‘1’组成)占用约36ms,故当接收时长超过49.5ms时即可判定其超时,退出定是采样工作,本实施例中UART接收10ms的数据后开启定时器中断,故本实施例中开启超时阈值设为39.5ms,定时器中断的开启总时长大于39.5ms时判定接收完成(解码异常)。
[0098] 本实施例中对开启超时阈值的设计能够防止意外干扰导致无法结束接收流程,从而无法重新接收正确的数据的情况发生。
[0099] 步骤S400中,当完成对待解析的红外遥控信号的接收时,关闭定时器中断并开启UART中断,同时根据所有解析结果生成解码信息。
[0100] 即,当所得数据为32位时,处理所得解析结果(数据“0”或“1”)生成待解析的红外遥控信号的解码信息,否则判定该数据无效,重复上述步骤重新解码。
[0101] 参照图4,详细介绍按照本实施例所提出的方法对待解析红外遥控信号进行解码的步骤进行详细介绍。
[0102] 当待解析红外遥控信号被UART检测到下降沿时,UART开始接受一个字符的数据,用时10ms,在接收完成时生成接收中断信号;
[0103] 获取接收中断信号时进入UART中断服务函数,在所述UART中断服务函数中启动定时器中断并关闭UART中断。
[0104] 当启动定时器中断进入定时器中断服务函数时,开始超时计数器,令超时计数器中数据累加,记录开启总时长;
[0105] 根据开启总时长判断定时器中断是否开启超时,此时未开启超时,基于预设的采样规则判断是否进行采样,初次采样间隔为14次,故此时采样间隔计数为14,此时不进行采样,且未获取32个数据位,故将采样间隔计数减1后退出此次定时器中断服务函数;
[0106] 当下次进入定时器中断服务函数时,重复上述步骤,直至采样间隔计数为0,此时进行第一次采样,采样获得UART的电平状态为高电平,此时基于采样规则设定进行下一次采样的采样间隔为4,此时未获取32位数据,故将采样间隔计数减1后退出此次定时器中断服务函数。
[0107] 重复上述步骤,直至开启总时长超时或获取32位数据,由于开启总时长超时证明解码出现异常故此时直接恢复初始状态,即,开启UART中断,关闭定时器中断,重新接收待解析的红外遥控信号;获取32位数据证明解码完成,故此时置位采样结束标志并恢复初始状态,即,将32位数据进行处理后获得解码信息的同时开启UART中断,为接收下一个待解析的红外编码信号做准备。
[0108] 实施例2、一种基于单片机的红外遥控信号解码系统,如图5所示,包括信息配置模块100、中断服务模块200和解码信息生成模块300。
[0109] 所述信息配置模块100,用于配置UART信息和定时器信息,开启UART中断并关闭定时器中断;所述中断服务模块200,
[0110] 用于通过UART接收一个字符的待解析的红外遥控信号后,关闭UART中断并开启定时器中断;还用于当定时器中断触发时,启动定时器中断服务函数,对UART的电平状态进行采集,并根据所述电平状态和预设的解码规则生成解析结果;
[0111] 所述解码信息生成模块300,用于当完成对待解析的红外遥控信号的接收时,关闭定时器中断并开启UART中断,同时根据所有解析结果生成解码信息。
[0112] 所述中断服务模块200包括UART中断服务单元210和定时器中断服务单元220,其中定时器中断服务单元220包括采样解析子单元和接收判断子单元;
[0113] 所述采样解析子单元被配置为:
[0114] 当定时器中断触发时,启动定时器中断服务函数,在定时器中断未开启超时的条件下按照预设的采样规则判断是否进行采样,当判定结果为采样时,采集UART的电平状态;
[0115] 基于预设的解码规则对所述电平状态进行解析,获得解析结果;
[0116] 所述接收判断子单元被配置为:
[0117] 当启动定时器中断服务函数时,提取定时器中断的开启总时长,并将所述开启总时长与预设的开启超时阈值相比较,当开启总时长大于预设的开启超时阈值时,判定接收完成,否则判定接收未完成;
[0118] 当获得解析结果时记录解析数量,将所述解析数量与预设的解析数量阈值相比较,当所述解析数量达到解析数量阈值时,判定接收完成,否则判定接收未完成;
[0119] 当判定结果为接收未完成时,退出定时器中断服务函数等待下一次定时器中断触发,当判定结果为接收完成时,关闭定时器中断并开启UART中断,并根据所有解析结果生成解码信息。
[0120] 对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0121] 实施例3、一种计量装置,包含单片机和红外接收器,所述红外接收器与单片机的UART相连,所述单片机执行时实现实施例1所述方法的步骤。
[0122] 对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0123] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0124] 本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0125] 本发明是参照根据本发明的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0126] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0127] 这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0128] 需要说明的是:
[0129] 说明书中提到的“一个实施例”或“实施例”意指结合实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,说明书通篇各个地方出现的短语“一个实施例”或“实施例”并不一定均指同一个实施例。
[0130] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0131] 此外,需要说明的是,本说明书中所描述的具体实施例,其零、部件的形状、所取名称等可以不同。凡依本发明专利构思所述的构造、特征及原理所做的等效或简单变化,均包括于本发明专利的保护范围内。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,只要不偏离本发明的结构或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。