|

楼主 |
发表于 2018-4-16 20:11:16
|
显示全部楼层
16. emWin Simulation OK.rar
(2.53 MB, 下载次数: 49)
硬汉请看。。都在WindowDLG.c 这个文件里面 有三处代码。
这个是录制的屏幕,只有一点点。
Video_2018-04-16_200754.wmv
(21.38 KB, 下载次数: 47)
// USER START (Optionally insert additional static code)
//在最简单的模板上, 一共有3个地方修改
//第一处地方, giCounter加1,然后显示在Edit框内,看速度。
//另外一个是写在另外一个任务里面, 因为是vc模拟emwin,没有把ucos一起弄进来,所以就没有。
//很简单就是一个任务 20ms切换一次。里面执行Display这个函数,将giCounter2++, 然后显示在Edit2里面,来比较Edit和Edit2的变化速度。
#define DISP_TIMER 100 /* 单位是ms , 改成1000ms一秒改一次, 可以改成20ms , 10ms等等*/
static unsigned int giCounter;
static void DISPLAY(WM_MESSAGE *pMsg)
{
char Buf[5 + 1];
sprintf( Buf, "%d", giCounter++ );
/* 这里giCounter增加后, 用Edit_SetText显示,其实不是马上显示出来, 是要等Timer DISP_TIMER ms过后才会显示,
比如DISP_TIMER改成1000, 会看到1秒才变化一次。
目的: 是想一旦giCount的值发生变化,马上就在屏幕上的Edit框里面显示出来,类似前后台程序顺序执行一样。可以每隔若干ms giCount++,
但是一旦giCount++,马上要在屏幕上显示。
*/
EDIT_SetText( WM_GetDialogItem(pMsg->hWin, ID_EDIT_0) , Buf );
}
//第二处地方 这个是人工加入WM_TIMER
case WM_TIMER:
DISPLAY(pMsg); //更新Edit中
WM_RestartTimer(pMsg->Data.v, DISP_TIMER ); //DISP_TIMERms 重开一次timer
break;
//第三处地方 创建Timer
WM_CreateTimer(WM_GetClientWindow(hWin), 0, DISP_TIMER, 0); //添加此段
|
|