课程设计(论文)基于S3C2440的串口传输及其界面设计1.doc

上传人:仙人指路1688 文档编号:2389501 上传时间:2023-02-17 格式:DOC 页数:33 大小:1,009.50KB
返回 下载 相关 举报
课程设计(论文)基于S3C2440的串口传输及其界面设计1.doc_第1页
第1页 / 共33页
课程设计(论文)基于S3C2440的串口传输及其界面设计1.doc_第2页
第2页 / 共33页
课程设计(论文)基于S3C2440的串口传输及其界面设计1.doc_第3页
第3页 / 共33页
课程设计(论文)基于S3C2440的串口传输及其界面设计1.doc_第4页
第4页 / 共33页
课程设计(论文)基于S3C2440的串口传输及其界面设计1.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《课程设计(论文)基于S3C2440的串口传输及其界面设计1.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于S3C2440的串口传输及其界面设计1.doc(33页珍藏版)》请在三一办公上搜索。

1、基于S3C2440的串口传输及其界面设计 专业: 爱心工程 班级: 0802 姓名: 学妹好 学号: 520 指导老师: 吾爱你 设计时间: 5201314 目录一、 绪论31. 设计目的32. 设计任务及要求3二、 MiniGUI在PC上的安装与运行31. 安装资源文件32. 安装库文件33. 安装qvfb44. 编译演示文件45. 配置参数46. 运行演示文件5三、 移植MiniGUI到开发板61. 设置超级终端62. 配置交叉编译环境63. 新建移植目录74. 编译libminigui75. 编译资源文件96. 修改MiniGUI.cfg文件97. 编译例子程序10四、 MiniGUI串

2、口传输界面设计111. MiniGUI设计知识介绍112. 主要部分解析133. 运行界面14五、 设计总结14六、 参考文献15七、 附录15串口界面源代码15一、 绪论1. 设计目的:1进一步巩固嵌入式系统的基本知识;2掌握嵌入式应用系统的基本结构;3掌握嵌入式系统开发环境建立和使用;4掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法;5学会查阅有关专业资料及设计手册;6. MiniGUI界面编程。2. 设计任务及要求:1掌握嵌入式系统开发环境建立和使用;2掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法;3、MiniGUI在PC上的安装、移植;4、Linux串口编程与Mi

3、niGUI界面编程;5、串口传输数据(位图)并在TQ2440的LCD上显示;6编写设计说明书(方案的确定、设计环节的考虑及必要说明等)及设备的使用说明;7绘制有关图纸。二、 MiniGUI在PC上的安装与运行1. 安装资源文件:1) 解压:# tar zxf minigui-res-1.6.10.tar.gz C /opt/minigui2) 安装:# make install2. 安装库文件:1) 解压:# tar zxf libminigui-1.6.10.tar.gz C /opt/minigui2) 编译:# ./configure # make3) 安装:# make install

4、3. 安装qvfb:1) 解压:# tar zxf qvfb-1.1.tar.gz C /opt/minigui2) 编译和安装:# ./configure # make # make install4. 编译演示文件:1) 解压:# tar zxf mg-samples-1.6.10.tar.gz C /opt/minigui2) 编译:# ./configure # make # make install5. 配置参数:1) # gedit /usr/local/etc/MiniGUI.cfg2) 输入:# gedit /etc/ld.so.conf.d/minigui.conf添加一行:

5、/usr/local/lib执行:# ldconfigldconfig命令为刷新系统共享库缓存。6. 运行演示文件:1) 打开qvfb:# /opt/minigui/qvfb-1.1/qvfb/qvfb &2) 配置qvfb:3) 打开演示文件:# cd /opt/minigui/mg-samples-1.6.10/src # ./ helloworld三、 移植MiniGUI到开发板1. 设置超级终端:打开“开始-附件-通讯-超级终端”,按照下图进行设置,然后打开开发板2. 配置交叉编译环境:1) 解压安装包:# tar xvfj EABI-4.3.3_EmbedSky_20091210.t

