解码红外遥控信号的方法和装置的制作方法

文档序号:6698846阅读:179来源:国知局
专利名称:解码红外遥控信号的方法和装置的制作方法
技术领域
本发明涉及红外通信领域,尤其涉及一种解码红外遥控信号的方法和装置。
背景技术
红外遥控技术已广泛应用于电视、音响、机顶盒等电子设备上,此类设备通常采用 红外信号接收器件(以下简称为"接收器件")和红外信号解码模块(以下简称为"解码模 块")来处理红外遥控信号。接收器件对红外遥控信号的光电转换、放大、检波、整形,并解 调出所述红外遥控信号的编码脉冲。解码模块则对所述编码脉冲进行分析,获得包含红外 遥控信号的二进制码。
目前,解码模块可以采用硬件和软件两种方式的实现 硬件方式采用专用的解码芯片对编码脉冲进行处理,由于需要专用的芯片,造成 生产成本相对较高。 软件方式则是由处理器中的程序按照遥控编码脉冲的信号格式进行解码,常规的 做法是使用定时器及中断机制测量编码脉冲的宽度,根据得到的编码脉冲的宽度,确定遥 控编码脉冲的信号格式,再根据所述信号形式进行分析以实现解码,这种做法虽然成本较 低,但占用系统资源,且对实时性要求较高,当处理器繁忙时容易出错。 现有技术中还提供另外一种软件方式采用串口对来自接收器件的编码脉冲进行 分析处理,对得到的码字进行精确匹配,得到对应的解码结果。这种做法成本低,而且对处 理的实时性要求不高。但在实现过程中,发明人发现现有技术仍然存在如下问题由于红外 遥控器本身存在个体差异以及外界环境中其他红外信号干扰等原因,实践应用中红外接收 器件接收到的码字很可能会发生误码,如果对接收到的码字精确匹配,可能会出现判断错 误的问题。

发明内容
本发明实施例提供一种解码红外遥控信号的方法和装置,用于提高解码模块的兼 容性和抗干扰性。 本发明实施例提供一种解码红外遥控信号的方法,包括 从携带按键编号信息的红外遥控信号中获取待解码的码字; 获取所述待解码的码字与预先保存的全部标准码字的编码距离; 将所述编码距离最小的一个标准码字对应的按键编号作为所述红外遥控信号的
解码结果。
本发明实施例提供一种解码红外遥控信号的装置,包括 第一获取模块,用于从携带按键编号信息的红外遥控信号中获取待解码的码字;
第二获取模块,用于获取所述第一获取模块获取的所述待解码的码字与预先保存 的全部标准码字的编码距离; 确定模块,用于将所述第二获取模块获取的编码距离最小的一个标准码字对应的按键编号作为所述红外遥控信号的解码结果。 本发明实施例提供的解码红外遥控信号的方法和装置,通过获取所述红外遥控信 号中待解码的码字与预先保存的全部标准码字的编码距离,确定所述红外遥控信号的解码 结果,排除了红外遥控器本身存在个体差异以及外界环境中其他红外信号干扰对解码结果 的影响,提高解码模块的兼容性和抗干扰性,保证了解码的准确性。


