令LIRC库支持repeat的识别、接收
令LIRC库支持发送重复码的方法是:在LIRC的配置文件中记录重复码的相关数据(repeat的高低电平持续时间),让LIRC库能够识别重复码。
需要发送重复码的前提是能够接收重复码(在/etc/lirc/lircd.conf文件中包含对应的数据)
/etc/lirc/lircd.conf的头部信息
头部信息保存了红外协议的协议部分的数据,demo如下:(注意:各个遥控器学习完成后,得到的头部数据不一定相同,包括各种字段可能不相同,如部分遥控器会有toggle_bit_mask字段而部分没有)
begin remote
name factory_remote
bits 16
flags SPACE_ENC|CONST_LENGTH
eps 30
aeps 100
header 9000 4500
one 507 1940
zero 507 646
ptrail 507
repeat 9100 2000
pre_data_bits 16
pre_data 0x1109
gap 108000
toggle_bit_mask 0x0
frequency 38000
duty_cycle 33
begin codes
codes ...
end codes
end remote
当红外学习结束后没有学习到重复码协议的解决办法
通过LIRC学习红外协议后,得到的文件中可能没有包含重复码数据,即/etc/lirc/lircd.conf文件的前几十行的协议数据中没有包含
repeat 9100 2050
等类似的字段,即为没有成功学习到红外协议的重复码部分,需要手动对这个文件做一点修改使之支持重复码。
将重复码数据增加到/etc/lirc/lircd.conf中
- 根据自己的协议的资料,查看其重复码的数据格式,将其转换为电平时间,并根据文件里面已有的协议数据进行误差调整;
- 将得到的电平时间按照格式
repeat 高电平时间 低电平时间
的格式写入到文件里面zero字段之后(如果你的文件有ptrail字段,则写到该字段之后); - 写入格式为:另起一行,空两格,写字段(即repeat),两个Tab,写电平时间
- 完成,
sudo /etc/init.d/lirc restart; irw
按住遥控器按键进行repeat测试。
使用irsend send_start可以实现重复发送按键
irsend send_start remote_name KEY_NAME