6、ar.bz2 C /opt2) 配置:# gedit /etc/profile ,添加一行pathmunge /opt/EmbedSky/4.3.3/bin ,如图所示:再执行# source /etc/profile 使配置立即生效。3) 输入# arm-linux-gcc v 查看是否成功:3. 新建移植目录:# mkdir /minigui-arm# mkdir /minigui-arm/tmp4. 编译libminigui1) 解压:# tar zxf libminigui-1.6.10.tar.gz C /minigui-arm2) 配置:# gedit configure在头文件开

7、头指明交叉编译路径: CC= arm-linux-gcc CPP= arm-linuxcpp LD= arm-linux-ld AR= arm-linux-ar RANLIB= arm-linux-ranlib STRIP= arm-linux-strip3) 编写脚本:# gedit /libminigui-1.6.10/libsetup.sh复制以下代码: #!/bin/sh ./configure -host=arm-linux -enable-jpgsupport=no -enable-pngsupport=no -enable-gifsupport=no -disable-lite

8、-prefix=/minigui-arm/tmp -enable-smdk2410ial=yes make make install4) 执行脚本:# ./libsetup.sh编译后会在/minigui-arm/tmp下生成etc include lib 目录更新缓存: # cd /minigui-arm/tmp/lib # ldconfig5. 编译资源文件1) 解压:# tar zxvf minigui-res-1.6.10.tar.gz -C /minigui-arm2) 进入minigui-res-1.6.10目录,修改config.linux文件的第11行 TOPDIR=/mini

9、gui-arm/tmp3) 编译:# make install生成的文件会保存到/minigui-arm/tmp/usr/local/lib/minigui/res 下,有以下几个目 录:bmp cursor font icon imetab6. 修改MiniGUI.cfg文件# gedit /minigui-arm/tmp/etc/MiniGUI.cfg再将MiniGUI.cfg下载到开发板 /etc 目录下,将/minigui-arm/tmp/lib目录下的文件下载到开发板/usr/lib目录下,将/minigui-arm/tmp/usr/local/lib下的minigui目录下载到开发

10、板/usr/local/lib目录下。7. 编译例子程序1) 解压:# tar zxf mg-samples-1.6.10.tar.gz -C /minigui-arm/2) 修改mg-samples-1.6.10目录下的configure文件:# gedit configure在头文件开头指明交叉编译路径: CC= arm-linux-gcc CPP= arm-linuxcpp LD= arm-linux-ld AR= arm-linux-ar RANLIB= arm-linux-ranlib STRIP= arm-linux-strip3) 编写脚本:# gedit sampsetup.s

11、h #!/bin/sh ./configure -build=i686-pc-linux-gnu -host=arm-linux -prefix=/minigui-arm/tmp/ LDFLAGS=-L/minigui-arm/tmp/lib CPPFLAGS=-I/minigui-arm/tmp/include CFLAGS=-I/minigui-arm/tmp/include make4) 拷贝可执行程序helloworld到开发板,并在超级终端运行测试程序:# ./helloworld如果开发板屏幕可以出来相应界面,则表示移植成功。四、 MiniGUI串口传输界面设计1. MiniGUI

12、设计知识介绍1) 基本的编程概念MiniGUI是一个图形用户界面支持的系统,通常的GUI编程概念均适用于MiniGUI编程,如窗口和事件驱动编程等。2) MiniGUI的三种运行模式MiniGUI-Threads。运行在 MiniGUI-Threads 上的程序可以在不同的线程中建立多个窗口,但所有的窗口在一个进程或者地址空间中运行。这种运行模式非常适合于大多数传统意义上的嵌入式操作系统,比如 uC/OS-II、eCos、VxWorks、pSOS 等等。当然,在 Linux 和 uClinux 上,MiniGUI 也能以 MiniGUI-Threads 的模式运行。 MiniGUI-Proce

