硬汉嵌入式论坛

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

[有问必答] 求助!----按键长按时仅发送长按消息

[复制链接]

3

主题

10

回帖

19

积分

新手上路

积分
19
发表于 2016-4-15 12:47:50 | 显示全部楼层 |阅读模式
V5的板子,现在再改按键,按键有短按,长按,组合功能,每种按键状态下,串口发送不同的键码,现在问题是,短按和组合键可以实现,但是长按时,串口不仅发送了长按键码,并且也发送了短按的键码,求高手给看看如何修改,能达到要求,谢谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2016-4-15 13:48:31 | 显示全部楼层
就是这样的,短按是首次按下的消息,然后才有的长按,短按的消息是不能跨过的,就更电脑端,用键盘打印字母是一样的,你试试效果。
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2016-4-20 15:35:59 | 显示全部楼层

回 eric2013 的帖子

eric2013:就是这样的,短按是首次按下的消息,然后才有的长按,短按的消息是不能跨过的,就更电脑端,用键盘打印字母是一样的,你试试效果。 (2016-04-15 13:48) 
您的意思是,长按一定会伴着短按吗?目前我看程序里是这样的,长按的计时是在短按的基础上的,难道没有办法让长短按分开吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2016-4-20 15:39:07 | 显示全部楼层

回 tobey0124 的帖子

tobey0124:您的意思是,长按一定会伴着短按吗?目前我看程序里是这样的,长按的计时是在短按的基础上的,难道没有办法让长短按分开吗?
 (2016-04-20 15:35) 
如果仅需要长按,短按的消息不处理不就可以了。
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2016-4-20 16:32:09 | 显示全部楼层

回 eric2013 的帖子

eric2013:如果仅需要长按,短按的消息不处理不就可以了。 (2016-04-20 15:39) 
现在是短按和长按具有不同的功能,目前程序能实现,但是长按老有短按的干扰!
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2016-4-20 16:34:17 | 显示全部楼层

回 eric2013 的帖子

eric2013:如果仅需要长按,短按的消息不处理不就可以了。 (2016-04-20 15:39) 
我自己修改了程序,屏蔽掉短按键值的入站后,长按按键可以实现长按功能,但是两个功能加在一起就没办法实现了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2016-4-20 16:37:45 | 显示全部楼层

回 tobey0124 的帖子

tobey0124:您的意思是,长按一定会伴着短按吗?目前我看程序里是这样的,长按的计时是在短按的基础上的,难道没有办法让长短按分开吗?
 (2016-04-20 15:35) 
终于明白你的意思了,你的意思是你的长按打印的时候中间夹杂着短按吗,你的硬件有问题吧,不行就修改下滤波时间。

我们的板子没有这种情况哦。
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2016-4-20 16:46:55 | 显示全部楼层

回 eric2013 的帖子

eric2013:终于明白你的意思了,你的意思是你的长按打印的时候中间夹杂着短按吗,你的硬件有问题吧,不行就修改下滤波时间。

我们的板子没有这种情况哦。 (2016-04-20 16:37) 
您的意思是,按键一直长按时,不会先打印一个按键按下,再打印按键长按吗?我先就是这个情况,只要长按按键打印长按按键时,会先打印一个按键按下
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2016-4-20 16:52:51 | 显示全部楼层

回 tobey0124 的帖子

tobey0124:您的意思是,按键一直长按时,不会先打印一个按键按下,再打印按键长按吗?我先就是这个情况,只要长按按键打印长按按键时,会先打印一个按键按下 (2016-04-20 16:46)
感觉你搞复杂了,情况是这样。每个按键的,短按,长按和松手都有检测的,消息都会进FIFO。
你要是只想要用长按功能,就在读取FIFO的时候仅处理长按消息就行。
就这么简单。
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2016-4-20 16:58:41 | 显示全部楼层

回 eric2013 的帖子

eric2013:感觉你搞复杂了,情况是这样。每个按键的,短按,长按和松手都有检测的,消息都会进FIFO。
你要是只想要用长按功能,就在读取FIFO的时候仅处理长按消息就行。
就这么简单。
 (2016-04-20 16:52) 
我不是只用长按,可能我,一开始没描述清楚问题,项目要求是这样的,同一个按键有短按和长按区分,短按时,串口发送0x01,长按时发送0x02,现在我们的程序情况是这样的,比如我一直按住USER键,我希望是发送0x20,串口打印USER长按键按下,但实际是,我一直按住USER键时,出口会先打印个USER键按下,然后才会打印USER长按键按下。
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2016-4-20 17:00:47 | 显示全部楼层

回 tobey0124 的帖子

tobey0124:您的意思是,按键一直长按时,不会先打印一个按键按下,再打印按键长按吗?我先就是这个情况,只要长按按键打印长按按键时,会先打印一个按键按下 (2016-04-20 16:46) 
我希望能改成,我短按USER时,打印USER键按下,我长按USER键时,打印USER键长按下,不会出现长按时先跳出个按键按下
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2016-4-21 09:57:25 | 显示全部楼层

回 tobey0124 的帖子

tobey0124:我希望能改成,我短按USER时,打印USER键按下,我长按USER键时,打印USER键长按下,不会出现长按时先跳出个按键按下 (2016-04-20 17:00)
想到了一个办法,应该适合你的应用。
1. 把你的短按不要用按下消息发送,而是用松手消息发送0x01,这样的话,短按肯定是没问题的
2. 长按时在长按的消息里面做一个标志变量,如果进入了将标志变量置1,松手的时候检测下即可,用了长按就不要发送松手消息了。

这个方法,我觉得可行。

PS:我帮你把题目改了下,以前的题目不方便查阅。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 21:30 , Processed in 0.228515 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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