硬汉嵌入式论坛

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

[emWin] emwin中如何获取编辑框显示的数值

[复制链接]

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2020-8-7 11:31:34 | 显示全部楼层 |阅读模式
我做了一个密码解锁的界面,但是用EDIT_GetText()获取编辑框中的值时程序就直接卡死没有反应。键盘用的是emwin官方例子中的numpad,请问我应该怎么样去获取从键盘输入的数值,然后与我设定的密码进行对比,如果密码正确则实现点灯。求指点,谢谢谢谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107148
QQ
发表于 2020-8-7 13:27:12 | 显示全部楼层
第1期:ATM机界面设计
http://www.armbbs.cn/forum.php?m ... 5595&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

0

主题

216

回帖

216

积分

高级会员

积分
216
发表于 2020-8-7 18:00:22 | 显示全部楼层
编辑框控件,根据设置的模式,获取内容也需要不同的函数,如果是文本模式,取内容是EDIT_GetText(),如果是数值,则需要EDIT_GetValue():EDIT 控件处于二进制、十进制或十六进制模式时有用 ,EDIT_GetFloatValue():按浮点数返回 EDIT 控件的当前值。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2020-8-10 20:23:24 | 显示全部楼层
eric2013 发表于 2020-8-7 13:27
第1期:ATM机界面设计
http://www.armbbs.cn/forum.php?mod=viewthread&tid=5595&fromuid=58
(出处: 硬汉 ...

我每次从密码解锁模块返回主界面,然后再点击进入密码解锁模块后,整个界面就卡住,点击键盘或者返回都没有用,只能复位。请问这是为什么?应该如何解决呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107148
QQ
发表于 2020-8-11 00:24:32 | 显示全部楼层
YYQX 发表于 2020-8-10 20:23
我每次从密码解锁模块返回主界面,然后再点击进入密码解锁模块后,整个界面就卡住,点击键盘或者返回都没 ...

程序设计问题。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2020-8-11 11:08:37 | 显示全部楼层

我只是在点击cancle键的时候调用了主界面函数,这样直接调用是不可以的吗?
                case MSG_PIN_OK:
                        /* 密码输入正确,LED1亮 */
//                        _DeleteNumPad();
//                        _DeleteFrame();
                        GPIO_ResetBits(GPIOF,GPIO_Pin_10);
                        break;
               
                case MSG_PIN_CANCEL:
                        /* 取消,返回到主界面 */
//                        _DeleteNumPad();
//                        _DeleteFrame();
                        GPIO_SetBits(GPIOF,GPIO_Pin_10);
                        MainCreate();
                        break;
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107148
QQ
发表于 2020-8-11 11:15:39 | 显示全部楼层
YYQX 发表于 2020-8-11 11:08
我只是在点击cancle键的时候调用了主界面函数,这样直接调用是不可以的吗?
                case MSG_PIN_OK:
                        /*  ...

逐步排查MainCreate()里面那个导致的。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2020-8-13 11:06:31 | 显示全部楼层
eric2013 发表于 2020-8-11 11:15
逐步排查MainCreate()里面那个导致的。

我想实现通过点击界面上的按钮,来判定指纹识别模块是否连接成功,若成功则进行指纹匹配并识别。请问我应该怎么进行emwin的逻辑设计?用的模块是正点的LB301。
目前我自己做的是直接创建一个按钮,在按下时调用PS_GetImage()进行判别,我这样直接做界面就卡死没有动。
哇 我觉得好难啊我一个刚接触emwin的一点头绪也没有

贴一下代码:
static void _cbFinger(WM_MESSAGE* pMsg)
{
        WM_HWIN hItem, hWin = pMsg->hWin;
       
        switch(pMsg->MsgId)
        {
                case WM_CREATE:
                        WM_SetFocus(hWin);
                        _CreateButton(hWin, "", GUI_ID_BUTTON0, 0, 0, 40, 40, 0);
                        _CreateButton(hWin, "", GUI_ID_BUTTON1, 300, 180, 80, 40, 0);
               
                        hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON0);
                        BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &bmreturn);
                break;
               
                case WM_PAINT:
                        _PaintFrame();
                        GUI_DispStringHCenterAt("fingerprints",FRAME_WIDTH >> 1, 0);
                        break;
               
                case WM_NOTIFY_PARENT:
                        if(pMsg->Data.v == WM_NOTIFICATION_RELEASED)
                        {
                                int Id = WM_GetId(pMsg->hWinSrc);
                                switch(Id)
                                {
                                        case GUI_ID_BUTTON0:
                                                MainCreate();
                                                break;
                                        case GUI_ID_BUTTON1:
                                                while(PS_GetImage() == 0xff)
                                                {
                                                        GUI_SetColor(GUI_RED);
//                                                        GUI_Delay(400);
                                                        GUI_DispStringHCenterAt("cannot connect with LB301",FRAME_WIDTH >> 1, 0);
//                                                        GUI_Delay(800);
//                                                        GUI_DispStringHCenterAt("Try to connect again...",FRAME_WIDTH >> 1, 0);
                                                }
                                                GUI_DispStringHCenterAt("Connect success",FRAME_WIDTH >> 1, 0);
                                                break;
                                }
                        }
                        break;
                       
                default:
                        WM_DefaultProc(pMsg);
        }
}

我觉得我这么做肯定是不行的但是我不知道要怎么做,求求帮帮我
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107148
QQ
发表于 2020-8-13 11:13:46 | 显示全部楼层
YYQX 发表于 2020-8-13 11:06
我想实现通过点击界面上的按钮,来判定指纹识别模块是否连接成功,若成功则进行指纹匹配并识别。请问我应 ...

不可以在按钮回调消息里面直接调用2D函数,这种操作是不对的。
其它问题你再找找
GUI_DispStringHCenterAt("cannot connect with LB301",FRAME_WIDTH >> 1, 0);
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2020-8-13 11:26:33 | 显示全部楼层
eric2013 发表于 2020-8-13 11:13
不可以在按钮回调消息里面直接调用2D函数,这种操作是不对的。
其它问题你再找找
GUI_DispStringHCente ...

那请问我要怎么样去调用它呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107148
QQ
发表于 2020-8-13 11:44:39 | 显示全部楼层
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2020-8-13 15:24:04 | 显示全部楼层
eric2013 发表于 2020-8-13 11:44
http://www.armbbs.cn/forum.php?m ... 9834&extra=page%3D1

我看了相关例程但依旧没有头绪。
手册上说在WM_PAINT中调用2D函数是可以的,但我调用也是直接卡死了
另外附上PS_GetImage()的程序:
//录入图像 PS_GetImage
//功能:探测手指,探测到后录入指纹图像存于ImageBuffer。
//模块返回确认字
u8 PS_GetImage(void)
{
        u16 temp;
        u8  ensure;
        u8  *data;
        SendHead();
        SendAddr();
        SendFlag(0x01);//命令包标识
        SendLength(0x03);
        Sendcmd(0x01);
        temp = 0x01+0x03+0x01;
        SendCheck(temp);
        data=WaitBack(500);//等待返回(ms超时机制)
        if(data)
                ensure=data[9];
        else
                ensure=0xff;
        memset(USART2_RX_BUF,0,USART2_RX_STA&0x7fff); //数据清0
        USART2_RX_STA = 0;
        return ensure;
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107148
QQ
发表于 2020-8-13 15:33:41 | 显示全部楼层
YYQX 发表于 2020-8-13 15:24
我看了相关例程但依旧没有头绪。
手册上说在WM_PAINT中调用2D函数是可以的,但我调用也是直接卡死了
另 ...

这个卡死跟emWin没关系了,剩下的实现要靠你自己了。

这个问题就帮你这么多吧,结帖。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2020-8-13 15:45:01
eric2013 发表于 2020-8-13 15:33
这个卡死跟emWin没关系了,剩下的实现要靠你自己了。

这个问题就帮你这么多吧,结帖。

啊啊啊啊啊我找到问题了!!谢谢你!!!!!!!

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

本版积分规则

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

GMT+8, 2024-5-20 15:22 , Processed in 0.242725 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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