基于μC%2fOS的μC%2fGUI系统的实现和应用.pdfVIP

基于μC%2fOS的μC%2fGUI系统的实现和应用.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
杨光友 丁毅 周国柱 张道德 湖北工业大学机械工程学院,武汉,430068 摘要论文在详细分析/*C/GUI实现原理的基础上,着i-介*g了GUI在嵌入式系统多任务环境下应用 的软件接口,并以实时操作系统f,C/OS上实现图形化用户界面为倒介绍了在ARM上的移植过程,并给出了 应用实例。 关键词 I-C/GUI,/xC/OS,接口,实时多任务 1 引 言 tzC/GU[作为源代码开放的GUI系统提供丰富的二维绘图库、多字体和可扩充字符集、Unieode、位图显 示、多级RGB及灰度调整、动画优化显示、具有Windows风格的对话框和预定义控件(按钮、编辑框、列表框、 进度条、单选多选框、滑动条等),以及对键盘、鼠标、触摸屏等输入设备和双LCD输出的支持,并且支持单、多 任务环境且移植方便,利用在Windows下提供的仿真环境能独立于嵌入式硬件进行开发,从而大大提高开发 效率,因此在一些需要GUI的控制领域正得到越来越广泛的应用。 2 pC/CVl工作原理 2.1.‘C/GUI的数据结构 具有窗口风格界面的GUI,其内存管理的基本单位是一个窗口。在ItC/GUI中定义一个堆结构对所有窗 口进行管理。每个窗El在创建时,根据其结构类型的不同,为其在堆空间里分配特定大小的连续内存块,并且 用一个块结构体数组中的一个元素标识。块结构体的定义中包含4个域:窗口类型变量在堆中所占连续内存 块的大小,开始处的位置(单位都是字节),以及构成块链所需的指向前、后块的指针。所分配的块结构体数组 元素在数组中的序号作为返回值,用以标识一个窗口,即所谓的旬柄。这样对于一个窗口而言,记录其各方面 属性的窗El类型结构体变量被放在堆空间中,并且有一个块标志与之对应。 创建一个窗口的过程即为在堆空间中找出一个与所需窗口类型结构体变量大小一致的连续区域。由于在 删除窗El的过程中会使已分配的堆区域出现内存空闲块,在分配新区域时,应先查找空闲块中有没有大小够用 的块,如果没有,则会进行一次消除空闲块的过程,即调用memmove()使已分配的堆空间连续化,直到出现一 个大小够用的区域。之后在块结构体敷组中找出一个未用过的数组元素并使之指向该区域t然后将数组元素 加入块链。对于分配好的区域,通过返回其首地址并将其赋给该窗口类型结构变量的指针,通过指针类型限定 访问范围,从而实现窗口类型结构变量在堆中的存储。而删除一个窗口的过程则很简单:只需将该窗口对应的 块节点从块链中删除即可。虽然堆区域中被删除的窗口结构变量仍然存在,但由于块链中已不存在该节点, ttC/GUl会认为它只是一个内存空闲块,将再次予以利用。在整个过程中,通过定义一个全局结构变量 GULAlloc存放相关分配信息,实现对内存的辅助管理。其块数据结构如图1所示。 2。2工作过程分析 贯穿整个窗口风格图形界面的工作过程,从窗口创建到显示以及删除,都离不开两个基本元素:消息机制、 回调函数。在t*C/GUI中定义了敷十种用于各类基本操作的消息宏,对一个窗口的操作基本上都是通过向其 对应的回调函数传送消息参数完成的。 一个窗口在创建的时候将一个对应的函数首地址保存在其结构体数据项中,窗I:1在创建过程中仅仅完成 对自身数据结构的初始化,包括基本特征信息及相关属性的赋值。而此时在屏幕上并没有界面输出,在 t*C/GUl中提供了一个执行函数,当其被调用时,会检查每个窗I:1的状态,根据不同情况向各窗口的回调函数发 送一种消息。具体操作是通过一个指向函数的指针从窗El结构体数据项中得到回调函数首地址,并且将消息 作为参数调用该函数完成的,回调函数在接到消息后进行相应处理。例如:当收到绘图消息后,会调用输出函 数完成向显示终端的输出。此外用户可以定义自己的消息和回调函数,以方便应用。 第二篇 软件技术压其应用 143 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■●_i■■●■●■■■■●■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■_ 圈1块数据结构 在整个工作过程中,卜C/GUI利用一个全局的结构体变量GU

文档评论(0)

wuhuaiyu002 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档