欢迎来到天天文库
浏览记录
ID:55739474
大小:104.50 KB
页数:2页
时间:2020-06-03
《发表论文测试例程.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、为了能够更直观的观测到结果,在笔者已经实现的ucOS和ucGui的平台上,运用平台的多任务机制建立一个测试案例,这个案例由三个任务构成:Start_Task,Main_Task,GUI_Task,它们优先级分别为7,8,9。具体实现的主要程序内容如下所示:Start_Task:用于执行GUI_TOUCH_Exec()函数,更新触摸点状态,该任务主要代码如下:while(1){GUI_TOUCH_Exec();OSTimeDly(20);}MainTask:用于设置背景窗口的回调函数和建立前景窗口同时设置其回调函数,该
2、任务快中代码流程如下:1)建立前景窗口,同时设置其回调函数2)增加最大化,最小化,关闭按钮4)增加ok按钮,cancel按钮3)设置鼠标显示5)while(1){WM_Invalidate(WM_HBKWIN);GUI_Delay(20);}GUI_Task:由于使用了视窗管理的回调机制,该任务必须实现,并且要定期的调用[4]。while(1){GUI_Exec();GUI_X_ExecIdle();}cbBkWindow:背景窗口的回调函数,uCGUI是采用消息驱动的,其消息驱动响应是在特定窗口的回调函数当中实现的
3、,该回调函数中只是实现了WM_PAINT消息,用于绘制背景桌面.caseWM_PAINT:GUI_DrawBitmap(&bmGUI3,0,0);//绘制桌面背景_cbFrame:前景窗口的回调函数,并对窗口回调函数中的WM_NOTIFY_PARENT消息里面完成按钮点击消息进行相应,该部分代码如下caseWM_NOTIFY_PARENT:Id=WM_GetId(pMsg->hWinSrc);NCode=pMsg->Data.v;switch(NCode){caseWM_NOTIFICATION_RELEASED:h
4、Item=WM_GetDialogItem(hWin,GUI_ID_EDIT0);if(Id==GUI_ID_OK){EDIT_SetText(hItem,"Start...");}if(Id==GUI_ID_CANCEL){EDIT_SetText(hItem,"End...");}break;}整个程序按照以流程运行:1)在Start_Task任务中,更新触摸点状态,放弃对cpu的占用,系统调度将对cpu的占用权交由MainTask;2)在MainTask任务中将桌面窗口句柄与其回调函数关联,建立前景窗口并设置与
5、其回调函数关联,由WM_InvalidateWindow函数致使桌面背景窗口区域无效,从而发送WM_PAINT消息至背景窗口回调函数cbBkWindow是的背景图片重画,然后MainTask任务放弃对cpu的占用,系统调度将对cpu的使用权交由GUI_Task任务3)在任务GUI_Task中进行一些背景处理和窗口更新工作,之后系统又开始新一轮的调度,在三个任务的while语句块中按照优先级的高低往复运行。需要说明的是这里的当前窗口上按钮放松的Click消息也会在MainTask的while循环中得到相应。将该测试案例
6、烧写进目标版,目标版采用的是广州友善之臂的SBC-2410,液晶屏也是才用该公司的640*480像素的TFT型液晶屏幕。图三为测试案例在目标版上的运行结果,其中a为点击start按钮时的运行结果,此时文本框里面将打印”start…”字符串,b为点击start按钮时的运行结果,此时文本框里面将打印”end…”字符串。ab图三程序运行结果
此文档下载收益归作者所有