c语言自动按键脚本,纯C语言写的按键驱动,将按键逻辑与按键处理事件分离~

button drive

杰杰自己写的一个按键驱动,支持单双击、连按、长按;采用回调处理按键事件(自定义消抖时间),使用只需3步,创建按键,按键事件与回调处理函数链接映射,周期检查按键。

前言

前几天写了个按键驱动,参考了MulitButton的数据结构的用法,逻辑实现并不一样。

在这里感谢所有的开源开发者,让我从中学到了很多,同时网络也是一个好平台,也希望所有的开发者能形成良性循环,从网络中学知识,回馈到网络中去。感谢MulitButton的作者0x1abin,感谢两位rtt的大佬:大法师、流光。

Button_drive简介

Button_drive是一个小巧的按键驱动,支持单击、双击、长按、连续触发等(后续可以在按键控制块中添加触发事件),理论上可无限量扩展Button,Button_drive采用按键触发事件回调方式处理业务逻辑,支持在RTOS中使用,我目前仅在RT-Thread上测试过。

写按键驱动的目的是想要将用户按键逻辑与按键处理事件分离,用户无需处理复杂麻烦的逻辑事件。

Button_drive使用效果

单击与长按

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2nhPnwqF-1571148176402)(https://github.com/jiejieTop/...]

双击

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wtGvjTjq-1571148176403)(https://github.com/jiejieTop/...]

连按

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QUypOh2s-1571148176403)(https://github.com/jiejieTop/...]

连按释放

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LfsbuM1W-1571148176404)(https://github.com/jiejieTop/...]

使用方法

创建按键句柄

Button_t Button1;

Button_t Button2;

创建按键,初始化按键信息,包括按键名字、按键电平检测函数接口、按键触发电平。

Button_Create("Button1", //按键名字

&Button1, //按键句柄

Read_Button1_Level, //按键电平检测函数接口

BTN_TRIGGER); //触发电平

......

按键触发事件与事件回调函数链接映射,当按键事件被触发的时候,自动跳转回调函数中处理业务逻辑。

Button_Attach(&Button1,BUTTON_DOWM,Btn2_Dowm_CallBack); //按键单击

Button_Attach(&Button1,BUTTON_DOUBLE,Btn2_Double_CallBack); //双击

Button_Attach(&Button1,BUTTON_LONG,Btn2_Long_CallBack); //长按

.......

周期调用回调按键处理函数即可,建议调用周期20-50ms。

Button_Process(); //需要周期调用按键处理函数

需要用户实现的 2 个函数:

<
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值