硬汉嵌入式论坛

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

[emWin] 关于实时显示的问题

[复制链接]

5

主题

12

回帖

5

积分

新手上路

积分
5
发表于 2014-7-18 09:58:48 | 显示全部楼层 |阅读模式
版主,您好!
在用emWinGUIBuilder做窗口界面,希望在窗口的右上角显示时间,如果用TEXT小工具时要把显示的时间放进数组里面然后再TEXT_SetText,但是时间不是按照一秒一秒的增加,而是二十多秒增加一次。我把显示时间的部分放在Case :WM_PAINT下。由于是新手不太理解想WM_INIT_DIALOG一节WM_PAINT这些消息ID是由谁改变的,程序中只调用GUI_CreatDialogBox。
谢谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107220
QQ
发表于 2014-7-18 10:02:58 | 显示全部楼层
把你写的程序贴出来一下,我给你改下,改个能用的。其实使用定时器是最好的方式。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107220
QQ
发表于 2014-7-18 10:05:15 | 显示全部楼层
建议你看下我emWin教程的第36章
1.png
回复

使用道具 举报

5

主题

12

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2014-7-18 15:31:49 | 显示全部楼层
// USER START (Optionally insert additional includes)
#include "GUI.h"
#include "Calendar.h"
// USER END

#include "DIALOG.h"

/*********************************************************************
*
*       Defines
*
**********************************************************************
*/
#define ID_WINDOW_0   (GUI_ID_USER + 0x00)
#define ID_TEXT_0     (GUI_ID_USER + 0x01)
#define ID_TEXT_1     (GUI_ID_USER + 0x0C)
#define ID_TEXT_2     (GUI_ID_USER + 0x0F)
#define ID_TEXT_3     (GUI_ID_USER + 0x10)

// USER START (Optionally insert additional defines)
static const char * _apStrings[] = {
"\\xe6\\x97\\xa0\\xe8\\xbd\\xa8\\xe8\\x83\\xb6\\xe8\\xbd\\xae\\xe8\\xbd\\xa6\\xe7\\x94\\xb5\\xe6\\xba\\x90\\xe7\\x9b\\x91\\xe6\\x8e\\xa7\\xe7\\xb3\\xbb\\xe7\\xbb\\x9f",
"\\xe7\\x94\\x9f\\xe4\\xba\\xa7\\xe5\\x8d\\x95\\xe4\\xbd\\x8d\\:\\xe5\\xae\\x89\\xe5\\xbe\\xbd\\xe9\\x94\\x90\\xe9\\x80\\x9a\\xe4\\xbf\\xa1\\xe6\\x81\\xaf\\xe6\\x8a\\x80\\xe6\\x9c\\xaf\\xe6\\x9c\\x89\\xe9\\x99\\x90\\xe5\\x85\\xac\\xe5\\x8f\\xb8",
"\\xe7\\x94\\xb5\\xe8\\xaf\\x9d:0551-63502890",
"\\xe4\\xbc\\xa0\\xe7\\x9c\\x9f:0551-65372890"   
};
// USER END
/*********************************************************************
*
*       Static data
*
**********************************************************************
*/

// USER START (Optionally insert additional static data)
// USER END

