打印
[C语言]

一个矛盾的按键功能实现问题

[复制链接]
600|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
〽️〽️〽️|  楼主 | 2020-11-14 23:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 〽️〽️〽️ 于 2020-11-14 23:17 编辑

1. 有12个独立的按键,分别是KEY01~KEY12
2. 有3种按键功能   I.单个按键按下,如KEY9按下,串口立即发送,
                           II.两个按键组合按下,如果KEY06+KEY12 同时按下也要立即发送(但是组合时人为肯定0.5s内误差还是有的)
                          III.当某个按键,或者某个组合一直按着不放手,那串口需要0.5秒发送一次,不能太快的发。

3. 不允许组合按键先发送某个单键值, 比如KEY06和KEY12同时按下,但实际KEY06先按下100ms,KEY12后按下100ms,那不能将KEY06先串口发了
    等看到KEY12也按下再发组合值

4. 那么问题来了,这种情况怎么处理呢? 单个想按下快发出响应, 组合的2个是KEY1~KEY12任意两两组合的,怎么才能因为人为无法完全同步按下而做到
    单键很快发,组合键也很快发且不错发?


使用特权

评论回复

相关帖子

沙发
hwpga| | 2020-11-14 23:54 | 只看该作者
本帖最后由 hwpga 于 2020-11-14 23:58 编辑

一些功能键加个松手检测,按键弹起后触发


使用特权

评论回复
板凳
座机呀| | 2020-11-16 00:01 | 只看该作者
不清楚你说的很快是多长时间,假设是T0
那么可以把单独一个按键稳定地按下超过T0就响应独立按键的键值
如果稳定按下还没到T0就检测到另一个按键按下,则响应组合按键的键值
响应键值后可以把相关按键锁住,直到相关按键都释放之前都不响应和这些按键相关的其它键值,这样可以避免组合按键的松手不同步误响应
比如K1和K2此时判定为组合键值已响应,那么在K1和K2都释放前都不响应K1独立键值,K2独立键值和有关K1,K2的其它组合键值
至于键值长按后连发键值,可以在响应键值后做个倒计时器
想的不一定对,建议实际试一下效果

使用特权

评论回复
地板
ayb_ice| | 2020-11-16 09:21 | 只看该作者
需求有矛盾的地方

使用特权

评论回复
5
renwocai| | 2020-11-16 20:58 | 只看该作者
你要有组合键的功能单个按键就不能发太快,否则在逻辑上就自相矛盾了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

377

帖子

2

粉丝