《emWin使用文档》由会员分享,可在线阅读,更多相关《emWin使用文档(38页珍藏版)》请在金锄头文库上搜索。
1、目录一、emWin介绍11.1 emWin简介11.2 emWin应用的软件架构2二、emWin用户手册介绍及使用22.1 emWin用户手册简介22.2 根据函数名查找库函数说明32.3 根据功能查找库函数3三、emWin开发过程中调用API及功能43.1 通用小工具API43.2 BUTTON API53.3 EDIT API6四、搭建emWin的Windows仿真环境74.1 仿真版本emWin文件介绍74.2 使用 VS2010 仿真 emWin84.3 emWin仿真工程概览9五、 GUI_Builder185.1 简介185.2 创建对话框195.3 GUI_Builder的输出2
2、05.4 如何使用C文件24六、项目代码结构概述24七、emWin的keil项目介绍327.1 keil环境搭建327.2 keil项目主要文件简介327.3 硬件驱动配置(LCD、SDRAM)34八、Keil环境下实板调试36九、问题总结37参考资料:37软件工具:Keil 4、VS2010硬件工具:TFT-LCD7寸、LPC1788控制板一、emWin介绍1.1 emWin简介emWin(大概是 embed win 的缩写)是 Segger 公司针对嵌入式平台开发的图形软件库,通过调用 emWin 提供的函数接口,开发嵌入式图形界面应用变得简单而快捷。图形软件库就是一些与图形界面相关的函数
3、,它提供接口给用户调用。例如,在没有使用图形软件库时,要控制 LCD 显示一个圆,需要用户自行根据 LCD驱动编写画圆的函数,而使用图形界面软件库的话,这个画圆函数已经由该软件库提供给用户,用户只需要调用这个函数,设置圆的半径、圆心、颜色就可以画出自己想要的圆,不需要再考虑画圆的算法了。emWin 并不只是提供了画圆之类的基本绘图函数库,它的主要功能如下: 绘制 2-D 图形:绘制圆、椭圆、多边形、弧线、线图和饼形图等; 显示位图文件:显示 BMP、JPEG、GIF 及 PNG 格式的图片文件; 显示文字:支持显示多国语言的文字,如中英文; 处理用户输入:如键盘、鼠标及触摸屏的人机交互输入处理
4、; 提供各种窗口对象:这些窗口对象也被称为图形控件,最常见的如菜单控件、窗口控件、按键控件、复选框及框架窗口控件等,有了这些控件,就非常容易地制作出类似 windows 系统的控制界面了。 emWin 的这些功能,就是为了解决人机交互应用的设计难题。而它对 ROM 和 RAM的消耗相对来说并不高。据官方统计,它们提供的一个基本例程(移植了 emWin 函数库显示“HelloWorld”),消耗 ROM 60KB,RAM 7KB,这在当前大多数嵌入式平台都是可以接受的。又因为 emWin 可以在多任务系统及裸机的平台上运行,尤其适合嵌入式乱七八糟的开发要求,自然使得 emWin 在嵌入式人机交互
5、场合中大放异彩。1.2 emWin应用的软件架构图1-1从最底层看起, 首先是硬件层,硬件层就是指最基本的板级支持软件包(BSP),也就是我们常说的底层驱动,它提供了对硬件平台资源最直接的访问;emWin 软件库承上启下,它运行在硬件层之上,与硬件层之间仅靠液晶驱动连接起来,而向应用层则提供了各种便于用户制作 GUI 应用的接口。 在没有使用 emWin 的软件架构中,很可能就是由硬件层直接过渡到应用层,甚至根本没有分层的概念,这样的应用程序将十分依赖于某个特定的硬件平台,不容易迁移到其它设备之中。从这个架构图可以看出,只需要编写好液晶驱动这个粘合 emWin 库和硬件BSP 层的中间件,就可
6、以正常使用 emWin 了,迁移应用到不同的平台也简单得多。二、emWin用户手册介绍及使用2.1 emWin用户手册简介emWin 用户手册就是关于 Segger 官方给出的 emWin 帮助文档,它的内容包括emWin 简介、仿真、各种库函数详细信息、液晶驱动移植、配套工具软件的使用、emWin性能及资源占用都一一进行了说明,对于没有开源代码的软件库,其帮助文档的重要性不言而喻。2.2 根据函数名查找库函数说明我们会经常遇到一些陌生的 emWin 库函数,库函数大多以 GUI 为前缀命名,如 GUI_Init、GUI_DispString 等 GUI_xxx 格式。当我们想要获这些库函数详
7、细信息时,可在emWin 用户手册中搜索。如下图示:图2-12.3 根据功能查找库函数我们根本不知道 emWin 库有没有这种功能的函数,就算知道有,也常常忘记了函数的名字。这时候我们就可以根据emWin 用户手册的目录来找了,emWin 用户手册对它每种功能的函数集都有一个函数列表,简要介绍函数的功能,浏览相关的函数列表及其简介,就可以找到相关的库函数名了,这时再搜索该函数名就可以获得详细的函数说明。 例如我们想查找某个在特定位置显示字符串的函数,就可以在用户手册的标签页中找到“文本 API”标签(其它功能函数如“评估 API(此处文档翻译有误,应为:数值 API)”、“图形 API”等),
8、然后就可以在文本 API 函数列表中找到一个名叫 GUI_DispStringAt 的函数,其功能简介是“在指定位置显示字符串”,它正符合我们的要求,再根据给出的函数名,就可以搜索到该函数的详细说明,如下图示:图2-2三、emWin开发过程中调用API及功能3.1 通用小工具API例程描述WM_DeleteWindow()删除窗口WM_DisableMemdev()禁止使用存储设备进行重绘WM_EnableMemdev()启用存储设备用于重绘WM_InvalidateWndow()使窗口无效WM_Paint()立即绘制或重绘窗口WM_DelectWindow()原型void WM_Delete
9、Window(WM_HWIN hWin);参数:hWin 描述:窗口句柄其他信息删除窗口前,他将收一条WM_DELETE消息,此消息通常用于删除所使用的任何对象(小工具),并释放窗口动态内存分配。如果指定的窗口具有任何现有子窗口,则在删除窗口前自动删除这些子窗口,因此不必分别删除子窗口,窗口删除前会发送一条WM_NOTIFICATION_CHILD_DELETED消息到其父窗口。WM_DisableMemdev()原型void WM_DisableMemdev(WM_HWIN hWin);参数:hWin 描述:窗口句柄WM_EnableMemdev()原型void WM_EnableMemde
10、v(WM_HWIN hWin);参数:hWin 描述:窗口句柄WM_InvalidateWndow()原型void WM_InvalidateWindow(WM_HWIN hWin);参数:hWin 描述:窗口句柄WM_Paint()原型void WM_Paint(WM_HWIN hWin);参数:hWin 描述:窗口句柄3.2 BUTTON API例程描述BUTTON_Create()创建BUTTON小工具BUTTON_SetBkColor()设置按钮背景色BUTTON_SetDefaultFont()设置BUTTON小工具默认字体BUTTON_SetDefaultTextAlign()设置
11、BUTTON小工具默认文本对齐方式BUTTON_SetBitmap()设置显示指定按钮时要使用的位图BUTTON_Create()描述在指定位置创建指定尺寸大小的BUTTON小工具原型BUTTON_Handle BUTTON_Create(int x0,int y0,int xSize ,ySize int Id,int Flags);参数:x0 描述:按钮的最左像素(在父窗口中) y0 按钮的最上像素(在父窗口中) xSize 按钮的水平尺寸(单位:像素) ySize 按钮的垂直尺寸(单位:像素) Id 按钮按下时要返回的ID Flags 窗口创建标记,为了使小工具可见,通常是WM_CF_S
12、HOW返回值已创建BUTTON小工具的句柄,函数失败时为0;BUTTON_SetBkColor()原型void BUTTON_SetBkColor(BUTTON_Handle hObj, unsiged int Index,GUI_COLOR Color);参数:hObj 描述:按钮的句柄 Index 颜色的索引 Color 要设置的颜色BUTTON_SetDefaultFont()描述设置用于显示BUTTON小工具文本GUI_FONT结构的指针原型void BUTTON_SetDefaultFont(const GUI_FONT * pFont);参数: pFont 描述:要使用的GUI_F
13、ONT指针BUTTON_SetDefaultTextAlign()描述设置用于显示BUTTON小工具文本的默认对齐方式原型void BUTTON_SetDefaultTextAlign(int Align);参数:Align 描述:要使用的文本对齐方式BUTTON_SetBitmap()原型Void BUTTON_SetBitmap(BUTTON_Handle hObj, unsigned int Index,const GUI_BITMAP * pBitmap);参数:hObj 描述:按钮的句柄 Index 位图的索引 pBitmap 位图结构的指针其他信息如果仅设置了未按下状态的位图,则当按钮按下或者禁用时,按钮也将显示该位图。3.3 EDIT API例程描述EDIT_Create()创建EDIT小工具EDIT_GetText()获取用户输入EDIT_SetFont()选择文本字体EDIT_SetMaxLen()设置编辑字段的最大字符EDIT_SetVlaue()设置当前值EDIT_Create()原型EDIT_Handle EDIT_Create(int x0,int y0,int xsize,int ysize,int Id,int ,MaxLen,int Flags);参数:x0 描述:编辑字段的最左像素(在父坐标中) y0 编辑字段的