lirc红外学习irrecord
2015-06-10 16:22
190 查看
Lirc version:0.9.2
1、查看是否存在当前遥控器的模板
2、设置红外设备为接收模式(只有接收模式支持LIRC_MODE_MODE2或者LIRC_MODE_LIRCCODE的设备才可以学习红外码)。
LIRC_MODE_MODE2:设备驱动本身不支持解码功能,只能读取红外的脉冲数据流。
LIRC_MODE_LIRCCODE:设备驱动本身指定了某种类型的红外码特性
下面按照常见的LIRC_MODE_MODE2来分析。
3、调用get_lengths()获取红外遥控码的特性,也是最为关键的一步。
先介绍一下struct ir_remote结构体的部分成员:
gap:两个红外码之间的间隔
repeat_gap:重复码间隔
toggle_bit_mask:切换bit(用于变码,如rc6)
struct lengths结构体,struct lengths用于链表记录连续红外脉冲:
lengths.sum为相同脉宽长度总和
lengths.count为相同脉宽个数
lengths.max为最大脉宽
lengths.min为最小脉宽
lengths.upper_bounder和lower_bounder为是否为相同脉冲的上下边界
get_lengths()首先会找到红外码之间的间隔,即gap。找到gap之后开始采集红外码的特征,包括下面一些变量:
first_repeatp:第一个重复码pulse
first_repeats:第一个重复码space
first_trail:重复码结束脉宽
first_repeat_gap:重复码间隔
first_headerp:头码pulse
first_headers:头码space
first_space:数据段的第一个space
first_pulse:数据段的第一个pulse
在获取红外的数据特征之后,get_lengths()调用
get_lengths()通过获取到上面的采样值计算出一下几个红外特征值:
- 获取红外码之间的间隔gap
- 获取红外码的起始标记header
- 获取重复码repeat,重复码间隔
- 获取结束码(opt)
- 获取数据长度(用pulse和space的值表示0和1)
若红外码为RC6码则需要通过
4、开始记录按键码值和生成文件。
1、查看是否存在当前遥控器的模板
fin = fopen(filename, "r"); if (fin != NULL) { //read config file to remote }
2、设置红外设备为接收模式(只有接收模式支持LIRC_MODE_MODE2或者LIRC_MODE_LIRCCODE的设备才可以学习红外码)。
LIRC_MODE_MODE2:设备驱动本身不支持解码功能,只能读取红外的脉冲数据流。
LIRC_MODE_LIRCCODE:设备驱动本身指定了某种类型的红外码特性
下面按照常见的LIRC_MODE_MODE2来分析。
3、调用get_lengths()获取红外遥控码的特性,也是最为关键的一步。
先介绍一下struct ir_remote结构体的部分成员:
gap:两个红外码之间的间隔
repeat_gap:重复码间隔
toggle_bit_mask:切换bit(用于变码,如rc6)
struct lengths结构体,struct lengths用于链表记录连续红外脉冲:
lengths.sum为相同脉宽长度总和
lengths.count为相同脉宽个数
lengths.max为最大脉宽
lengths.min为最小脉宽
lengths.upper_bounder和lower_bounder为是否为相同脉冲的上下边界
get_lengths()首先会找到红外码之间的间隔,即gap。找到gap之后开始采集红外码的特征,包括下面一些变量:
first_repeatp:第一个重复码pulse
first_repeats:第一个重复码space
first_trail:重复码结束脉宽
first_repeat_gap:重复码间隔
first_headerp:头码pulse
first_headers:头码space
first_space:数据段的第一个space
first_pulse:数据段的第一个pulse
在获取红外的数据特征之后,get_lengths()调用
void get_scheme(struct ir_remote *remote, int interactive)函数来分析红外的协议,目前支持RC5,RC6,RAW_CODE,SPACE_ENC四种。
get_lengths()通过获取到上面的采样值计算出一下几个红外特征值:
- 获取红外码之间的间隔gap
- 获取红外码的起始标记header
- 获取重复码repeat,重复码间隔
- 获取结束码(opt)
- 获取数据长度(用pulse和space的值表示0和1)
若红外码为RC6码则需要通过
int get_toggle_bit_mask(struct ir_remote *remote)函数获取toggle_bit_mask。到这里红外码特征获取已经结束。
4、开始记录按键码值和生成文件。
相关文章推荐
- [Python]网络爬虫(九):百度贴吧的网络爬虫(v0.4)源码及解析
- eclipse里的svn不显示版本号或修改人、修改时间
- Ubuntu 14.10安装SecureCRT 7.3
- [leetcode 11]Container With Most Water
- [FZYZOJ 1600] [NOIP福建夏令营]台阶问题
- HDU_2074 叠筐
- rust map的使用:获取某个key对应的value,如果不存在就插入一个
- [Python]网络爬虫(八):糗事百科的网络爬虫(v0.3)源码及解析(简化更新)
- [Python]网络爬虫(七):Python中的正则表达式教程
- STL标准
- POJ3126--- Prime Path
- spinner自定义布局文件设置字体大小和颜色
- maven处理依赖冲突(未完)
- 参数嗅探(Parameter Sniffing)(1/2)
- 微信支付实战详解
- 应聘互联网公司,简历应该怎么写?
- 设计模式之 - 策略模式
- 过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'
- opencv源码分析:cvCreateMTStumpClassifier最优弱分类器的代码框架
- vs中写和调试 mex