【发布时间】:2011-10-07 19:22:46
【问题描述】:
我正在使用 LIRCd 来捕获我在遥控器上按下的按键,并带有正确的配置文件。
根据文档,我必须等待阻塞函数 lirc_nextcode() 返回,然后我得到一个很好的解码行,如下所示:
0000000080bf4bb4 00 CURSOR_DOWN myremote
第一个数字是键值,接下来是该键被按下的重复次数(这里是 0,因为我只是按下并释放它),然后是键名和我的遥控器的名称.
无论如何,我想做的就是检测遥控器的按键up。
如果我按下一个按钮一段时间,这就是我得到的(每 ~ 200 毫秒换行一次):
0000000080bf4bb4 00 CURSOR_DOWN myremote
0000000080bf4bb4 01 CURSOR_DOWN myremote
0000000080bf4bb4 02 CURSOR_DOWN myremote
0000000080bf4bb4 03 CURSOR_DOWN myremote
0000000080bf4bb4 04 CURSOR_DOWN myremote
0000000080bf4bb4 05 CURSOR_DOWN myremote
0000000080bf4bb4 06 CURSOR_DOWN myremote
0000000080bf4bb4 07 CURSOR_DOWN myremote
0000000080bf4bb4 08 CURSOR_DOWN myremote
0000000080bf4bb4 09 CURSOR_DOWN myremote
0000000080bf4bb4 0a CURSOR_DOWN myremote
// I let go for 1s and press it again:
0000000080bf4bb4 00 CURSOR_DOWN myremote
因此,每当我长按一个键时,第二个数字就会增加,但一旦我松开它并再次按下它,它就会重置为 0。
我想要的是能够检测到重复停止的时刻。
现在,我可以看到如何实现密钥检测:如果lirc_nextcode() 在一定时间后没有破解,我可以认为密钥已被释放。
我要问的是:是否有另一种(更正确)方法可以做到这一点?
通过配置 LIRCd 可能吗?
或者,如果除了使用计时器之外没有其他方法可以做到这一点,那么最好的实现是什么?
确实,lirc_getcode() 是阻塞,所以每当计时器崩溃时,我都需要它返回!
编辑:顺便说一句,没有lirc 或lircd 标签,要是有就好了!
【问题讨论】:
-
谢谢你的标签,塞巴斯蒂安 :)
-
你想忽略重复的键,是这样吗?
标签: c controller repeat infrared lirc