搜索
bottom↓
回复: 43

请教是否有现成的按键组合功能框架?

  [复制链接]

出0入0汤圆

发表于 2015-4-5 06:53:22 | 显示全部楼层 |阅读模式
板子上的按键高级点功能可以区分长按和短按。

如果需要组合呢?就像苹果手机长按开源和音量+键等(随便举得例子)。
如果按键稍微多点,自己一点点实现就很麻烦。

但是,这些操作有共性,哪位大侠知道有没有这样的开源按键组合框架来使用?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2015-4-5 08:47:45 | 显示全部楼层
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底层就可以。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-4-5 09:03:14 | 显示全部楼层
本帖最后由 机器人天空 于 2015-4-5 09:04 编辑

感谢二楼的程序很有用
这是你们的开发板教程吧

出0入0汤圆

 楼主| 发表于 2015-4-5 09:09:57 | 显示全部楼层
骁龙科技工作室 发表于 2015-4-5 08:47
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底 ...

你的处女回复啊,呵呵

出0入0汤圆

发表于 2015-4-5 09:39:38 | 显示全部楼层
机器人天空 发表于 2015-4-5 09:03
感谢二楼的程序很有用
这是你们的开发板教程吧

本教程还未正式发布,敬请期待,多多支持

出0入0汤圆

发表于 2015-4-5 10:04:48 | 显示全部楼层
骁龙科技工作室 发表于 2015-4-5 09:39
本教程还未正式发布,敬请期待,多多支持

出0入0汤圆

发表于 2015-4-5 10:05:02 | 显示全部楼层
骁龙科技工作室 发表于 2015-4-5 09:39
本教程还未正式发布,敬请期待,多多支持

赞,按键组合,Mark

出0入0汤圆

发表于 2015-4-5 10:06:19 | 显示全部楼层
写得不好的地方请大家多多指教

出0入0汤圆