13、sses。和 MiniGUI-Threads 相反,MiniGUI-Processes 上的每个程序是独立的进程,每个进程也可以建立多个窗口。MiniGUI-Processes 适合于具有完整 UNIX 特性的嵌入式操作系统,比如嵌入式 Linux。 MiniGUI-Standalone。这种运行模式下,MiniGUI 可以以独立进程的方式运行,既不需要多线程也不需要多进程的支持,这种运行模式适合功能单一的应用场合。比如在一些使用 uClinux 的嵌入式产品中,因为各种原因而缺少线程库支持,这时,就可以使用 MiniGUI-Standalone 来开发应用软件。 3) 头文件 他们是所有的M

14、iniGUI应用程序都必须包括的头文件。Common.h 包含MiniGUI常用的宏以及数据类型定义。Minigui.h 包含了全局的和通用的接口函数以及某些杂项函数的定义。Gdi.h 包含MiniGUI绘图函数的接口定义。Window.h 包含了窗口有关的宏,数据类型,数据结构定义以及函数接口声明。Control.h 包含预定义控件。4) 程序入口点一个 MiniGUI 程序的入口点为 MiniGUIMain,该函数原型如下: int MiniGUIMain (int argc, const char* argv);这个函数其实是标准 C 程序入口函数 main 的一个封装宏。5) 对话框的

15、编程在MiniGUI中,对话框是一类特殊的主窗口,这种主窗口只关注与用户的互向用户提供输出信息,但更多的是用于用户输入。对话框可以理解为子类化的主窗类。对话框模板如下: Typedef struct Char* class_name; DWORD dwStyle; Int x,y,w,h; Int id; Const char* caption; DWORD dwAddData; DWORD dwExStyle;CTRDATA;Typedef CTRLDATA* PCTRLDATA;Typedef struct DWORD dwStyle; DWORD dwExStyle; int x,y,w

16、,h; const char* caption; HICON hicon; HMENU hMenu; int controlnr; PCTRLDATA controls; DWORD dwAddData;DLGTEMPLATE;typedef DLGTEMPLATE * PDLGTEMPLATE; 结构CTRLDATA用来定义控件,DLGTEMPLATE用来定义对话框本身。在程序中,应该首先利用CTRLDATA定义对话框中所有的控件,并利用数组表示;控件在该数组中的顺序,也就是对话框中用户按TAB键时控件的切换顺序。然后定义对话框,指定对话框中的控件数目,并指定DLGTEMPLATE结构中的c

17、ontrols指针指向定义控件的数组。 在定义了对话框模板数据后,需要定义对方框的回调函数,并利用DialogBoxIndirectParam(&DlgYourTaste, HWND_DESKTOP, DialogBoxProc2, 0L)函数建立对话框。DialogBoxProc2 (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)的MSG_INITDIALOG进行消息的循环。6) 程序退出用户单击窗口右上角的关闭按钮时窗口过程函数将收到一个MSG_CLOSE消息。程序退出。2. 主要部分解析:1) 发送部分:发送部分采用的是按键发送

18、的消息,然后发送写指令把数据写到串口获取发送信息:存储到BUFF中。 GetWindowText (hwnd, buff, 10);获取发送ID号:发送文本信息:case IDC_BUTTON_SEND:GetWindowText (GetDlgItem (GetParent (hwnd1), IDC_SEND_CHARS),str,1024); nwrite=write(fd, str, strlen(str);if(nwrite=-1)printf(Write Serial Port Failedn); close(fd);break; 2) 接收部分:接收部分采用的是创建一个新线程的办法

19、,在新线程中接收数据,然后通过内存复制,把数据传回进程中。创建线程: if(pthread_create(&thread_id, NULL, (void*)ReadThread, NULL) !=0) printf(ReadThread_create is failed!n); /*读串口线程*/void ReadThread(void* arg)int nread;char readdata1024;char str1024;while(1) sleep(1);/printf(nnow it begain to read words.n);memset(&readdata,0,1024);n

