实验17 嵌入式 浙江理工大学

上传人:re****.1 文档编号:508322433 上传时间:2023-10-20 格式:DOCX 页数:10 大小:183.96KB
返回 下载 相关 举报
实验17 嵌入式 浙江理工大学_第1页
第1页 / 共10页
实验17 嵌入式 浙江理工大学_第2页
第2页 / 共10页
实验17 嵌入式 浙江理工大学_第3页
第3页 / 共10页
实验17 嵌入式 浙江理工大学_第4页
第4页 / 共10页
实验17 嵌入式 浙江理工大学_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《实验17 嵌入式 浙江理工大学》由会员分享,可在线阅读,更多相关《实验17 嵌入式 浙江理工大学(10页珍藏版)》请在金锄头文库上搜索。

1、任课教师:黄静指导老师:汪泓嵌入式技术2011-2012学年第 2学期)实验报告实验名称专业班级09通信(1)班学生姓名学生学号 QO9680111实验 17 列表框控件的使用一、实验目的学习列表框控件的使用,了解图形系统中控件的使用方法。继续学习操作系统的文件相 关 API 函数,查找指定扩展名的文件并在列表框中显示其扩展名。二、实验内容通过使用操作系统中文件相关 API 函数,列出系统中存储在电子硬盘中的指定扩展名 的文件(比如:*.bmp位图文件)。使用列表框控件把文件名列出来,同时,可以使用键盘 选择某位图文件并显示该图片。三、预备知识1、用ARM SDT 2.5或ADS1.2集成开发

2、环境,编写和调试程序的基本过程。2、基于uCOS-II操作系统的应用程序的框架结构。3、操作系统的绘图API函数和绘图设备上下文(DC)的使用。四、实验设备及工具硬件:ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机PentiumlOO 以上。软件:PC机操作系统win98、Win2000或 WinXP、ARM SDT 2.51或ADS1.2集成开发 环境、仿真器驱动程序、超级终端通讯程序五、实验原理控件是可视化编程的基础,每个控件是一个相对独立的组件,有其自有的显示方式,动 态内存管理模式以及与系统通信的方法。对于应用程序开发人员来说,并不需要掌握控件内 部到底是怎么样工作

3、,只需要使用控件提供的 API 函数,设置控件的属性,即可改变控件 的显示结果。开发平台的uCOS-II操作系统提供了列表框、文本框、图片框、按钮和窗口等 几种简单的控件及其API函数。请参考附录API函数系统控件部分,在Control.h中定义。在使用系统控件之前需要通过initOSCtrl()函数初始化系统的控件,为动态创建控件分 配空间。与系统控件有关的API函数有:SetWndCtrlFocus()函数设置窗口中指定ID的控件为焦点控件,返回原来焦点控件的ID; GetWndCtrlFocus()函数获取当前焦点控件的ID。ReDrawOSCtrl()函数重画所有的系统可见控件,当由于

4、某原因清屏后必须重画控件。 GetCtrlfromID()函数从指定ID的控件获取该控件的指针。SetCtrlMessageCallBk()函数设置指定控件的消息回调函数,程序中收到发给该控件的消 息后可以调用其消息回调函数。OSOnSysMessage()函数是系统的消息处理函数,程序中收到消息后可以用该函数将其 传送给控件。下面是列表框控件的结构定义:typedef structU32 CtrlType;U32 CtrlID; structRECT ListCtrlRect; structRECT ClientRect;U32 FontSize;U32 style;U8 bVisible;

5、PWnd parentWnd;U8 (*CtrlMsgCallBk)(void*);U16 *pListText;int ListMaxNum;int ListNum;int ListShowNum;int CurrentHead;int CurrentSel;/控件的类型/列表框控件的 ID /列表框的位置和大小 /列表框列表区域/列表框字体大小/列表框的风格/是否可见/控件的父窗口指针/列表框控件的消息回调函数/列表框所容纳的文本指针/列表框所容纳的最大文本的行数/列表框所容纳的文本的行数/列表框所能显示的文本行数/列表的表头号/当前选中的列表项号structRECT ListCtrlRo

6、llRect; /列表框滚动条方框structRECT RollBlockRect;/列表框滚动条滑块方框ListCtrl,*PListCtrl在程序中可以使用CreateListCtrl()函数来创建列表框控件,该函数返回指向列表框的指 针,并用SetWndCtrlFocus()函数将焦点转移到该控件上。注意在系统中每个控件具有唯一的 ID,用它来标识控件。然后就可以使用AddStringListCtrl ()函数向该列表框中添加表项了, 在本实验中添加的是所查找到的文件名六、实验步骤1、进入嵌入式开发平台的BIOS,连接USB电缆并激活U盘,在PC机上向平台的电 子硬盘中复制几个24位真彩

