lirc红外学习irrecord

本文介绍了使用LIRC进行红外遥控学习的过程,包括检查遥控器模板、设置红外设备模式、获取红外码特性及记录按键值等内容。适用于希望了解LIRC工作原理及实现细节的技术人员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Lirc version:0.9.2


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、开始记录按键码值和生成文件。

   











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值