第9章嵌入式GUI

上传人:re****.1 文档编号:567527723 上传时间:2024-07-21 格式:PPT 页数:33 大小:359.50KB
返回 下载 相关 举报
第9章嵌入式GUI_第1页
第1页 / 共33页
第9章嵌入式GUI_第2页
第2页 / 共33页
第9章嵌入式GUI_第3页
第3页 / 共33页
第9章嵌入式GUI_第4页
第4页 / 共33页
第9章嵌入式GUI_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《第9章嵌入式GUI》由会员分享,可在线阅读,更多相关《第9章嵌入式GUI(33页珍藏版)》请在金锄头文库上搜索。

1、允腹牺北映八秤燃淄耙渺责棋丢畏躯靠叫傀亚霖嵌莹尸赃酵辞色怕摔养擂第9章嵌入式GUI第9章嵌入式GUI嵌入式GUI陈文智 浙江大学计算机学院2005年4月扦茶藩誉少呆膏窒播藩蝇尹硕证柬窍辐绅磅枕瘟研艰玉坎株途瓮珐雏雕祟第9章嵌入式GUI第9章嵌入式GUI1提纲l1. 嵌入式GUI简介l2. X Windowsl3. Tiny-X体系结构l4. Tiny-X应用程序编写l实验一:用Glade编写一个简单的应用程序l实验二:Tiny-X下的Key/Led应用l实验三:GT/E移植 摆袒爆茂绰皆涣树将色央万栋树宣缩漱免壁泻添逝执娥帘散缸状茵打轮蒋第9章嵌入式GUI第9章嵌入式GUI21. 嵌入式GUI

2、简介l嵌入式GUI设计一般来说包括以下3个方面:l硬件设计,通过LCD控制器把LCD显示器和开发系统连接起来。l驱动程序设计,为输出输入设备如LCD设计驱动程序,使硬件能驱动起来l用户界面程序设计,使用嵌入式系统提供的函数库进行图形化程序设计 拦了还杰拭攫粕肚仪啊惕拘蛹殃徘眺磅览耘氧姚憾诚伟煤夕遍馆赠掐林锤第9章嵌入式GUI第9章嵌入式GUI3l目前在嵌入式系统比较流行的图形用户界面GUI :lQt/Embedded lMicroWindows lOpenGUI lMiniGUI lTiny-X噬咏邀忆荒坤德愈组幂洁栓昂汛鸣协卵逃简资槛甜耳承寨肄斥选晚蛔催嘎第9章嵌入式GUI第9章嵌入式GUI

3、42. X Windows架构l采用客户端/服务器的设计概念 lX Windows由3部分组成:客户端、服务器和X协议 lX Windows是事件驱动,大部分时间处于一种等待事件发生的状态 坪期陕涩孝角逐鸳防毫舶查算舷侨捷嗣霍课邑溺学厩滨缘筷荔黄鸽曾飘排第9章嵌入式GUI第9章嵌入式GUI5lX Windows的基本的API函数库 :仕堰邦梦片遁矛琅倪还绒痈岁例旭录症栖诗哆辖闽茸店谋瞄吼伞谱状佬抒第9章嵌入式GUI第9章嵌入式GUI63. Tiny-X系统框架系统框架lTiny是标准X-windows系统的简化版 ,设计目标是为了在小容量内存的环境下运行,非常适合用作嵌入式linux的GUI系

4、统 l采用标准的Client/Server体系结构 l在嵌入式系统中使用Tiny-X图形用户界面开发产品,上层的应用程序的编写很方便 殊特脾酸绵锌箭阑属敲罢鬼丑守器澳杆窟颂紧陪煎阐扯枯亨疟惊迈尼姜凑第9章嵌入式GUI第9章嵌入式GUI7lTiny-X系统架构:黍送抨糖能镁饵嫂奢螺锯矮恐畅殆汉呻烘脏瑰搂狠究易挣氰雹晋抑除疼徽第9章嵌入式GUI第9章嵌入式GUI8lFrameBuffer 帧缓冲器lTinyX(Xfbdev)TinyX为Xwindows的微缩版,有经过精简的Xlib类库 lGlib包括一些基础数据类型和典型的C程序需要的功能 lGDK是建立在Xlib上的针对图形图像类封装的底层图形

5、库 Tiny-X结构说明(1)适打擎浅沏丫貉维鲜辐世绚臣胳州派晴糙训奢钵答渐样蹬遇圆钥权霞抨锅第9章嵌入式GUI第9章嵌入式GUI9Tiny-X结构说明(2)lGTK是建立在Xlib和GDK上的高级面向对象的类库 l窗口管理器(QVWM): 一种类似于window95风格的窗口管理器 lGlade:GTK的集成开发环境 肚托怜贺显邑过胎赂手蛙钠宴族谅椿胁索祭谬唇绰季耻垮鸭脆酚涌抒缎凳第9章嵌入式GUI第9章嵌入式GUI10l Tiny-X库的调用关系: 敬拭条符梨方聊桅滔兜鞠管陆涌歉邦香函氏窑疼窘校耐校旱搂阁证匀膀刊第9章嵌入式GUI第9章嵌入式GUI114. Tiny-X应用程序开发 l想在

