一种嵌入式GUI的研究与应用
GUI_MAXTASK和GUI_OS宏,实现uC/GUI与操作系统的结合。
⑹编写自己的应用程序。
使用uC/GUI开发应用程序时,目标系统不是必须配备的,因为uC/GUI提供了一个模拟器,用户可以在模拟器上面看到应用程序的执行的结果。所以,对于开发环境,uC/GUI仅要求有一个符合ANSI标准的“C”语言编译器。至于C++编译器,它不是必须的,但是如果用户使用C++语言来编写应用程序,那就需要一个C++编译器。[1]
因此,在Windows系统下只要安装了Microsoft Visual C++就可以运行uC/GUI的模拟器工程(工程名一般为Simulation.dsw),然后将该工程中的Application文件夹清空,加入自己编写的源文件,编译链接就可以看到运行结果。
3.3应用实例
下图是用uC/GUI开发应用程序的一个实例,该程序是显示汽车运行时发动机转速的一个界面。
图4 用户界面图
黑色的背景是这个LCD的窗口区域,大小为640*480。先利用画线函数绘制基本的弧线,再利用填充函数填充相应的背景颜色,最后用一个分片存储设备执行一个指定的绘图函数,在这种情况下,在一段时间内只有一小部分要更新。
STatic void DemoScale(void)
{
int Cnt;
int tDiff, t0 = GUI_GetTime();
PARAM Param; /* 绘图函数的参数 */
GUI_AUTODEV AutoDev; /* 分片存储设备对象 */
GUI_SetColor(GUI_WHITE); /*设置颜色*/
GUI_SetFont(GUI_Font8x16);/*设置字体*/
GUI_DispStringHCenterAt(“Scale using GUI_AUTODEV-object”, 160, 0);
GUI_AA_EnableHiRes();/* 启动高分辨率用于抗锯齿 */
GUI_AA_SetFactor(MAG);
GUI_MEMDEV_CreateAuto(AutoDev); /* 建立 GUI_AUTODEV 对象 */
/* 显示在一个固定时间上的指针 */
for (Cnt = 0; (tDiff = GUI_GetTime() - t0) 24000; Cnt++);
{
/* 获得数值用于显示一个多边形来表示指针 */
Param.Angle = GetAngle(tDiff)* DEG2RAD;
GUI_RotatePolygon ( Param.aPoints,
aNeedle,
countof(aNeedle),
Param.Angle);
GUI_MEMDEV_DrawAuto(AutoDev, Param.AutoDevInfo, Draw, Param);
}
4 结束语
本文只是简单展示了uC/GUI在开发图形用户界面上的应用,其巨大的应用潜力还有待进一步的研究。相信随着计算机渗透到人类工作和生活的各个方面,以嵌入式系统为核心的后PC时代的到来,uC/GUI的应用前景也将更为广阔。
- 数字信号处理(DSP)应用系统中的低功耗设计(05-02)
- SHARC引领第四代通用DSP高端应用潮流(09-27)
- 在应用可编程测控网络设计(03-15)
- 基于dsPIC33F系列单片机的应用程序升级方法(04-03)
- 采用混合时钟模式提高Linux时钟精度的方法(05-10)
- MSP430低功耗原理及其在海温测量中的应用(06-06)