硬汉嵌入式论坛

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

[有问必答] ucos,stemwin下,非触摸屏输入的数据显示问题

[复制链接]

1

主题

2

回帖

1

积分

新手上路

积分
1
发表于 2016-6-2 11:37:10 | 显示全部楼层 |阅读模式
开发板也弄了几天了,硬件模块也都能取到数据。目前自己作了一下界面,这个也很速度,目前遇到一个问题如下:
1)硬件已经取到编码值,已经放在一个全局变量中;
2)如何在自己设计的STemWin界面刷新数据,用触摸屏点是可以刷新出数据,可是不用触摸屏激活自己设计的界面函数如何处理?
代码如下:以下是EMWIN已经完成了窗口建立,

void emWinMainApp(void)
{
    app_prevent_refresh = 0;
    //×¼±¸½¨á¢3¸ö′°¿ú£¬òÔÏÂêÇê1óÃμ½μÄóû§¶¨òå2Îêy£¬·½±ãÔú»Øμ÷oˉêyÖDê1óÃ
    WinPara.xSizeLCD = LCD_GetXSize();                //LCDÆáÄ»3ß′ç
    WinPara.ySizeLCD = LCD_GetYSize();                //LCDÆáÄ»3ß′ç
    WinPara.xSizeBM  = ICONVIEW_Width;                //í¼±ê¿í¶è
    WinPara.ySizeBM  = ICONVIEW_Height;                //í¼±ê¸ß¶è
    WinPara.ySizeBotWin=BOTWIN_YSpace;                //½çÃæÏ·½′°¿ú¸ß¶è
    WinPara.xPosWin     = MIDWIN_xPos;                            //′°¿úμÄÆeê¼Î»ÖÃ
    WinPara.yPosWin  = MIDWIN_yPos;                            //′°¿úμÄÆeê¼Î»ÖÃ
    WinPara.xSizeWin = WinPara.xSizeLCD;                        //′°¿ú3ß′ç
    WinPara.ySizeWin = WinPara.ySizeLCD-WinPara.ySizeBotWin-WinPara.yPosWin;    //′°¿ú3ß′ç
   
    /***************************éèÖÃƤ·ôé«*****************************/
    PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
    FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
    BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
    CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);
    DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
    SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
    SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
    HEADER_SetDefaultSkin(HEADER_SKIN_FLEX);
    RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);
    MULTIPAGE_SetDefaultSkin(MULTIPAGE_SKIN_FLEX);
    /***************************éèÖÃĬèÏ×Öìå**********************************/
//    _CreateXBF();
//    GUI_UC_SetEncodeUTF8();
//  GUI_SetDefaultFont(&GUI_FontHZ32);
    /*************************************************************************/
    WM_SetCallback(WM_HBKWIN, _cbBkWindow);
    WM_CreateTimer(WM_HBKWIN, 0, 1000, 0);
    /* ′′½¨èy¸ö′°¿ú ×′ì¬à¸¡¢¿ØÖÆม¢Ö÷′°¿ú*/
    //CreateMidWin();
    //CreateTopWin();   
//    CreateBotWin();
    CreateMainDis();
    ENC_Init();
    //WM_InvalidateWindow(WM_HBKWIN);
    while(1)
    {
        
        GUI_Delay(5);
//        GUI_Exec();
        
    }
如何调用emWin的函数最快的方式刷新数据?
回复

使用道具 举报

1

主题

2

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2016-6-2 17:38:07 | 显示全部楼层
我不想破坏原来GUIBuilder的架构,如何能够使用非全局变量可以实现传递。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2016-6-3 10:06:30 | 显示全部楼层
你这个不是创建了桌面窗口的回调函数了么,  WM_CreateTimer(WM_HBKWIN, 0, 1000, 0);
如果是刷新的桌面窗口上面的控件,就用这个创建的定时器的回调函数消息WM_TIMER实现刷新就可以了。
回复

使用道具 举报

1

主题

2

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2016-6-3 17:06:05 | 显示全部楼层
看过楼上的回答,我是从IO读上来的数据,直接在这个屏上的一个EDIT上的控件上刷新,要求人没有延后的感觉,类似就是按键按了一下就记录按下的数字在这个主界面上显示1,再按下就显示2,我想直接采用消息的方式发给这个界面,用什么样的办法传递给一个EDIT控制件,即快捷又不用刷全屏,感谢!
回复

使用道具 举报

335

主题

2037

回帖

3047

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3047
发表于 2016-6-6 09:54:21 | 显示全部楼层

回 fantianchen 的帖子

fantianchen:看过楼上的回答,我是从IO读上来的数据,直接在这个屏上的一个EDIT上的控件上刷新,要求人没有延后的感觉,类似就是按键按了一下就记录按下的数字在这个主界面上显示1,再按下就显示2,我想直接采用消息的方式发给这个界面,用什么样的办法传递给一个EDIT控制件,即快捷又不用刷全 .. (2016-06-03 17:06) 
可以使用WM_NotifyParent()这个函数。

读取IO后,就使用这个函数发送自己定义的消息给窗口。窗口在消息中做出更新edit的数据。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 00:12 , Processed in 0.178593 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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