硬汉嵌入式论坛

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

[emWin] 关于emwin定时器问题求教!

[复制链接]

7

主题

42

回帖

63

积分

初级会员

积分
63
发表于 2014-9-23 19:04:21 | 显示全部楼层 |阅读模式
本人在程序中设置了一个定时器,定时刷新界面,可是就是不启动,请大家帮帮忙!程序如下。

const GUI_WIDGET_CREATE_INFO _APP_CNC_AUTO[] = {
{ FRAMEWIN_CreateIndirect, "",                                   0,     0,   0,  800, 443, 0, 0,GUI_TA_HCENTER},
{ MULTIEDIT_CreateIndirect, ""  ,                GUI_ID_MULTIEDIT0,    2,   5, 320, 240,MULTIEDIT_CF_READONLY},   //图像显示区域

{ MULTIEDIT_CreateIndirect, ""  ,                ID_MULTIEDIT_17,    445,  2, 345, 350,MULTIEDIT_CF_READONLY},
{ TEXT_CreateIndirect,       "当前坐标",         ID_TEXT_1,          450,  5,  64,  16, 0, 0},

{ TEXT_CreateIndirect,       "X:",               ID_TEXT_2,          460,  25,  36,  24, 0, 0},
{ MULTIEDIT_CreateIndirect,  ""  ,               ID_MULTIEDIT_1,     550,  25, 235,  30,MULTIEDIT_CF_READONLY},   //X:   当前坐标
{ TEXT_CreateIndirect,       "",                 ID_TEXT_3,          550,  25, 235,  30, 0, 0},                   //X轴数值显示
...........................
};


void _InitCNCDialogShow(WM_MESSAGE * pMsg)
{
  WM_HWIN hWin = pMsg->hWin;

  BUTTON_SetFont(WM_GetDialogItem(hWin,ID_BOTTON_0),&GUI_FontHZ_SimSun_1616);//文本字体
  BUTTON_SetTextAlign(WM_GetDialogItem(hWin,ID_BOTTON_0),GUI_TA_CENTER|GUI_TA_VCENTER); //文本右水平与垂直居中对齐

  MULTIEDIT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_MULTIEDIT0),MULTIEDIT_CI_READONLY,GUI_BLUE);
   
  TEXT_SetTextColor(WM_GetDialogItem(hWin,ID_TEXT_1),GUI_MAGENTA);
  TEXT_SetFont(WM_GetDialogItem(hWin,ID_TEXT_1),&GUI_FontHZ_SimSun_1616);//文本字体
  TEXT_SetTextAlign(WM_GetDialogItem(hWin,ID_TEXT_1),GUI_TA_CENTER|GUI_TA_VCENTER); //文本右水平与垂直居中对齐  。。。。。。。。。。。。。
}
void Caculate_CNCNUM(WM_MESSAGE * pMsg)
{
   char buf[1];
  WM_HWIN hWin = pMsg->hWin;
   
  sprintf(buf,"%6d",Coord.X);
   TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_3), buf);

  sprintf(buf,"%6d",Coord.Y);
   TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_5), buf);

  sprintf(buf,"%6d",Coord.Z);
   TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_7), buf);

  sprintf(buf,"%6d",Coord.A);
   TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_9), buf);

  sprintf(buf,"%3.2f",Coord.X1);
   TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_12), buf);

  sprintf(buf,"%3.2f",Coord.Y1);
   TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_14), buf);

  sprintf(buf,"%3.2f",Coord.Z1);
   TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_16), buf);

  sprintf(buf,"%3.2f",Coord.A1);
   TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_18), buf);
  
  sprintf(buf,"%4d",Speed.MOTO[0]);
  TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_25), buf);
}void _cncCallback(WM_MESSAGE * pMsg)
{
int i, NCode, Id, Value;
WM_HWIN hWin = pMsg->hWin;
  switch (pMsg->MsgId)
{
   case WM_TIMER:
     Caculate_CNCNUM(pMsg);
     WM_RestartTimer(pMsg->Data.v, 100);    //重启定时器
     break;
   case WM_PAINT:
       break;
   case WM_INIT_DIALOG:
       _InitCNCDialogShow(pMsg);             //对话框
       break;
   case WM_NOTIFY_PARENT:            //告知父窗口,其子窗口中发生了某些改变。
     Id    = WM_GetId(pMsg->hWinSrc);      /* Id of widget */
     NCode = pMsg->Data.v;                 /* Notification code */
     switch (NCode)
     {
      case WM_NOTIFICATION_CLICKED:
        switch (Id)
        {
         case ID_BOTTON_0:
             break;
       }
        break;
   default:
    WM_DefaultProc(pMsg);
  }
}
void APP_CNC_AUTO (void)
{
WM_HWIN hWin2;
   hWin2=GUI_CreateDialogBox(_APP_CNC_Munm, GUI_COUNTOF(_APP_CNC_Munm), &_cncCallback, 0, 0, 0);
    FRAMEWIN_SetText(hWin2,"CNC_system demo                                         MODE:手动");   WM_CreateTimer(WM_GetClientWindow(hWin2),  0,  100,    while (1)
{
    GUI_Delay(10);
}
}启动很正常,其它功能也正常,就是WM_TIMER不能定时刷新。仿真发现WM_TIMER根本没有工作。求助!!!!!!!!!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2014-9-23 21:42:20 | 显示全部楼层
定时的创建和使用是正确的,你在回调函数里面调用串口打印一下输出,确定是否能够定时的进出。
回复

使用道具 举报

0

主题

1

回帖

0

积分

新手上路

积分
0
发表于 2014-10-22 15:45:41 | 显示全部楼层
楼主,你的问题解决了没有?我也遇到相同的问题,定时器创建了,但是执行不了case timer,如果解决了请指教,qq963429304,谢谢楼主
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2014-10-22 17:33:54 | 显示全部楼层

回 简单爱琴海 的帖子

简单爱琴海:楼主,你的问题解决了没有?我也遇到相同的问题,定时器创建了,但是执行不了case timer,如果解决了请指教,qq963429304,谢谢楼主 (2014-10-22 15:45) 
严格按照我们60期emWin教程的定时器篇章试试,应该没有问题的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-12 11:49 , Processed in 0.302280 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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