打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ucgui的按键输入驱动
我是这么操作的!
先有一个按键扫描程序
  1. static void App_TaskKbd (void *p_arg)
  2. {
  3. /* 按键前一个状态 */
  4. CPU_BOOLEAN b1_prev;
  5. /* 按键当前状态 */
  6. CPU_BOOLEAN b1;
  7. CPU_INT08U key;

  8. (void)p_arg;

  9. /* 默认松开状态 */
  10. b1_prev = DEF_FALSE;
  11. key = 1;

  12. while (DEF_TRUE)
  13. {
  14. /* 获得按键状态 */
  15. b1 = BSP_PB_GetStatus(1);

  16. /* 当前状态 松开 前一个状态 拿下 */
  17. if ((b1 == DEF_TRUE) && (b1_prev == DEF_FALSE))
  18. {
  19. if (key == 2)
  20. {
  21. key = 1;
  22. BSP_LED_Off(2);
  23. }
  24. else
  25. {
  26. key++;
  27. BSP_LED_On(2);
  28. }
  29. /* 发送按键消息 */
  30. <FONT color=red>GUI_SendKeyMsg(GUI_KEY_F1 ,1);</FONT>
  31. /*发送消息 */
  32. OSMboxPost(App_UserIFMbox, (void *)key);
  33. }
  34. /* 新状态变成旧状态 */
  35. b1_prev = b1;
  36. /* */
  37. OSTimeDlyHMSM(0, 0, 0, 20);
  38. }
  39. }
复制代码
检测到按键的下降沿时 发送消息GUI_SendKeyMsg(GUI_KEY_F1 ,1);
GUI_KEY_F1 在GUI.h中定义。
在窗体部分代码中,在按键消息中添加 GUI_KEY_F1的处理函数。
  1. /* 按键消息 */
  2. case WM_KEY:
  3. switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
  4. {
  5. case GUI_KEY_ESCAPE:
  6. GUI_EndDialog(hWin, 1);

  7. break;
  8. case GUI_KEY_ENTER:
  9. GUI_EndDialog(hWin, 0);
  10. break;
  11. case GUI_KEY_F1:
  12. /* 发送按键被按下消息 */
  13. <FONT color=red>OnButton0Clicked(pMsg);
  14. </FONT>break;
  15. }
  16. break;
复制代码
接着就可以调用按键触发的函数!

感觉和MFC非常像!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
GPIO输入
基于有限状态机与STM32实现按键扫描
【QuartusII学习】如何通过一个按键,控制led的亮灭?
GetKeyState()和GetAsyncKeyState()的区别
如何用 30 行代码实现微信自动回复机器人?
基础新手入门
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服