硬汉嵌入式论坛

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

[μCGUI] 在F7中用UC/GUI做了一个主页面,想通过按键的方式来移动光标

[复制链接]

27

主题

94

回帖

175

积分

初级会员

积分
175
发表于 2018-2-28 09:25:37 | 显示全部楼层 |阅读模式
      如标题,在主页面中有几个小控件如:BUTTON,image,edit等,想通过开发板上的几个KEY来实现上下左右移动和一个KEY来实现“确定”功能,按下“确定”之后就会切换画面,基本上就是这样的一个功能,不要触摸的(我的屏是不带触摸的)!
       求大佬给点思路或者有啥案例给参考参考的,感激不尽了!

回复

使用道具 举报

36

主题

2040

回帖

2148

积分

至尊会员

积分
2148
发表于 2018-2-28 10:07:29 | 显示全部楼层

学习汉哥新版emWin教程,实体按键操作章节。
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

27

主题

94

回帖

175

积分

初级会员

积分
175
 楼主| 发表于 2018-3-5 15:34:28 | 显示全部楼层
@eric2013 硬汉哥,我看了你的STemwin  V6 中的实体按键操作控件(裸机)的代码,在MainTask.c中有一段代码是void _cbTimer(GUI_TIMER_MESSAGE * pTM)
{
        uint8_t  ucKeyCode;
       
        switch (pTM->Context)
        {
                case 0x01:
                        ucKeyCode = bsp_GetKey();
                       
                        if(ucKeyCode != KEY_NONE)
                        {
                                switch (ucKeyCode)
                                {
                                       
                                        case KEY_DOWN_K3:                         /* K3键按下,实现TAB按键的功能*/
                                                GUI_SendKeyMsg(GUI_KEY_TAB, 1);
                                                break;

                                        case JOY_DOWN_U:                        /* 摇杆UP键按下,实现删除光标后的字符 */
                                                GUI_SendKeyMsg(GUI_KEY_DELETE, 1);
                                                break;

                                        case JOY_DOWN_D:                        /* 摇杆DOWN键按下,实现删除光标前的字符 */
                                                GUI_SendKeyMsg(GUI_KEY_BACKSPACE, 1);
                                                break;

                                        case JOY_DOWN_L:                        /* 摇杆LEFT键按下,实现光标左移 */
                                                GUI_SendKeyMsg(GUI_KEY_LEFT, 1);
                                                break;

                                        case JOY_DOWN_R:                        /* 摇杆RIGHT键按下,实现光标右移 */
                                                GUI_SendKeyMsg(GUI_KEY_RIGHT, 1);
                                                break;

                                        case JOY_DOWN_OK:                        /* 摇杆OK键按下,发送GUI_KEY_ENTER消息,会被聚焦的按钮或者
                                                                       WM_KEY消息所接受并处理,功能都是关闭对话框。*/
                                                GUI_SendKeyMsg(GUI_KEY_ENTER, 1);
                                                break;

                                        default:
                                                /* 其它的键值不处理 */
                                                break;
                                }
                                       
                        }
                       
                        /* 此函数一定要调用,设置重新启动,要不仅执行一次 */
                        GUI_TIMER_Restart(pTM->hTimer);
                        break;
                default:
                        break;
        }

}

其中ucKeyCode = bsp_GetKey();,bsp_GetKey()这个函数应该获得的是按键按下后返回的值是吧?但是不管我按了哪个键,打印出了ucKeyCode 的值都是等于0。为什么?
还是我理解不够?
回复

使用道具 举报

27

主题

94

回帖

175

积分

初级会员

积分
175
 楼主| 发表于 2018-3-5 16:48:20 | 显示全部楼层
   case 0x01:   其中这段代码又是什么意思?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107023
QQ
发表于 2018-3-6 01:34:41 | 显示全部楼层
Mark 发表于 2018-3-5 16:48
case 0x01:   其中这段代码又是什么意思?

看下新版emWn教程附件章节第77章。
回复

使用道具 举报

27

主题

94

回帖

175

积分

初级会员

积分
175
 楼主| 发表于 2018-3-6 08:47:14 | 显示全部楼层
eric2013 发表于 2018-3-6 01:34
看下新版emWn教程附件章节第77章。

硬汉哥,最新的链接能给我发个么。
回复

使用道具 举报

27

主题

94

回帖

175

积分

初级会员

积分
175
 楼主| 发表于 2018-3-6 08:50:16 | 显示全部楼层
eric2013 发表于 2018-3-6 01:34
看下新版emWn教程附件章节第77章。

是这个 “安富莱_STM32-V6开发板emWin教程(V2.0).pdf”里面的第77章?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107023
QQ
发表于 2018-3-7 00:14:15 | 显示全部楼层
Mark 发表于 2018-3-6 08:50
是这个 “安富莱_STM32-V6开发板emWin教程(V2.0).pdf”里面的第77章?

是的。
回复

使用道具 举报

27

主题

94

回帖

175

积分

初级会员

积分
175
 楼主| 发表于 2018-3-14 10:09:19 | 显示全部楼层
之前按照硬汉大佬的例程做了一些修改加进自己的工程中,但是按键一直没有反应,之后排查的原因是应为我的UC/GUI中延时变量并没有做增加,也就是GUI_X.c中的GUI_X_GetTime()这个函数的返回值,所以在加了一个timer定时器之后专门有一个做计时的变量来替换之前的OS_TimeMS,之后一切OK,实体按键正常工作。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 10:37 , Processed in 0.215213 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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