硬汉嵌入式论坛

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

[emWin] emwin 中调用有while 的自定义函数,切换页面,遇到死机问题

[复制链接]

16

主题

18

回帖

66

积分

初级会员

积分
66
发表于 2019-9-20 12:39:24 | 显示全部楼层 |阅读模式
int scan()
{

       .................


        delayCnt = 20
        while(delayCnt--)   //扫码等待20s
        {
       .................
            GUI_Delay(10);

       .................

       }


       .................


}

static void _CallBackButton1(WM_MESSAGE * pMsg)
{
....................
    switch (pMsg->MsgId)
    {        
        case WM_INIT_DIALOG:
        {
                 。。。。
               scan();
             ........
               break;
        }
    }
。。。。。。。。。。。。
}

static void _CallBackButton2(WM_MESSAGE * pMsg)
{
....................
    switch (pMsg->MsgId)
    {        
        case WM_INIT_DIALOG:
        {
                 。。。。
               scan();
             ........
               break;
        }
    }
。。。。。。。。。。。。
}


问题是来回切换页面(scan 里面的循环没有跳出时候,切页面),分别进入两个回调函数,会死机,请问有啥好的方法实现这个扫描的功能?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117619
QQ
发表于 2019-9-20 14:18:59 | 显示全部楼层
不要在回调函数里面嵌套调用 GUI_Delay(10);,这是错误的做法
回复

使用道具 举报

16

主题

18

回帖

66

积分

初级会员

积分
66
 楼主| 发表于 2019-9-21 08:06:59 | 显示全部楼层
为什么不能用GUI_Delay呢 ,如果确实有延时的需求,用vTaskDelay 可以代替么?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117619
QQ
发表于 2019-9-23 00:57:17 | 显示全部楼层
闻鸡起舞 发表于 2019-9-21 08:06
为什么不能用GUI_Delay呢 ,如果确实有延时的需求,用vTaskDelay 可以代替么?

他会调用窗口管理器函数,造成嵌套调用,emWin不推荐这种做法。

使用emWin的定时器函数就行。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-18 22:14 , Processed in 0.050204 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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