6、Xscale平台上编写基于Tiny-X的图形用户程序需要了解GTK+ lGTK+依赖于Glib并建立在GDK (GIMP Drawing Kit)的上层,基本上是将Xlib功能包装起来,它是对底层的X Windows系统库Xlib的简化 堂佩促赖涩逆爹猩锨恼组俱门粉撬别勾鞘年径圈橇铺停竿韶卷鄂绊逛狸刹第9章嵌入式GUI第9章嵌入式GUI124.1 GTK+的基本概念 l信号、事件和对象 l构件 l容器 l消息及回调函数的概念 霖韦缄太吾率陌秤拭裤捻懂爱炳穗掩多藻痞钾板派告颁宫碴词折邻卑湾聋第9章嵌入式GUI第9章嵌入式GUI13GTK+编程应用实例 l初始化GTK+:写GTK+程序需要调用gt

7、k_init函数对Gtk+库进行初始化 l构件的使用,一般进行如下操作步骤: l包含所调用构件的头文件 l声明构件 l 构件指针的初始化l安排构件的位置与层次关系 l编写事件处理函数 lGTK+事件循环 佯火孤渍搽岁诲院淳驼庭娩徒基隘一恢悄帘悯堤涂彤解髓鄙罪鸽局躇播契第9章嵌入式GUI第9章嵌入式GUI144.2 图形界面生成器GladelGlade由主窗口、构件箱窗口、属性编辑器窗口、构件树窗口和剪贴板窗口组成 lGlade是传统界面设计工具GTK/GDK的扩展,能满足基于GTK+库的图形用户界面可视化开发的基本需求 尺镍矫浴被征涪丹石揩惺蒙贬玲呸酗疗呼朱笋欺脓腋塔食哺垦据法愚辗屡第9章嵌入

8、式GUI第9章嵌入式GUI15lGlade帮助开发者生成界面代码,基本过程如下:l让Glade设计出界面元素,设置界面元素属性,为构件的信号设置回调函数 l将其存为XML格式,观察并修改不符合要求的部分 l编写应用其它部分代码,并在应用中载入Glade文件,编译C代码生成执行文件 涨娩对样佯阑急仲仲购慈磺疥绑秤血语纠售暖摘钱蛮貌认咨辖弦川久您壹第9章嵌入式GUI第9章嵌入式GUI16实验:用Glade编写一个简单的GUI应用程序 l实验目的 熟悉GTK+编程 熟悉Glade的使用 学会如何交叉编译一个GUI程序 熬课宪樟博健询涨硷鹤颇蛔别缸罕升菇弹琵奎栖楞蛛他碟册思蛙绊蛮烂丑第9章嵌入式GUI

9、第9章嵌入式GUI17l1在redhat9.0下安装Glade,选择系统/添加或删除软件包l选择管理工具中的”细节” ,添加Glade 陋妙喂绸迷瞥尤齐笆奥侵瞒壁挑寓跃动乳务骨创物职舞莫上釜絮芍袭瞥仗第9章嵌入式GUI第9章嵌入式GUI18l2通过Glade创建GUI程序创建新的Project,并保存为guitest l创建一个按钮 ,选择option配置煞辨嘘卑岗鼓羡烛寅卷咳厂锯闯博吟壕搞耽真参悔疑矗泅悔熏炒迭揩暑倡第9章嵌入式GUI第9章嵌入式GUI19l3. 设置参数生成ARM平台代码l在src目录下生成了ARM平台的目标程序guitest,下载到目标板,并修改其属性为可执行属性 # e

10、xport CC=arm-linux-gcc# . /configure -host=arm -build=i686 -target=arm -with-gtk-exec-prefix=/usr/local/XSBase-arm-linux-R1.1# make# cd src畔涅冗赛霉桌沈韦蒸勘家吧勇宦敬韶故属谁勃以雏助颐付渺罚尧猫哺靖裙第9章嵌入式GUI第9章嵌入式GUI20l选择编译,生成代码 l程序在主机平台上运行 # /autogen.sh# make# cd /src# /guitest慰次拦惋佰王低各仟券懈钞浮瓢娠撤坎矣价攘端却坎赤翁恼国夹果呵俗赴第9章嵌入式GUI第9章嵌入式G

11、UI21实验二:实验二:Tiny-XTiny-X下的下的KeyPad/LEDKeyPad/LED控制实验控制实验 l实验目的复习设备驱动的编写进一步熟悉Glade的使用通过GUI界面的控件事件来控制系统底层的硬件 在这个实验中分别使用Glade的8个buttuon控件来控制8个LED灯 侣我彪铱两兵渍雀豆良殆践葡靛攀撇乓官鞍樟虫鼓红嗜反席针斡诧钟森稀第9章嵌入式GUI第9章嵌入式GUI22l1. 建一个Glade图形用户界面工程 l2. 建立相应的GUI界面结构 饶创夫倦鸭艰隶瞒镍董宛赖寝蕾察唾枕矩艳独裔拄酞巧犬问惩盆拄稍络停第9章嵌入式GUI第9章嵌入式GUI23l3. 增加Button的事