7、色位图文件(扩展名为Bmp)。2、新建工程,将“Exp17列表框控件的使用”中的文件加入工程。3、打开Main.c文件,编辑Main_Task任务中的代码,编写一个函数实现文件列表的显 示。首先创建一个列表框控件,通过文件相关的API函数,列出扩展名为Bmp的文件,并 添加到上面创建的列表框中。提示:1) 用CreateListCtrl()函数创建列表框,其ID在程序中指定:#define ID_MainListBox 101/列表框控件 ID在使用该函数前先用SetRect(&rect, 0,18,120,200)设置一个矩形结构rect,并将 其作为CreateListCtrl()的参数,

8、用来规定列表框的大小范围。2) 使用ListNextFileName()函数列出当前目录位置以后的第一个符合指定扩展名的 文件名,同时,当前目录的位置指针自动下移。如果成功则返回TRUE,如果没有适合 的文件则返回FALSE。该函数属于文件相关函数,请参考附录API函数。3) 因为ListNextFileName()函数得到的文件名不是Unicode字符串,所以要通过 strChar2Unicode()函数转换成Unicode字符串,才可以添加到列表框中显示出来。同时, 为了以后方便 得到文件名字符 串的非 Unicode 格式,提倡在 一个数组中记 录 ListNextFileName()返

9、回的char型字符串,以便以后打开相应的文件。4、编写键盘消息响应函数,定义按键,使列表框的高亮度条可以向上或向下滚动,按 确定键可以绘制高亮条目对应的图片。提示:1) 通过ListCtrlSelMove()函数改变列表框的高亮度条的位置。但是,用户程序的 键盘消息响应函数中可以不必考虑通过“向上键”或“向下键”来移动列表框的高亮度 条。因为列表框控件对这两个按键已经作了处理。从程序中可以看出,如果用户的键盘 消息响应函数onKey()中不处理这两个按键就会返回FALSE,从而在Main_Task的消息 循环中就会用OSOnSysMessage()函数将该键盘消息分发给焦点控件本身处理,系统的

10、 每个控件都有自己的消息处理函数,例如列表框的是OSListCtrlOnMessage().2) 使用ShowBmp()函数可以显示指定文件名的真彩色的位图图片。该绘图函数定 义在Display.h中,请参考附录API函数。图4-7 Main_Task中的消息循环5、编写Main_Task中的消息循环,等待键盘消息并处理该消息。程序的流程图如图4-7 所示。6、用ARM SDT 2.5或ADS1.2编译、下载并调试上述程序,检查运行结果。7、生成发行版本的.bin文件,通过USB下载到嵌入式开发板中,运行并检查输出结果。七、实验结果截图:图(1)图(2)图(3) 左边的列表框列出了所要展示的所

11、有图片,右边展示的图片,通过键盘上的方向键可以选择 控制要播放的图片,在本报告中只展示了两张图片。程序:#include.ucos-iiincludes.h/* uC/OS interface */#include .ucos-iiaddosaddition.h#include .incdrv.h#include .incdrvOSFile.h#include .incdrvUstring.h#include #pragma import(_use_no_semihosting_swi) / ensure no functions that use semihostingOS_STK Main

12、_StackSTACKSIZE*8=0, ; /Main_Test_Task 堆栈 void Main_Task(void *Id);/Main_Test_Task#define Main_Task_Prio 12Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx/*已经定义的 OS 任务tcp 监控任务11以太网物理层监控任务8触摸屏任务9键盘任务10lcd 刷新任务59系统任务1*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1

13、* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx /*事件定义*/ void initOSG

14、UI() /初始化操作系统的图形界面 OS_EVENT *Nand_Rw_Sem;/and you can use it as folloeing:/ Nand_Rw_Sem=OSSemCreate(1); 满足互斥条件/ OSSemPend(Nand_Rw_Sem,0,&err);/ OSSemPost(Nand_Rw_Sem);/Nand_Flash 读写控制权旗语/创建 Nand-Flash 读写控制权旗语,初值为 1OS_EVENT *Uart_Rw_Sem;/and you can use it as folloeing:/ Uart_Rw_Sem=OSSemCreate(1);斥条件/ OSSemPend(Uart_Rw_Sem,0,&err);/ OSSemPost(Uart_Rw_Sem);/Uart 读写控制权旗语/创建 Uart 读写控制权旗语,初值为 1 满足互initOSMessage(); initOSList();initOSDC();initOSCtrl();initOSFile(); / Main function

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

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