图1为本发明实施例提供的解码红外遥控信号的方法流程图; 图2为本发明实施例提供的用于实现解码红外遥控信号的硬件连接示意图; 图3为本发明实施例提供的解码软件的结构示意图; 图4为本发明实施例提供的NEC格式的红外遥控信号的码字波形图; 图5为本发明实施例提供的编码距离的计算方法示意图; 图6为本发明另一实施例提供的解码红外遥控信号的方法流程图; 图7为本发明实施例提供的解码红外遥控信号的装置结构示意图; 图8为图7所示实施例中确定模块的结构示意图; 图9为图7所示实施例中的装置的另一结构示意图。
具体实施例方式
下面结合附图对本发明实施例提供的技术方案作进一步介绍. 如图1所示,本发明实施例提供的解码红外遥控信号的方法,包括 步骤101、从携带按键编号信息的红外遥控信号中获取待解码的码字; 步骤102、获取所述待解码的码字与预先保存的全部标准码字的编码距离; 步骤103、将所述编码距离最小的一个标准码字对应的按键编号作为所述红外遥
控信号的解码结果。 本发明实施例提供的解码红外遥控信号的方法,通过获取所述红外遥控信号中待 解码的码字与预先保存的全部标准码字的编码距离,确定所述红外遥控信号的解码结果, 排除了红外遥控器本身存在个体差异以及外界环境中其他红外信号干扰对解码结果的影 响,提高解码模块的兼容性和抗干扰性,保证了解码的准确性。 为使本领域技术人员更加清楚地理解本发明提供的技术方案,下面结合具体应用 场景作进一步介绍 本发明实施例提供的技术方案,对硬件的要求仅需具备处理器和串口即可,硬件 成本较低。如常见的配置有串口的个人计算机PC就可以为一个的硬件平台。本发明实施 例选择一款内置有通用异步收发器UART的微控制器MCU作为硬件平台。其中硬件的连接 示意图如图2所示,将MCU的UART配置为串口模块,并将其输入引脚TXR与接收器件的输 出引脚OUT相连,MCU内运行解码软件。 如图3所示,所述解码软件有主程序301 、初始化模块302、串口读取模块303、编码 距离计算模块304、红外解码模块304组成。 所述主程序301是整个解码软件的入口和循环主体,在调用初始化模块302后进 入主循环,定时调用红外解码模块305 ;
初始化模块302用于按照预设的参数对串口进行初始化; 串口读取模块303用于从串口读取红外遥控信号中待解码的码字; 编码距离计算模块304用于计算所述待解码的码字与全部标准码字的编码距离; 红外解码模块305用于根据编码距离确定所述待解码的码字对应的解码结果。 下面分别对所述初始化模块302、编码距离计算模块304和红外解码模块305作以
详细说明 所述初始化模块需要完成以下两个步骤
第一步、确定波特率 波特率是由红外遥控信号中编码脉冲的最短宽度(又称为持续时间)决定的,其 波特率对应的采样间隔大于或等于红外编码脉冲的最短宽度,现有技术中是将波特率确定 为红外遥控信号中最短脉冲宽度值的倒数 波特率=1/最短脉冲宽度值 (1) 采用上述的波特率,最短脉冲宽度对应从串口读取到的数据的一个比特位。当存 在干扰的时,该比特可能出现误码。由于仅用一个比特位来表示这个最短脉冲,故一旦出现 误码,根本无法采用任何纠错手段进行恢复。 为了避免出现无码的情况,本发明提供另一种波特率的算法。为区别现有技术方 案中的波特率,以下称现有技术中的波特率为第一波特率,本发明实施例中的波特率为第 二波特率,第二波特率的最小值是第一波特率的两倍。本发明采用如下公式确定本发明实 施例采用的第二波特率 第二波特率=第一波特率*N = (1/最短脉冲宽度值)*N
其中N二2,3,4... (2) 显然,采用第二波特率, 一个最短脉冲将对应于多个比特位,而干扰信号相对于脉 冲宽度来说是很短暂的,通常只能影响到一个比特位,其余未受影响的比特位提供的信息 可以用于随后的纠错处理。 在本发明实施例中以编码格式为NEC格式的红外遥控信号确定第二波特率进行 说明。 如图4所示,为NEC格式的红外遥控信号的码字波形图,可以得到最短脉宽度值 为0. 56毫秒,此处获取最短脉冲宽度值的方法为现有技术,此处不再赘述。采用上述公式 (2),设置N = 3,计算得到本发明实施例提供的第二波特率为5357。
第二步、生成标准码字表 本发明实施例中所述标准码字是在所述接收器件的输出接口连接到MCU的串口 的输入接口后,采用第一步确定的第二波特率,在无干扰的环境下从串口读取到的与红外 遥控器各按键红外遥控信号相对应的二进制数据。 对于"无干扰的环境",并无严格的定义,主要是指在清除环境中其它波长相近的 红外源下,将红外遥控器在较近的距离上正对接收器件。 在获取标准码字的过程中,可通过按下多次红外遥控器同一按键,获取该按键对 应的标准码字。如果接收到的码字不完全一致,可以将出现次数最多的码字作为该按键的 标准码字。 采用上述方法获取遥控器所有按键的标准码字后,将其记录到一张表(以下简称为"标准码字表")中。
在本发明实施例中以配置编码格式为NEC的标准码字表为例进行说明
配置串口的参数如下
1)波特率为5357 ; 2) 8位数据位,与一个字节的8个比特位对应; 3)无奇偶校验,实际应用中由红外遥控信号的编码格式决定,在本发明实施例中 NEC格式的红外遥控信号未采用此种检错方式; 4) 1位停止位,用于将尽可能多的比特位作为数据读入,停止位的个数由实际应用
中的编程环境决定,本发明实施例采用C语言编程,停止位的个数要求大于或等于1位。 在配置好串口的参数后,获取红外遥控器上同一编号的按键至少两次输出的红外
遥控信号的码字,选取所述至少两次输出的码字中出现次数最多的码字作为标准码字。
下面给出了标准码字表的一个片断,采用C语言写成,简单介绍如下 结构TJ(eyM即用于记录一个按键的标准码字,其第一个成员uKeyId用于存储按
键的编号,而第二个成员abCode用于记录从串口读取到的标准码字。 结构数组atCodeTable即为标准码字表,下述程序中仅给出了对应于IO个数字键 的部分,其余部分可参考数据键对应的代码进行实现,此处不再赘述。由程序可以看出各数 字键的标准码字开头部分四个字节都是相同的,这是因为NEC格式的开头部分对应于起始 码和用户识别码,而每种遥控器上所有按键的这两部分都是相同的。
typedef struct /*普通键值映射结构*/ { unsigned int uKeyld ; /氺按键+示i口、氺/ unsigned char abCode[32] ; /氺f示7佳石马字氺/ } T_KeyMap ; T_KeyMap atCodeTable []= {
_KEY_0NE, (0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xlC, 0xlC, OxlC,
0xFC, 0xFC, 0xFC, 0xlC, 0xFC, 0xlC, OxlC, OxlC}}, _KEY_TW0, (0xFC, 0xFC, 0xFC, 0xFC, 0xlC, 0xlC, 0xlC, OxlC,
0xFC, 0xFC, 0xlC, 0xFC, 0xlC, 0xlC, OxlC, OxlC}}, KEY_THREE, {OxFC,OxFC, OxFC, OxFC, OxFC, OxFC, OxlC, OxlC,
OxlC, OxlC, OxFC, OxFC, OxFC, OxlC, OxlC, OxlC}}, KEY_F0UR, (OxFC, OxFC, OxFC, OxFC, OxlC, OxFC, OxlC, OxlC,
OxlC, OxFC, OxlC, OxFC, OxlC, OxlC, OxlC, OxlC}}, KEY_FIVE, (OxFC, OxFC, OxFC, OxFC, OxFC, OxlC, OxlC, OxlC,
/*' 1'
/承,2'
/*' 3'
/承,4'
{RMTCODE—
{RMTCODE—
{RMTC0DE_
{RMTCODE—
{RMTCODE—/*' 5'

/*' 6'

/*' 7'

/*' 8'

/*' 9'

/*' 0'




0xlC, OxFC, OxlC, OxFC, OxlC, OxlC, OxlC, OxlC}}, {RMTCODE_KEY_SIX, (OxFC, OxFC, OxFC, OxFC, OxlC, OxFC, OxlC, OxlC,
OxlC, OxlC, OxFC, OxFC, OxlC, OxlC, OxlC, OxlC}}, {RMTCODE_KEY_SEVEN, (OxFC, OxFC, OxFC, OxFC, OxFC, OxFC, OxFC, OxlC,
OxlC, OxlC, OxlC, OxFC, OxFC, OxlC, OxlC, OxlC}}, {RMTCODE_KEY_EIGHT, (OxFC, OxFC, OxFC, OxFC, OxlC, OxlC, OxlC, OxlC,
OxFC, OxFC, OxFC, OxlC, OxlC, OxlC, OxlC, OxlC}}, {RMTCODE_KEY_NINE, (OxFC, OxFC, OxFC, OxFC, OxFC, OxlC, OxFC, OxlC,
OxlC, OxlC, OxFC, OxlC, OxlC, OxlC, OxlC, OxlC}}, {RMTCODE_KEY_ZERO, (OxFC, OxFC, OxFC, OxFC, OxlC, OxlC, OxlC, OxlC,
OxFC, OxFC, OxFC, OxFC, OxFC, OxlC, OxlC, OxlC}}, ~其余按键的标准码字略去*/
下面对所述编码距离计算模块进行详细介绍
所述编码距离是通过将两个二进制序列逐个比特位进行比较,统计其中不同的比 特位的总数。 具体的计算方法如下将从串口接收到的码字与标准码表中的各条目逐个进行对 照,计算其与每个条目的编码距离——实际上编码距离就是衡量接收到的码字与该条目标 准码字差别大小的量化指标。 例如,如图5所示,接收的码字为01101010,标准码字为00111100,将上述两个码 字逐个比特位进行比较,确定第二、四、六和七位的比特位上对应的数值不同,总数为4个, 所以比较得到的编码距离为4。 在所述编码距离计算模块计算得到多个编码距离后,所述红外解码模块确定与接 收到的码字编码距离最小的那一个条目,将所述编码距离最小的条目对应的按键作为此次 红外遥控器上被按下的按键。 为防止干扰情况下的误判,可以设定当最小的编码距离超过某个值时忽略接收到 的码字,即确定当前的解码失败。 在解码过程中还可能出现编码距离最小的条目有多个的情况,此时可以认为当前 解码失败。 需要说明的是,如果这种情况发生概率较高的话,则应该提高第二波特率,即提高 公式(2)中N的取值,这样通过提高接收到的码字的长度,而干扰信号通常仅能干扰一个比 特位,故提高第二波特率能够提高解码模块在干扰情况下的分辨率。 在对各个模块作以介绍后,下面对本发明实施例提供的解码红外遥控信号的方法进行详细介绍,如图6所示 步骤601、调用串口读取模块,从串口读取红外遥控信号的码字; 步骤602,判断从串口是否读取到待解码的码字,是,执行步骤603 ;否,本次解码
结束; 步骤603,遍历标准码字表(atCodeTable),调用编码距离计算模块,计算每个条 目的标准码字(abCode字段)与接收到的码字的编码距离;
步骤604,确定计算得到的所有编码距离中的最小值; 步骤605,判断具有编码距离最小值的条目是否超过1个,是,执行步骤606,否则, 执行步骤608 ; 步骤606,判断编码距离最小值是否大于8,是执行步骤608,否则,执行步骤607 ;
步骤607,认为解码成功,将编码距离最小值对应的条目的按键编号(uKeyld字
段)作为解码结果; 步骤608,认为解码失败。 需要说明的是,通过实际应用过程的检测,本发明实施例提供的技术方案,在大多
数应用环境下均能对抗干扰,不会发生解码错误,所以步骤408是可选步骤。 本发明实施例以编码格式为NEC的红外遥控信号为例进行说明,但不限于此,对
于编码格式的NEC红外遥控信号均适用,因流程和方法相似,此处不再赘述。 本发明实施例提供的解码红外遥控信号的方法,通过获取所述红外遥控信号中待
解码的码字与预先保存的全部标准码字的编码距离,确定所述红外遥控信号的解码结果,
排除了红外遥控器本身存在个体差异以及外界环境中其他红外信号干扰对解码结果的影
响,提高解码模块的兼容性和抗干扰性,保证了解码的准确性;采用至少两倍于第一波特率
的第二波特率对红外遥控信号进行采样,使干扰情况下接收的码字仍然有足够的信息用于
解码,提高解码的效率;采用编码距离阈值对最小编码距离进行管理,增加解码的准确性;
采用串口接收红外遥控信号,在不增加硬件成本的前提下,获取红外遥控信号,实现方法简单。 如图7所示,本发明实施例提供一种解码红外遥控信号的装置,包括 第一获取模块701,用于从携带按键编号信息的红外遥控信号中获取待解码的码
字; 第二获取模块702,用于获取所述第一获取模块701获取的所述待解码的码字与 预先保存的全部标准码字的编码距离; 确定模块703,用于将所述第二获取模块702获取的编码距离最小的一个标准码
字对应的按键编号作为所述红外遥控信号的解码结果。 进一步的,所述第一获取模块采用串口获取待解码的码字。 进一步的,所述第一获取模块701,具体用于按照所述红外遥控信号的至少两倍
波特率对所述红外遥控信号进行采样,获取所述红外遥控信号中待解码的码字,其中所述
波特率为所述红外遥控信号中最短脉冲宽度值的倒数。 进一步的,如图8所示,所述确定模块703可以进一步包括 第一确定单元801,用于确定所述最小的编码距离是否大于编码距离阈值; 第二确定单元802,用于在所述第一确定单元确定大于所述编码距离阈值时,确定对所述红外遥控信号的解码结果失败;否则,确定所述编码距离最小的一个标准码字对应
的按键编号为所述红外遥控信号的解码结果。
可选的,如图9所示,所述装置还可以进一步包括 第三获取模块901,用于获取红外遥控器上同一编号的按键至少两次输出的红外 遥控信号的码字; 选取模块902,用于选取所述第三获取模块获取的至少两次输出的码字中出现次 数最多的码字作为标准码字。 本发明实施例提供的解码红外遥控信号的方法,通过获取所述红外遥控信号中待 解码的码字与预先保存的全部标准码字的编码距离,确定所述红外遥控信号的解码结果, 排除了红外遥控器本身存在个体差异以及外界环境中其他红外信号干扰对解码结果的影 响,提高解码模块的兼容性和抗干扰性,保证了解码的准确性;采用至少两倍于第一波特 率的波特率对红外遥控信号进行采样,使干扰情况下接收的码字仍然有足够的信息用于解 码,提高解码的效率;采用编码距离阈值对最小编码距离进行管理,增加解码的准确性;采 用串口接收红外遥控信号,在不增加硬件成本的前提下,获取红外遥控信号,实现方法简 单。本发明实施例提供的技术方案可直接应用于红外遥控信号的接收,也可应用于红外通 信信息的传输。 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
权利要求
一种解码红外遥控信号的方法,其特征在于,包括从携带按键编号信息的红外遥控信号中获取待解码的码字;获取所述待解码的码字与预先保存的全部标准码字的编码距离;将所述编码距离最小的一个标准码字对应的按键编号作为所述红外遥控信号的解码结果。
2. 根据权利要求1所述的方法,其特征在于,所述从携带按键编号的红外遥控信号中 获取待解码的码字,包括按照所述红外遥控信号的至少两倍波特率对所述红外遥控信号进行采样,获取所述红 外遥控信号中待解码的码字,其中所述波特率为所述红外遥控信号中最短脉冲宽度值的倒 数。
3. 根据权利要求1所述的方法,其特征在于,所述将所述编码距离最小的一个标准码 字对应的按键编号作为所述红外遥控信号的解码结果,包括确定所述最小的编码距离是否大于编码距离阈值;如果大于,确定对所述红外遥控信号的解码结果失败;否则,确定所述编码距离最小的 一个标准码字对应的按键编号为所述红外遥控信号的解码结果。
4. 根据权利要求1所述的方法,其特征在于,所述从携带按键编号的红外遥控信号中 获取待解码的码字之前,还包括获取红外遥控器上同一编号的按键至少两次输出的红外遥控信号的码字; 选取所述至少两次输出的码字中出现次数最多的码字作为标准码字。
5. 根据权利要求1所述的方法,其特征在于,还包括如果编码距离最小的标准码字的条目大于一个,确定所述所述红外遥控信号的解码失败。
6. 根据权利要求1至5任一权利要求所述的方法,其特征在于,所述红外遥控信号是通 过串口接收的。
7. —种解码红外遥控信号的装置,其特征在于,包括第一获取模块,用于从携带按键编号信息的红外遥控信号中获取待解码的码字; 第二获取模块,用于获取所述第一获取模块获取的所述待解码的码字与预先保存的全部标准码字的编码距离;确定模块,用于将所述第二获取模块获取的编码距离最小的一个标准码字对应的按键编号作为所述红外遥控信号的解码结果。
8. 根据权利要求7所述的装置,其特征在于,所述第一获取模块,具体用于按照所述红外遥控信号的至少两倍波特率对所述红外 遥控信号进行采样,获取所述红外遥控信号中待解码的码字,其中所述波特率为所述红外 遥控信号中最短脉冲宽度值的倒数。
9. 根据权利要求7所述的装置,其特征在于,所述确定模块,包括 第一确定单元,用于确定所述最小的编码距离是否大于编码距离阈值; 第二确定单元,用于在所述第一确定单元确定大于所述编码距离阈值时,确定对所述红外遥控信号的解码结果失败;否则,确定所述编码距离最小的一个标准码字对应的按键 编号为所述红外遥控信号的解码结果。
10.根据权利要求7所述的装置,其特征在于,还包括第三获取模块,用于获取红外遥控器上同一编号的按键至少两次输出的红外遥控信号 的码字;选取模块,用于选取所述第三获取模块获取的至少两次输出的码字中出现次数最多的 码字作为标准码字。
全文摘要
本发明公开了一种解码红外遥控信号的方法和装置,涉及红外通信领域;为解决现有技术中兼容性低和抗干扰性差的问题而发明。所述方法,包括采用较高的波特率对红外信号进行采样,从携带按键编号信息的红外遥控信号中获取待解码的码字;获取所述待解码的码字与预先保存的全部标准码字的编码距离;将所述编码距离最小的一个标准码字对应的按键编号作为所述红外遥控信号的解码结果。本发明实施例提供的技术方案可直接应用于红外遥控信号的接收,也可应用于红外通信信息的传输。
文档编号G08C23/04GK101697249SQ200910211208
公开日2010年4月21日 申请日期2009年11月2日 优先权日2009年11月2日
发明者朱晓斌 申请人:中兴通讯股份有限公司;
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1