首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

利用μC/GUI实现无纸记录仪界面

利用μC/GUI实现无纸记录仪界面

无纸记录仪记录采样得到的数据,并根据用户选择的配置显示出用户需要的时问段的数据。该记录仪实现无笔、无纸记录,日常维护工作小。可同时输入多种信号,互不干涉,实时显示,可靠性好,应用灵活。 对无纸记录仪界面要求是:显示信息量大,方便用户查找所需要的信息;操作简单,界面友好,使用户不必进行专业培训即可操作。
lμC/GUI
1.1 μC/GuI简介
μc/GUI是美国Micrium公司出品的一款针对嵌入式系统的优秀图形软件。它是为任何使用LcD(液晶显示器)图形显示的应用提供高效的、独立于处理器及LcD控制器而设计的GuI(图形用户接口),适用于单任务或多任务系统环境。其主要特性是:丰富的图形库,多窗口、多任务机制,窗口管理及丰富窗口控件类(按钮、检验框、单/多行编辑框、列表框、进度条、菜单等),多字符集和多字体支持,多种常见图像文件支持,鼠标、触摸屏支持,灵活自由配制等。
1.2 μC/GuI文件组织
μC/CuI\GUI\ConvertColor:涉及调色板模式。μC\GuI的调色板模式支持111、222、223、323、332、444、555、565、8666等相关模式。
μc/GuI\GuI\ConvertMono:描述单色显示的不同模式。
μC/GUI\GUI\Core:是μC/GUI的核心部分,包括GUI头文件、GUI显示各种文本和数字、设置各种字体、2一D图形库、绘图函数、键盘函数等。
μC/GUI\GUI\Font:μC/GUl支持的字体。
μC/GUI\GUI\LCDDriver:很多已经完备的LCD控制器的驱动程序以及API函数。
tAC/GUI\GUI\MemDev:MemDev的所有函数。txC/GUI函数绘图不使用MemDev时,画图操作直接写到终端上显示,交迭绘图执行时刷新屏幕,多次刷新时就会出现抖动。如果在程序中使用MemDev,则所有的执行操作都在MemDev中执行,当所有的操作都执行完毕之后,最后的结果才会送到屏幕上显示,因而可以避免多次刷新,从而避免抖动。
μC/GUI\GUI\Touch:触摸屏驱动函数。
μC/GUI\GUI\Widget:窗口控件函数。
μC/GUI\GUI\WM:窗口管理函数。
1.3 μC/GUI与其他图形系统的比较
a)μC/GUI优势在于体积小,配制性强,运用领域广泛。只要满足RAM 1 00 B,堆栈5 0 0 B,ROM10 kB的小型系统中都可以运行μC/GUI,而这个需求是其他图形系统所不及的。在资源丰富的大型系统中,也只需要RAM 2 kB~6 kB,堆栈1 2 00 B,ROM30kB一60kB就可以满足μC/GUI的各种功能。对比于其他图形系统最少几百kB,动辄上MB的系统而言是非常有优势的。其众多的配制,满足不同需求用户需要,方便灵活小巧,实用性大大增强。
b)平台的广泛性,移植方便。由于μc/GuI是100%C编写,适应绝大多数软硬平台,相对于众多具有软硬件针对性的图形系统而言,结构划分和模块划分非常清晰,分设专门的LCD驱动模块,移植简单方便。代码量相对较小,易操作,可扩展性强,方便用户定制和自主更新完善,满足个性需求。
2工程项目分析
本文主要实现无纸记录仪的界面。项目中利用μC/GUI的消息传递机制来实现各控件之间的联系及功能,使用回调函数进行各界面之间的切换。
2.1消息机制
μC/GuI是采用消息驱动的,它专门有对外的一套收集消息的接口。
一些基本的消息如下:
wM-CREATE:窗体创建消息,每创建一个窗体完后都会向该窗体发送此消息。
wM-SHOW:显示窗体消息,此消息在μC/GUI中各控件窗体内均未作处理。要显示窗体一般使用wM-ShowWindow函数。
WM-PAINT:窗体重画消息,当窗体所在区域全部或部分无效时,系统会发出该消息,将无效区域重画,μC/GUI中是将全部区域重画;当由外部输人操作引起无效区域产生时,系统会在消息处理中发送该消息到窗体消息回调函数中,以重画此窗体。
WM-KEY:处理按键式操作的输入外设的消息,消息中必须包含按键的按下或弹起状态,此消息在任务消息循环中循环处理,一旦产生就会发送给当前焦点窗体。
wM-SET_FOCUS:所有外部输入设备消息都是发送给当前焦点窗体的,用户可以通过此消息来设定当前的焦点窗体。
WM-NOTIFY-PARENT:此消息将子窗体的外设输入消息传送到它的父窗体,因为一般情况下消息都是在父窗体中统一处理,如对话框中的按钮点击事件,一般在用户自定义的窗体消息处理函数中处理,所以必须要子窗体将获取的输入外设的消息传送给父窗体,这样才能在父窗体中进行子窗体的点击事件消息的处理,处理该消息时通过控件ID来区别不同的控件,通过消息中的通知码来区别控件被操作的各种状态。
wM_DELETE:要删除窗体时发送的消息,主要清除窗体数据结构所占用内存,此消息由WM-DeleteWindow函数发送。
WIDGET_HandleActive:基础控件共通消息处理,大部分μC/GUI控件中都会在消息回调函数的头部进行这个调用,处理了消息后,就直接退出消息回调函数的调用。这个函数中处理如下消息:
WM-GET-ID:返回窗体控件标志ID。
WM-SET-FOCUS:设置当前窗体为焦点窗体,设置完后还必须向该窗体的父窗体发送WM-NOTIFY-CHILD-HAS-FOCUS消息,让其父窗体更新它记载的当前焦点子窗体。WM-GET-HAS-FOCUS:获取当前窗体是否为焦点窗体。
返回列表