/*********************************************************************
*
*       _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
    { WINDOW_CreateIndirect, "Start", ID_WINDOW_0, 0, 0, 480, 320, 0, 0x0, 0 },
  { TEXT_CreateIndirect, "Text", ID_TEXT_0, 0, 80, 480, 32, 0, 0x64, 0 },
  { TEXT_CreateIndirect, "Text", ID_TEXT_1, 0, 140, 480, 28, 0, 0x64, 0 },
  { TEXT_CreateIndirect, "Text", ID_TEXT_2, 0, 188, 480, 28, 0, 0x64, 0 },
  { TEXT_CreateIndirect, "Text", ID_TEXT_3, 0, 236, 480, 28, 0, 0x64, 0 },
  // USER START (Optionally insert additional widgets)
  // USER END
};

/*********************************************************************
*
*       Static code
*
**********************************************************************
*/
// USER END
void Display_Time(void)
{
//     GUI_SetBkColor(GUI_BLUE);
    GUI_SetColor(GUI_RED);
    GUI_SetFont(&GUI_Font13_1);
//     GUI_SetTextMode(GUI_TM_TRANS);
    GUI_DispStringAt("/",268,2);
    GUI_DispStringAt("/",291,2);
    GUI_DispStringAt(":",268,11);
    GUI_DispStringAt(":",293,11);
    GUI_SetColor(GUI_WHITE);
    GUI_DispDecAt(Time[0],239,0,4);
    GUI_DispDecAt(Time[1],276,0,2);
    GUI_DispDecAt(Time[2],300,0,2);
    GUI_DispDecAt(Time[3],250,12,2);
    GUI_DispDecAt(Time[4],276,12,2);
    GUI_DispDecAt(Time[5],300,12,2);
}
/*********************************************************************
**   void InitDialog(WM_MESSAGE *pMsg)
**   to initialize the Dialog items   
**
**********************************************************************/
void InitDialog(WM_MESSAGE *pMsg)
{
      WM_HWIN hItem;
      //
    // Initialization of 'Start'
    //   
    hItem = pMsg->hWin;
    WINDOW_SetBkColor(hItem, 0x00FF0000);
    //
    // Initialization of 'Text'
    //
    hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
    TEXT_SetText(hItem, _apStrings[0]);
    TEXT_SetTextColor(hItem, 0x0000FFFF);
    TEXT_SetFont(hItem, &GUI_FontSongti39);
        TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
    //
    // Initialization of 'Text'
    //
    hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1);
    TEXT_SetFont(hItem, &GUI_FontSongti24);
    TEXT_SetTextColor(hItem, 0x000000FF);
    TEXT_SetText(hItem, _apStrings[1]);
    TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
    //
    // Initialization of 'Text'
    //
    hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_2);
    TEXT_SetText(hItem,_apStrings[2]);
    TEXT_SetFont(hItem, &GUI_FontSongti24);
    TEXT_SetTextColor(hItem, 0x000000FF);
    TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
    //
    // Initialization of 'Text'
    //
    hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_3);
    TEXT_SetFont(hItem, &GUI_FontSongti24);
    TEXT_SetTextColor(hItem, 0x000000FF);
    TEXT_SetText(hItem, _apStrings[3]);
        TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);      
}
/*********************************************************************
*
*       _cbDialog
*/
WM_MESSAGE *pMsg1;
u8 count_c;
static void _cbDialog(WM_MESSAGE * pMsg) {
  WM_HWIN hItem = pMsg->hWin;
  // USER START (Optionally insert additional variables)
    GUI_UC_SetEncodeUTF8();
    pMsg1 = pMsg;
  // USER END
  switch (pMsg->MsgId) {
  
        case WM_INIT_DIALOG:
                InitDialog(pMsg);   
                break;
        case WM_PAINT:
                Display_Time();
                break;
        default:
                WM_DefaultProc(pMsg);
                break;
  }
        
}

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       CreateStart
*/
WM_HWIN CreateStart(void);
WM_HWIN CreateStart(void)
{
  WM_HWIN hWin;
  hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);   
    return hWin;
}

// USER START (Optionally insert additional public code)
// USER END

/*************************** End of file ****************************/
回复

使用道具 举报

11

主题

59

回帖

11

积分

初级会员

积分
11
发表于 2014-7-18 15:35:06 | 显示全部楼层
做个定时器,每秒刷一下
回复

使用道具 举报

5

主题

12

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2014-7-18 15:40:54 | 显示全部楼层
可能我表达的不是很清楚,我想在显示屏上显示2014/01/18   15:34:45  Time数组中存放的是时间年月日,时分秒信息
回复

使用道具 举报

5

主题

12

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2014-7-18 16:21:56 | 显示全部楼层

回 eric2013 的帖子

eric2013:建议你看下我emWin教程的第36章

(2014-07-18 10:05)
我想做3个界面
第一个界面是初始化显示界面:显示公司的名称及电话
第二个界面实时显示采集的电压电流等信息
第三个界面可以设定一些参数
然后这3个界面分别用薄膜开关代替并且每个界面的右上角都显示年月日时分秒,左上角都显示一个图标。当按开关1显示界面1,按开关2显示界面2,按开关3显示界面3。
不支持触摸屏。

现在遇到的问题是:用emwinGUIBuilder做完第一个界面后想显示时间信息,但是显示的时间不是一秒一秒的加。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107220
QQ
发表于 2014-7-18 19:26:22 | 显示全部楼层

回 yangtianyi 的帖子

yangtianyi:我想做3个界面
第一个界面是初始化显示界面:显示公司的名称及电话
第二个界面实时显示采集的电压电流等信息
第三个界面可以设定一些参数
....... (2014-07-18 16:21) 
在回调函数中加入定时器功能
回复

使用道具 举报

5

主题

12

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2014-7-21 09:48:20 | 显示全部楼层

回 eric2013 的帖子

eric2013:在回调函数中加入定时器功能 (2014-07-18 19:26)
即使我使用定时器还是不能显示时间,Display_Time();这个函数可以调用但是显示不出来,我想是不是Display_Time();这个函数显示的内容不是在emWinGUIBuilder创建的小工具中显示,所以显示不出来?
回复

使用道具 举报

5

主题

12

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2014-7-21 10:05:31 | 显示全部楼层

回 eric2013 的帖子

eric2013:在回调函数中加入定时器功能 (2014-07-18 19:26)
不知道为什么虽然执行了
case WM_PAINT:
                Display_Time();
                break;
但是也不会显示时间?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 02:40 , Processed in 0.304684 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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