



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Clinux下基于MiniGUI的监控终端的实现 摘 要 介绍了MiniGUI的主要特点,实现了MiniGUI在Clinux下的移植,最后给出了基于MiniGUI的监控终端软件开发的详细流程。关键词 嵌入式; Clinux ;MiniGUI;arm7;数据监控1 引言 随着软硬件资源的成熟与完善,嵌入式技术在工业控制领域中应用广泛。而开放源码的Linux操作系统成为开发嵌入式产品的首选。本系统采用了Clin
2、ux操作系统,它是专为没有MMU(内存管理单元)的CPU而设计的,并且提供了多种设备驱动、网络通信协议,大大简化了应用程序的开发过程。同时,配备一个高性能的GUI ( 图形用户界面 ),使用户与产品能进行方便的、可靠的交互,也已成为嵌入式开发工作中的一个重点。本系统使用的MiniGUI就是嵌入式系统下一个小型的GUI支持系统,它具有占用资源少、高性能、高可靠性及可配置的氐悖丫晒浦驳蕉嘀钟布筒僮飨低称教稀?lt;/DIV> 2 MiniGUI的特点和体系结构 &
3、#160; MiniGUI由魏永明先生主持开发,目标是为基于Linux的嵌入式系统提供一个小型的GUI支持系统。2.1 MiniGUI的特点 MiniGUI的主要特点有:(1) 遵循GPL条款的纯自由软件。(2)
4、160; 多字符集和多字体支持,目前支持 ISO8859-1、GB2312及Big5 等字符集,并且支持各种光栅字体和 TrueType、Type 1 等矢量字体。(3) Windows的资源文件支持,如位图、图标、光标、插入符、定时器及加速键等。(4) 可配置。可根据用户的需求进行配置和编译。 (5)
5、0; 提供了完备的多窗口机制和消息传递机制。(6) 小巧,经过裁减的minigui应用程序(包括资源和配置文件)不超过700K。(7) 可移植性好。2.2 MiniGUI的体系结构 从整体结构上看,MiniGUI是分层设计的,层次结构如图1所示。
6、60; 图1MiniGUI体系结构图在最底层,GAL和IAL提供底层图形接口以及输入设备的驱动;中间层是MiniGUI 的核心层,包括窗口系统必不可少的各个模块;最顶层是API,为用户提供编程接口。GAL和IAL为 MiniGUI提供了底层的图形接口
7、以及输入接口。3 MiniGUI在44B0上的移植 本系统采用的开发板配置如下:三星公司生产的S3C44B0,2M Nor Flash,16M Nand Flash,8M SDRAM。CC=arm-elf-linux-gcc ./configure -prefix=/opt/usr/local -target=arm-linux -build=i386-linux -host=arm-linux -disable-vbfsupport -enable-lite -enable-st
8、andalone -disable-shared -disable-micemoveable -disable-nativeial -disable-newgal -enable-nativegal -enable-fblin8 -enable-cursor -enable-ipaqial 其中,arm-elf-linux-gcc是针对arm7体系结构目标的编译器,prefix是文件安装路径的前缀,build是指执行编译的机器,这里是x86的开发主机;target是运行该编译器所产生目标文件的机
9、器;ipaqial是使用的触摸屏的输入引擎;由于本系统的任务不是很复杂,只需运行一个minigui应用程序,所以选择了standalone版本;并且Clinux不支持动态编译,所以选择了静态编译。用户还可以根据自身的需要对minigui的库文件进行配置。配置完,运行编译安装命令。 用下面的命令编译用户应用程序:arm-elf-linux-gcc elf2flt I /opt/usr/local/include L /opt/usr/local/lib o helloworld helloworld.c lminigui 根据用户的配置相应修改Mi
10、niGUI.cfg。把helloworld ,MiniGUI.cfg配置文件和资源拷贝到相应目录下,制作romfs文件系统,把romfs文件系统重新烧写到开发板上。重启开发板,在shell提示符下运行helloworld ,可以看到应用程序输出的效果。至此,MiniGUI图形包在目标板上移植安装完成。 移植过程中要注意的问题:(1) 触摸屏输入引擎的编写 对触摸屏来讲,MiniGUI 能够自动识别移动信息
11、,也能够自动识别用户的单击和双击事件。这样,底层输入引擎只需提供位置信息和当前的按键状态信息就可以了。修改src/ial/ipaq.c 源码中相关的部分:static int mouse_getbutton(void) return pos.b; 函数mouse_getbutton()返回触摸屏的状态(是否被点击)。wait_event() 被定时调用。如果触摸屏被点击,则读取触摸屏的位置信息和当前的按键状态信息。相关部分代码如下:
12、160; read (ts, &pos, sizeof (POS);
13、0; if ( pos.b1) mousex = pos.x;
14、0; mousey = pos.y; pos.b = ( pos.b &
15、gt; 0 ? 4:0); return IAL_MOUSEEVENT; 用户需根据读取触摸屏返
16、回的数据格式做相应的修改。(2) MiniGUI 字体文件的裁减 修改 /etc/MiniGUI.cfg,删除某些不需要的字体文件。删除的方法是修改 fontnumber 键值,对应的那些字体文件,就可以从系统中删除了。用户可以只保留rbf中的两个字体,一个中文的,一个英文的,其余的都可以删掉的。裁减后的字体文件不超过300K。4 监控终端软件开发 MiniGUI的消息驱动机制MiniGUI 提供了消息循环机制,而应用程序的结构一般是消息驱动的,应用程
17、序通过被动接收消息来工作。本系统中采用了standalome版本,它基于客户/服务器(C/S)体系,在服务器和客户之间传递输入设备数据,以及客户和服务器之间的某些语法和响应数据。 MiniGUI程序的入口点为MiniGUIMain,在该函数中先设置主窗口一些基本属性,建立每个客户程序唯一的一个消息队列。如果应用程序为lite版本MiniGUI下的应用程序,则应首先调用SetDesktopRect函数来设置程序的显示区域,然后调用CreateMainWindow函数创建并显示程序的主窗口,最终进入消息循环。在主窗口建立时,通过设置MainWindowProc,
18、可以定义对应该窗口的过程函数。 MiniGUI使用消息驱动作为应用程序的创建构架。窗口过程函数主体上都是switch和case结构的选择语句,不同的消息对应响应的处理子函数。MSG_CREATE消息在窗口生成时被发送。MSG_PAINT一般是在调用UpdateWindow重绘时发生,用户可根据需要定义相应的操作子函数。MSG_CLOSE即是关闭窗口时的动作,一般调用DestroyMainWindow销毁主窗口,调用PostQuitMessage退出消息循环。 (2) 数据监控软件实现 数据监控终端
19、用户界面程序选择在Clinux启动的时候自动运行,首先弹出的是用户登陆窗口。用户输入密码,然后登陆到控制界面。MiniGUI应用程序框架如图2所示。 图2 MiniGUI应用程序框架图
20、0; 因MiniGUI应用程序需要和监控主机服务程序交换数据,所以我们采用了经MiniGUI包装过的Socket通信机制。 在MiniGUI应用程序建立一个监听套接字。 通过MiniGUI的API函数RegisterListenFD注册监听套接字sockfd 。当监控服务器有连接请求时,MiniGUI应用程序的窗口过程函数中会收到MSG_FDEVENT消息,我们可以在这里添加相应的数据处理子函数: case MSG_FDEVENT:if(LOWORD(wParam)=sockfd) acc_fd=serv_accept(sockfd,&uid);if(acc_fd>0)readsocket(acc_fd,buf,20);MiniGUI应用程序同时需要从串口读取数据。首先在对话框创建时通过子函数InitCom1()设置好串口0相关参数,如波特率,数据位和停止位等.然后调用RegisterLis
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 土地托管合同土地托管合同
- 2025年上半年宣城市广德县事业单位招考易考易错模拟试题(共500题)试卷后附参考答案
- 汽车车载网络控制技术 丰田汽车车载网络系统检修教案
- 2025年上半年安徽省宿州市灵璧县国土测绘信息中心招聘3人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年安徽省六安市直事业单位招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年安徽新桥投资开发限公司公开招聘工作人员20人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年安徽安庆市民政局所属殡葬管理所招录劳务派遣工作人员3人易考易错模拟试题(共500题)试卷后附参考答案
- 2025中国联通苍南县分公司招聘10人(浙江)笔试参考题库附带答案详解
- 2024重庆长安专用汽车有限公司招聘笔试参考题库附带答案详解
- 2025年建筑智能化产品项目可行性研究报告
- 2023年会计基础各章节习题及答案
- 《中小学教师人工智能素养框架与实践路径研究》专题讲座
- DB4101T 25.2-2021 物业服务规范 第2部分:住宅
- 舞台设计课件教学课件
- 六年级数学下册 负数练习题(人教版)
- 2024-2030年中国康复医院行业管理模式分析及发展规划研究报告
- 斐讯PSG1218路由器的上网设置教程
- 重大事故隐患判定标准
- 人教版(PEP)五年级英语下册第一单元测试卷-Unit 1 My day 含答案
- 企业名称预先核准通知书
- 统筹管理方案
评论
0/150
提交评论