硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2718|回复: 5
收起左侧

[FreeRTOS] bsp按键处理:长按键有效后怎么删除已经有效的短按键

[复制链接]

6

主题

17

回帖

35

积分

新手上路

积分
35
发表于 2018-6-26 15:59:54 | 显示全部楼层 |阅读模式
使用中按键操作分为了长按操作或者短按操作,但是驱动里长按键写入之前会把短按键也写入,但是这次写入是不需要的,有什么好办法把这种情况给处理掉呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107220
QQ
发表于 2018-6-27 00:21:11 | 显示全部楼层
你收到按下消息后,开启一个计时功能即可(使用我们搞的软件定时器就行,比较方便),用来区分短按和长按消息。
我们这个驱动是按照标准的键盘消息生成的。
回复

使用道具 举报

36

主题

142

回帖

255

积分

高级会员

积分
255
发表于 2018-6-27 09:30:33 | 显示全部楼层
写入FIFO的写指针减一,再写入长按的
回复

使用道具 举报

6

主题

17

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2018-6-27 11:42:51 | 显示全部楼层
takent 发表于 2018-6-27 09:30
写入FIFO的写指针减一,再写入长按的

这样也会有问题:
1.写指针减之前需要判断当前FIFO是不是在缓冲区0的位置,倒是可以长按写入之前可以先读一下,把短按给读出来
2.长按时间1s,写入长按的时候可能需要通过写指针减一的短按已经被执行过了,这样结果就更糟糕了
回复

使用道具 举报

36

主题

142

回帖

255

积分

高级会员

积分
255
发表于 2018-6-27 14:39:31 | 显示全部楼层
一毛 发表于 2018-6-27 11:42
这样也会有问题:
1.写指针减之前需要判断当前FIFO是不是在缓冲区0的位置,倒是可以长按写入之前可以先 ...

我是通过界在区分,一个界面内只有长按有效,短按无执行。
回复

使用道具 举报

335

主题

2040

回帖

3050

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3050
发表于 2018-7-18 11:39:10 | 显示全部楼层
有个简单的方法,确认按键的时候,不是“按下”,而是“释放”。 监测释放的时候,按键已经计数了多久即可。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-22 00:49 , Processed in 0.243917 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表