gpt4 book ai didi

c - 使用 LIRCd 检测按键

转载 作者:行者123 更新时间:2023-12-01 16:15:32 25 4
gpt4 key购买 nike

我正在使用 LIRCd 捕获我在 Remote 上按下的键,并使用正确的配置文件。
根据文档,我必须等待阻塞函数 lirc_nextcode() 返回,然后我得到一个很好的解码行,如下所示:

0000000080bf4bb4 00 CURSOR_DOWN myremote

第一个数字是键值,接下来是按下此键的重复次数(这里是 0,因为我只是按下并释放了它),然后是键名和我的 Remote 名称.

无论如何,我想做的是检测 Remote 的 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()阻塞,所以无论何时计时器崩溃,我都需要它返回!

编辑:顺便说一句,没有 lirclircd 标签,最好有!

最佳答案

我将存储最后收到的代码并与新代码进行比较,如果代码不同则释放存储的 key 。对于我在你的帖子中看到的,代码长度似乎是固定的,所以你应该不会像我所说的那样在实现它时遇到太多问题,只需忽略最后一个字节(重复计数)即可。

IR 发射器通过在按住键的同时重复相同的代码来工作,因此您需要知道“保护时间”,即重复之间的延迟。您应该测试此延迟以查看是否没有重复出现,如果在该延迟之后没有任何反应,您可以假设用户释放了 key (KEY UP)。

简而言之:

  1. 阅读代码
  2. 将其存储在一个var中以便稍后比较
  3. 轮询端口以获取更多代码,如果没有任何消息且保护时间已过则 KEY UP=true
  4. 得到一个代码,与存储的代码进行比较,如果相等则循环标签3
  5. 如果不同则 KEY UP=true,继续循环到标签 2

关于c - 使用 LIRCd 检测按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6735482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com