OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3727|回复: 2

emwin 多页面切换,切换过程有约1s延时

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2021-10-11
在线时间
1 小时
发表于 2021-10-12 08:27:47 | 显示全部楼层 |阅读模式
2金钱



程序设计结构如下:

static fVoidVoid * _apfTest[] = {
  GUIDEMO_HardwareInfo,
#if 0//GUI_SUPPORT_TOUCH
  GUIDEMO_Touch,
#endif
  GUIDEMO_Speed,       
#if GUI_SUPPORT_MEMDEV
    GUIDEMO_Graph,
#endif


}

/* Run the individual demos !  */
for (_iTest = 0; _apfTest[_iTest]; /*_iTest++*/) {


        (*_apfTest[_iTest])();
}

以上是个函数指针结构,根据_iTest的值执行不同的页面函数。

/*********************************************************************
*
*       GUIDEMO_Speed
*
**********************************************************************
*/
void GUIDEMO_Speed(void) {

                rt_kprintf("GUIDEMO_Speed\n");               
                GUI_Clear();   
               
                jCreateWindow();               
                GUI_X_SignalEvent();
               
                while(1)
                {
                                #ifdef GUI_BUFFERS
                                                        GUI_MULTIBUF_Begin();
                                #endif
                                                         GUI_Exec();
                                               
                                #ifdef GUI_BUFFERS
                                                         GUI_MULTIBUF_End();
                                #endif
                       
                          GUI_X_WaitEventTimed(/*10*/3);                          
                       
                          if(TimingSet == 1)
                                {
                                          TimingSet = 0;
                                          _iTest = 2;                                          
                                                break;
                                }
                                if(AudioDevice == 1)
                                {
                                                AudioDevice = 0;
                                          _iTest = 3;
                                          break;
                                }
                                if(screen == 1)
                                {
                                                screen = 0;
                                          _iTest = 4;
                                          break;
                                }
                                if(projector == 1)
                                {
                                                projector = 0;
                                          _iTest = 5;
                                          break;
                                }
                                if(ESC_MENU == 1)
                                {
                                                ESC_MENU = 0;
                                          _iTest = 0;
                                          break;
                                }
                                if(RelaySetPage2 == 1)
                                {
                                                RelaySetPage2 = 0;
                                          _iTest = 16;
                                          break;
                                }
                                if(MENU_REFRESH == 1)
                                {
                                                MENU_REFRESH = 0;
                                          break;
                                }
                }
}


/*********************************************************************
*
*       GUIDEMO_Graph
*
**********************************************************************
*/

void GUIDEMO_Graph(void) {


       rt_kprintf("graph\n");
       GUI_Clear();
       
        wCreateWindow();       
        GUI_X_SignalEvent();
               
        while(1)
        {
                        #ifdef GUI_BUFFERS
                                                GUI_MULTIBUF_Begin();
                        #endif
                                                 GUI_Exec();
                                       
                        #ifdef GUI_BUFFERS
                                                 GUI_MULTIBUF_End();
                        #endif
               
                        GUI_X_WaitEventTimed(/*10*/3);                 
               
                  if(RelaySet == 1)
                        {                                                       
                                        RelaySet = 0;       
                                        _iTest = 1;                                       
                                        break;
                        }
                        if(AudioDevice == 1)
                        {
                                        AudioDevice = 0;
                                  _iTest = 3;
                                  break;
                        }
                        if(screen == 1)
                                {
                                                screen = 0;
                                          _iTest = 4;
                                          break;
                                }
                                if(projector == 1)
                                {
                                                projector = 0;
                                          _iTest = 5;
                                          break;
                                }
                                if(ESC_MENU == 1)
                                {
                                                ESC_MENU = 0;
                                          _iTest = 0;
                                          break;
                                }
                                if(MENU_REFRESH == 1)
                                {
                                                MENU_REFRESH = 0;
                                          break;
                                }
               
        }
}


问题:发现两个页面切换有大约1S的时延,不知如何解决?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

881

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4199
金钱
4199
注册时间
2019-9-4
在线时间
881 小时
发表于 2021-10-12 10:11:10 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2021-10-13 02:02:18 | 显示全部楼层
继续努力。
好好优化底层吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 22:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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