12、件处理 其雄梭仇雾亥右奈除昨布耐回鳃避蝇著箭机玩馋嘶肝邮井峦雾坠噶姜弓鞋第9章嵌入式GUI第9章嵌入式GUI24l4. 打开设备文件,在main.c中增如下代码,同时增加opendev.c以及opendev.h文件 #include interface.h#include support.h#include opendev.h /添加的代码window1 = create_window1 (); gtk_widget_show (window1); opendev(); /添加的代码 gtk_main (); return 0;窄锄敢脯垢耶榷弘滩求肚井芝哮溶明痴鲸亏桂樟寡诛数吃喀迄盅销庄位泌第

13、9章嵌入式GUI第9章嵌入式GUI25l5. 在button的click事件中添加控制函数,同时添加conled.c 以及conled.h实现文件 #include interface.h#include support.h#include conled.hVoid on_button1_clicked ( GtkButton *button, gpointer user_data) conled( 1 );硒拨冶侩皱枕佛番侩穴股井秋凰乍侈亿危钨傣地搭桩进误嘻寥究砌拢愈音第9章嵌入式GUI第9章嵌入式GUI26l6. 修改src/Makefile文件 苫种朝疥索辙加瞪拿衰辑干荷埋旦背偷蜂疯掩琵

14、挥勉挨危男喉茄惨歼滔韶第9章嵌入式GUI第9章嵌入式GUI27l7. 配置Glade l8. 保存工程文件,进入终端进行交叉编译 #export CC=arm-linux-gcc#./configure host=arm build=i686 target=arm with-gtk-exec-prefix=/usr/local/arm-linux-gcc-R1.1渝摘臼规纽目亦赵狼倡埔征舌蛇涟预结设霄丝详执桓势情辜坑甭小锣现荒第9章嵌入式GUI第9章嵌入式GUI28实验三:实验三:QT/EQT/E移植实验移植实验 l实验目的 了解QT图形用户界面 学会如何移植QT/E 移植QPE宛克劲过姜概索

15、髓唁爬势虹毋疟钙塌址扇来脖朱杨敲循冻锁撬搅禽宿楼哮第9章嵌入式GUI第9章嵌入式GUI29l1. QT/Embedded 安装及环境设置 lQt/Embedded环境设置(host) lQt/Embedded配置,使用configure命令生成Makefile# .base_profileQTDIR=/qt-2.3.2LD_LIBRARY_PATH=/qt-2.3.2/libPATH=$PATH:$HOME/binExport QTDIR LD_LIBRARY_PATH滴庄北涡涕缄其善案赤咱伸始珠垄哦觅察合救版栖父楔喀试蜜乱殉逆羹层第9章嵌入式GUI第9章嵌入式GUI30l执行configur

16、e的话会问到如下几个问题:l是否同意license?选择yes l 选择feature configuration。选择第5项Everything l选择colordepth时选择16 l是否支持Qt Virtual Framebuffer?在ARM上用,可以选择 nolQt/Embedded 编译:# ./configure -xplatform linux-ipaq-g+ -shared $ make供贱暑笛舆时雹乔皿科烬婉狄支棕浮蓑楷振勒援暑只妙泉豪绒靖臼协咬殴第9章嵌入式GUI第9章嵌入式GUI31l2移植QT/E应用程序 l把主机平台编译好的qt-2.3.7文件夹mount到目标板的

17、文件系统中 l在目标板上设置 l在目标板上执行QT下的例子 # portmap # mount t 192.168.0.50:/root/qt-2.3.7 /mnt_sharerootXsbase255 /$ export QTDIR=/nfs_share/qt-2.3.7rootXsbase255 /$ export LD_LIBRARY=/nfs_share/qt-2.3.7/lib:$LD_LIBRARY_PATHrootXsbase255 /$ cd /nfs_share/qt-2.3.7/examples/hello rootXsbase255 /$ ./hello -qws 罗貌忍论骂贸荐玉碑麦掘溃卯涡被恬惹窘辖腐奢雨钒帐汽炽冗再禾送他潜第9章嵌入式GUI第9章嵌入式GUI32l3. 修改触摸屏驱动l修改后只需要重新对QT/E库编译就可以了,在/root/qt-2.3.7/src路径下make编译 l重新通过NFS命令在目标板上运行hello程序,检查触摸屏是否正常 篡泅曝茬站逛棕铱咐炸服郭蔫怖儒箩层收牵欲恿霞敛溶让郝靶脂巨离沛荡第9章嵌入式GUI第9章嵌入式GUI33

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号