20、read = read(fd,readdata,1024);if(nread=-1)printf(Read Serial Port Failedn);/printf(readdata:%sn,str);GetWindowText (GetDlgItem (GetParent (hwnd), IDC_RECIEVE_CHARS),str,strlen(str);memcpy(&strstrlen(str),&readdata,strlen(readdata); /printf(readdata:%sn,str);SetWindowText (GetDlgItem (GetParent (hwnd

21、), IDC_RECIEVE_CHARS),str);/SetWindowText (GetDlgItem (GetParent (hwnd), IDC_RECIEVE_CHARS),readdata);3. 运行界面:五、 设计总结1. 在PC上运行测试程序时要先打开qvfb,再运行程序。2. 在PC上运行程序时若提示:可以如图修改qvfb的配置3. 若程序运行成功,却只能显示部分界面:可以编辑/usr/local/etc/下的MiniGUI.cfg修改MiniGUI的配置4. 移植程序时要先确认是否配置了交叉编译环境。5. 下载文件至目标板使用超级终端直接发送,优点是方便快捷,缺点是传输速

22、度慢,因本次传送文件较小,故选用此法。6. 运行MiniGUI可执行文件时,可能会出现权限不足的提示:可以修改文件属性来解决:# chmod a+x ./文件名7. 虽然已经基本实现了功能,只是程序在目标板上运行不稳定,因时间有限未能在课程时间内完成改进,不过一定会在课外时间加以完善。8. 因linux是开源系统版本繁多,一些应用软件的安装和配置很容易出现各种问题,这时就非常考验解决问题的能力,要学会根据错误提示、说明文档、参考资料和网络资源,逐个解决问题,在解决问题的过程中,经验和能力可以得到很好的积累。六、 参考文献刘洪涛、孙天泽;嵌入式系统技术与设计;北京:人民邮电出版社MINIGUI编

23、程指南3.0;北京:北京飞漫软件技术有限公司TQ2440 用户手册;广州:天嵌技术有限公司七、 附录:串口界面源代码:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define IDC_BUTTON_SEND101 #define IDC_BUTTON_OPEN 102#define IDC_BUTTON_CLOSE 103#defin

24、e IDC_RECIEVE_CHARS 104 #define IDC_SEND_CHARS 105#define IDC_BUTTON_0106#define IDC_BUTTON_1107#define IDC_BUTTON_2108#define IDC_BUTTON_3109#define IDC_BUTTON_4110#define IDC_BUTTON_5111#define IDC_BUTTON_6112#define IDC_BUTTON_7113#define IDC_BUTTON_8114#define IDC_BUTTON_9115#define IDC_BUTTON_1

25、0116#define IDC_PROMPT_BAUDRATE 200 #define IDC_PROMPT_PORT 201 #define IDC_PROMPT_DATABIT 202#define IDC_PROMPT_STOPBIT 203#define IDC_PROMPT_PARITYBIT 204#define IDC_PROMPT_MESSAGE 205#define IDC_BOX_BAUDRATE 206#define IDC_BOX_PORT 207#define IDC_BOX_DATABIT 208#define IDC_BOX_STOPBIT 209#define

26、IDC_BOX_PARITYBIT 210int fd;HWND hwnd;/*对话框定义*/static DLGTEMPLATE DlgMyCom = WS_BORDER | WS_CAPTION, WS_EX_NONE, 0, 0, 626, 480, JXBs Com, 0, 0, 30, NULL, 0 ; /*定义各类控件*/static CTRLDATA CtrlMyTaste = static, WS_VISIBLE | SS_LEFT | WS_GROUP, 280, 360, 100, 50, IDC_PROMPT_PORT, JXB and FJR design in 20

27、11/12/20, 0 , /*定义端口选择的复选框*/ static, WS_VISIBLE | SS_LEFT | WS_GROUP, 16, 60, 100, 80, IDC_PROMPT_PORT, PORT SELECT, 0 , combobox, WS_VISIBLE | CBS_DROPDOWNLIST | CBS_NOTIFY, 100, 60, 100, 30, IDC_BOX_PORT, UART1, 60 ,/*定义波特率设置的复选框*/ static, WS_VISIBLE | SS_LEFT | WS_GROUP, 16, 90, 100, 110, IDC_PRO

28、MPT_BAUDRATE, SET BAUDRATE, 0 , combobox, WS_VISIBLE | CBS_DROPDOWNLIST | CBS_NOTIFY, 100, 90, 100, 30, IDC_BOX_BAUDRATE, 115200, 60 ,/*定义数据位的复选框*/ static, WS_VISIBLE | SS_LEFT | WS_GROUP, 16, 120, 100, 30, IDC_PROMPT_DATABIT, DATABIT, 0 , combobox, WS_VISIBLE | CBS_DROPDOWNLIST | CBS_NOTIFY, 100, 1

29、20, 100, 30, IDC_BOX_DATABIT, 8, 60 ,/*定义停止位的复选框*/ static, WS_VISIBLE | SS_LEFT | WS_GROUP, 16, 150, 100, 30, IDC_PROMPT_STOPBIT, STOPBIT, 0 , combobox, WS_VISIBLE | CBS_DROPDOWNLIST | CBS_NOTIFY, 100, 150, 100, 30, IDC_BOX_STOPBIT, 1, 40 ,/*定义奇偶校验位的复选框*/ static, WS_VISIBLE | SS_LEFT | WS_GROUP, 16,

30、 180, 100, 30, IDC_PROMPT_PARITYBIT, PARITYBIT, 0 , combobox, WS_VISIBLE | CBS_DROPDOWNLIST | CBS_NOTIFY, 100, 180, 100, 30, IDC_BOX_PARITYBIT, N, 60 , /*定义打开、关闭串口按钮*/ button, WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, 16, 210, 80, 30, IDC_BUTTON_OPEN, OPEN, 0 , button, WS_VISIBLE | BS_D

31、EFPUSHBUTTON | WS_TABSTOP | WS_GROUP, 120, 210, 80, 30, IDC_BUTTON_CLOSE, CLOSE, 0 ,/*定义信息显示模块*2*/ static, WS_VISIBLE | SS_LEFT | WS_GROUP, 16, 20, 65, 20, IDC_PROMPT_MESSAGE, INITIAL PORT, 0 , /*定义发送接收按钮*/ button, WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, 280, 300, 50, 30, IDC_BUTTON_S

32、END, SENT, 0 , /*定义数据显示模块*/ static, WS_VISIBLE, 280, 30, 65, 20, IDC_STATIC, RECEIVE DATA, 0 , CTRL_MLEDIT, WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_BASELINE | ES_AUTOWRAP, 280, 50, 180,100, IDC_RECIEVE_CHARS, , 0 , static, WS_VISIBLE, 280, 160, 65, 20, IDC_STATIC, SENTDATA, 0 , CTRL_MLEDIT, WS_VISI

33、BLE | WS_BORDER | WS_VSCROLL | ES_BASELINE | ES_AUTOWRAP, 280, 180, 180,100, IDC_SEND_CHARS, , 0 ,/*定义键盘*/ button, WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, 56, 360, 30, 30, IDC_BUTTON_0, 0, 0 , button, WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, 86, 360, 60, 30, IDC_BUTTON_1

34、0, clear, 0 , button, WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, 56, 270, 30, 30, IDC_BUTTON_1, 1, 0 , button, WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, 86, 270, 30, 30, IDC_BUTTON_2, 2, 0 , button, WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, 116, 270, 30, 30, IDC

35、_BUTTON_3, 3, 0 , button, WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, 56, 300, 30, 30, IDC_BUTTON_4, 4, 0 , button, WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, 86, 300, 30, 30, IDC_BUTTON_5, 5, 0 , button, WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, 116, 300, 30, 30, IDC_BUTTON_6, 6, 0 ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号