发表于 2015-4-5 10:09:29 | 显示全部楼层
按键少的话,用一个Bit表示一个键,就可以用Key = GetKey(); sw..(Key){ca... K1+K2:来处理了,多得话可以和电脑键盘一样,用按下,放开来表示,可以用较少的变量来处理,一般的键盘可以处理5个键同时操作,我们完全可以根据自己的需要来做2-3键的

出0入0汤圆

发表于 2015-4-5 10:11:01 | 显示全部楼层
2楼的东东非常好,谢谢分享。

出0入0汤圆

发表于 2015-4-5 10:19:09 | 显示全部楼层
初步看了一下那个文件,写的真好,比我的模块多出一个双击功能,可能是条件编译的原因,程序要长一些

出0入0汤圆

发表于 2015-4-5 10:19:10 | 显示全部楼层
赞,按键组合

出0入0汤圆

发表于 2015-4-5 13:57:30 | 显示全部楼层
骁龙科技工作室 发表于 2015-4-5 08:47
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底 ...


还有其他教程吗

出0入0汤圆

发表于 2015-4-5 14:26:21 | 显示全部楼层
谢谢二楼和楼主,写的蛮好的,正在认真看!!

出0入0汤圆

发表于 2015-4-5 15:19:11 | 显示全部楼层
谢谢分享。也在看。

出0入0汤圆

发表于 2015-4-5 20:41:01 | 显示全部楼层
本帖最后由 dmxfeng 于 2015-4-5 20:42 编辑

不错,下来学习下!!!!!谢谢二楼分享

出0入0汤圆

发表于 2015-4-5 20:45:37 | 显示全部楼层
2楼好人,好人一生平安……

出0入0汤圆

发表于 2015-4-7 14:33:47 | 显示全部楼层
2L请指教,你的代码测试了一下,为什么CreateKey(&Key1,cbOfKey1);放到void Key_GPIO_Config(void)里面不行呢?真奇怪,如果在void Key_GPIO_Config(void)里面创建按键按键内存不能被分配。求指导。
代码很棒。

出0入0汤圆

发表于 2015-5-3 07:23:09 | 显示全部楼层
mark。试试

出0入0汤圆

发表于 2015-5-3 07:32:38 来自手机 | 显示全部楼层
mark 好分享

出0入0汤圆

发表于 2015-5-3 07:58:34 | 显示全部楼层
下载,谢谢二楼。。。。。

出0入0汤圆

发表于 2015-5-3 15:32:36 来自手机 | 显示全部楼层
不错,很好,谢谢二楼

出0入0汤圆

发表于 2015-5-3 16:46:07 | 显示全部楼层
二楼很好,谢谢

出0入0汤圆

发表于 2015-5-7 22:04:22 | 显示全部楼层
骁龙科技工作室 发表于 2015-4-5 08:47
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底 ...

请教下, 我刚刚使用了你的按键模块。

不知道是不是BUG, 我修改长按的最短时间为2000MS,  按键10MS扫描一次。

出0入0汤圆

发表于 2015-5-7 22:07:50 | 显示全部楼层
骁龙科技工作室 发表于 2015-4-5 08:47
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底 ...

请教下, 我刚刚使用了你的按键模块。

不知道是不是BUG, 我修改长按的最短时间为2000MS,  按键10MS扫描一次。

程序里面我判断一个按键 短按, 和长按。  


定义#define REACTE               REACTE_WHEN_UP

现在 当我一直按着按键, 能进入长按分支。  长按结束后抬起按键那一下, 也响应了 短按的分支。。


问题是能不能长按后抬起那下 , 不要被检测成是按键短按?

出0入0汤圆

发表于 2015-5-10 10:38:50 | 显示全部楼层
f8023m 发表于 2015-4-7 14:33
2L请指教,你的代码测试了一下,为什么CreateKey(&Key1,cbOfKey1);放到void Key_GPIO_Config(void)里面不行 ...


你把Key1定义为函数里面的局部变量Key_GPIO_Config?这样子是不行的,这个结构体变量是用来存放按键状态的,必须在按键检测的过程中始终保持有效

出0入0汤圆

发表于 2015-5-10 10:40:41 | 显示全部楼层
nuncle 发表于 2015-5-7 22:07
请教下, 我刚刚使用了你的按键模块。

不知道是不是BUG, 我修改长按的最短时间为2000MS,  按键10MS扫 ...

我等下修改下这个bug,我在编写的时候只想到了检测每一种状态的检测,没有想到他们之间在实际使用中是互斥的

出0入0汤圆

发表于 2015-5-10 12:50:06 | 显示全部楼层
骁龙科技工作室 发表于 2015-5-10 10:40
我等下修改下这个bug,我在编写的时候只想到了检测每一种状态的检测,没有想到他们之间在实际使用中是互 ...

好的, 还有个问题。
这个版本的是不是会发生这样的现象?  多次快速的单击按钮,最后会判断出来一次长按。
我现在程序里面 获取短按后,
都调用GetKeyElement(k1,ELEMENT_LONG_PRESS,CLEAR);//清除长按
        GetKeyElement(k2,ELEMENT_LONG_PRESS,CLEAR);//清除长按
来清除下, 就不会误判有长按发生。
这个你看下 是不是要改呢?

出0入0汤圆

发表于 2015-5-10 13:09:40 | 显示全部楼层
mark一下,等完整版

出0入0汤圆

 楼主| 发表于 2015-5-11 09:42:33 | 显示全部楼层
自古二楼出真相。

出0入134汤圆

发表于 2015-5-11 13:46:27 | 显示全部楼层
以前单按键的有了那个3行的按键处理非常方便,多按键的研究下2楼的,看看好不好用。

出0入0汤圆

发表于 2015-5-11 15:32:14 | 显示全部楼层
nuncle 发表于 2015-5-10 12:50
好的, 还有个问题。
这个版本的是不是会发生这样的现象?  多次快速的单击按钮,最后会判断出来一次长按 ...

新的,修改好BUG后在此。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-5-11 15:33:45 | 显示全部楼层
不过新的程序中没有使用手册,只有2楼才有

出0入0汤圆

发表于 2015-5-11 16:09:48 | 显示全部楼层
骁龙科技工作室 发表于 2015-5-11 15:32
新的,修改好BUG后在此。

好的, 非常感谢。。 等下回去了 试试。

出0入0汤圆

发表于 2015-5-15 09:46:48 | 显示全部楼层
骁龙科技工作室 发表于 2015-5-11 15:33
不过新的程序中没有使用手册,只有2楼才有

对于你的程序请教一个问题:
若要把两个按键组合起来使用该如何实现?

比如
KEY_1短按切换LED1——LED3,长按则快速切换,双击BUZZER1响起
KEY_2短按切换LED4——LED6,长按则快速切换,双击BUZZER2响起
以上这些都可以实现。

但下面的按键功能如何实现?
当KEY_1和KEY_2同时按下时,关闭BUZZER1
当KEY_1和KEY_2再次同时按下时,关闭BUZZER2

出0入0汤圆

发表于 2015-5-19 08:25:25 | 显示全部楼层
sos9616 发表于 2015-5-15 09:46
对于你的程序请教一个问题:
若要把两个按键组合起来使用该如何实现?

这个是应用层的问题了,你就加个判断就好啦,if(GetKeyXXX>0&&GetKeyYYY>0).....然后加多一个变量。

出0入0汤圆

发表于 2015-5-23 22:44:58 | 显示全部楼层
骁龙科技工作室 发表于 2015-5-11 15:32
新的,修改好BUG后在此。

请问我更新了修改后的驱动,发现长按时间无法响应了?有哪些地方需要修改呢

出0入0汤圆

发表于 2015-10-8 14:48:10 | 显示全部楼层
谢谢2楼,代码很棒,key代码框架写的真好!

出0入0汤圆

发表于 2015-10-8 14:59:04 | 显示全部楼层
自己用状态机写一个,什么长按短按单击双击消抖组合,甚至是旋转编码器,一个搞定,一劳永逸

出0入0汤圆

发表于 2015-10-8 15:02:33 | 显示全部楼层
看了一下2L的文档,也是基于状态机的,不错,只是状态有点少

出0入0汤圆

发表于 2015-10-19 10:02:21 | 显示全部楼层
hackerboygn 发表于 2015-10-8 15:02
看了一下2L的文档,也是基于状态机的,不错,只是状态有点少

大虾能指点一下你说的状态机不,感觉还厉害,

出0入0汤圆

发表于 2015-10-19 11:18:39 | 显示全部楼层
xurenhui 发表于 2015-10-19 10:02
大虾能指点一下你说的状态机不,感觉还厉害,

请自行谷歌有限状态机(finite state machine),在FPGA里用得很普遍。
对于按键的处理,我当时参考了这个
http://www.mathertel.de/Arduino/FiniteStateMachine.aspx
http://www.mathertel.de/Arduino/OneButtonLibrary.aspx

出0入0汤圆

发表于 2015-10-19 13:18:10 | 显示全部楼层
hackerboygn 发表于 2015-10-19 11:18
请自行谷歌有限状态机(finite state machine),在FPGA里用得很普遍。
对于按键的处理,我当时参考了这 ...

谢谢,大虾

出0入0汤圆

发表于 2015-10-27 09:59:01 | 显示全部楼层
骁龙科技工作室 发表于 2015-4-5 08:47
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底 ...

你好!请问下你那个程序在编译的时候出现很多错误,应该打不开stm32f10x。h文件报错。cannot open sourse input file stm32f10x.h:no such file or directory 这个怎么解决
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 05:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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