打印

用中断处理或者是定时扫描按键的方法,如何确保不丢键?

[复制链接]
楼主: nelsonfung
手机看帖
扫描二维码
随时随地手机跟帖
41
outstanding| | 2013-10-16 18:10 | 只看该作者 回帖奖励 |倒序浏览
讨论的好激烈啊!!!

使用特权

评论回复
42
trumpxp| | 2013-10-16 20:46 | 只看该作者
一般是通过缓冲区实现   具体的方式   自己可以定义的   楼主

使用特权

评论回复
43
红金龙吸味| | 2013-10-17 08:11 | 只看该作者
标准的做法是用缓冲

使用特权

评论回复
44
nongfuxu| | 2013-10-17 08:45 | 只看该作者
开辟 FIFO 数据缓冲区, 是常用的不能同步数据交换的解决办法.

嗯,很不错。用硬件的思路来解决软件问题。

使用特权

评论回复
45
tiansa521| | 2013-10-17 09:04 | 只看该作者
其实可以不用防丢键的程序,实验下你的程序,用最快的速度去按不同的键,看会不会丢。按键是人操作的,需要挺长时间的。防丢键可以动态分配空间用链表的形式去保存键值,也不用操心分配多大空间了。应该不会有三个以上的键没被处理。如果那样,程序设计就有问题了。

使用特权

评论回复
46
hxb20122012| | 2013-10-17 09:13 | 只看该作者
***上有个非常经典的按键处理程序,程序只有3行,建议你去看看!!

使用特权

评论回复
47
mengno1| | 2013-10-17 11:03 | 只看该作者
刚好写的程序需要键值处理,给了很大启发啊

使用特权

评论回复
48
m564522634| | 2013-10-17 11:22 | 只看该作者
自己建一个状态表,有按键按下就在对应的状态表上置1,在开起超时功能防止系统不进行处理。主程序要做的就是查这个状态表,当查到对应该的状态表上有按键按下的时候,去执行相应的功能,执行完以后清状态表,这样你的按键就不会被其他按键打断,就是其他按键按下你不会清除你以前按下的按的状态,除非他执行了或者超时了。这样实现起来基本没什么问题了

使用特权

评论回复
49
puppet21| | 2013-10-17 11:22 | 只看该作者
如果是中断的话,可以用关中断的方式阻断后来的按键,查询方式只能用链表什么的了

使用特权

评论回复
50
m564522634| | 2013-10-17 11:24 | 只看该作者
当然如果你要做长短按,或者组合按也可以用这种方法。不过要进行些算法上的修改

使用特权

评论回复
51
Regsen| | 2013-10-17 14:41 | 只看该作者
48楼的方式比较适合,我这样处理过。对于响应比较高的按键可以直接中断中处理掉,其他的,响应要求不高的按键通过置状态位让主函数处理。

使用特权

评论回复
52
nelsonfung|  楼主 | 2013-10-17 16:18 | 只看该作者
hxb20122012 发表于 2013-10-17 09:13
***上有个非常经典的按键处理程序,程序只有3行,建议你去看看!!

什么上面?

使用特权

评论回复
53
nelsonfung|  楼主 | 2013-10-17 16:22 | 只看该作者
Regsen 发表于 2013-10-17 14:41
48楼的方式比较适合,我这样处理过。对于响应比较高的按键可以直接中断中处理掉,其他的,响应要求不高的按 ...

是的,响应不高的放在主函数里是比较好的。抛砖引玉,我这一拿出来讨论大家响应激烈啊 受教受教,大家还有好的点子欢迎在抛出来啊 让大家都学习一下:$

使用特权

评论回复
54
hxx1987| | 2013-10-17 16:39 | 只看该作者
好深奥啊、我的组合键就总是不灵敏、得好好学一下

使用特权

评论回复
55
feilusia| | 2013-10-17 16:50 | 只看该作者
nelsonfung 发表于 2013-10-17 16:18
什么上面?

原文在AMO,全文copy下来了

三行按键.rar

7.59 KB

使用特权

评论回复
56
hxb20122012| | 2013-10-17 18:12 | 只看该作者
nelsonfung 发表于 2013-10-17 16:18
什么上面?

amo上!

使用特权

评论回复
57
hxb20122012| | 2013-10-17 18:12 | 只看该作者
nelsonfung 发表于 2013-10-17 16:18
什么上面?

AMO

使用特权

评论回复
58
ayb_ice| | 2013-10-18 16:17 | 只看该作者
按键扫描基本上是最不实时的任务了,还丢失,实在有点不应该

使用特权

评论回复
59
huzi2099| | 2013-10-18 17:16 | 只看该作者
ayb_ice 发表于 2013-10-18 16:17
按键扫描基本上是最不实时的任务了,还丢失,实在有点不应该

我也是这个意思,大循环里的while太多了.

使用特权

评论回复
60
拿起书本| | 2013-10-18 20:37 | 只看该作者
长按时必须要切换模式吗,反复短按,在一定时间也会触发长安事件,怎么解决?
看来必须加快学习的步伐啊……

使用特权

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

本版积分规则