基于S3C2440的串口传输及其界面设计Word格式文档下载.docx
- 文档编号:22619317
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:38
- 大小:702.87KB
基于S3C2440的串口传输及其界面设计Word格式文档下载.docx
《基于S3C2440的串口传输及其界面设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于S3C2440的串口传输及其界面设计Word格式文档下载.docx(38页珍藏版)》请在冰豆网上搜索。
12
第六章设计总结及改进·
13
6.1设计总结·
14
6.2设计改进·
14
第七章心得体会·
15
第八章参考文献·
16
第九章附录·
17
第一章绪论
近几年,随着嵌入式系统的日益发展和32位嵌入式处理器以及图形显示设备的广泛应用,目标产品对GUI(图形用户界面)的需求越来越多。
由于嵌入式系统一般实时性要求很高,所以嵌入式系统下的GUI需要具有轻量级型、占用资源少、高性能等特点。
此外,嵌入式系统往往是一种定制设备,它对GUI的需求各不相同,因此,GUI必须也可以定制。
而MiniGUI是一个非常适合实时嵌入式产品的高效、可靠、可定制、小巧灵活的图形用户界面支持系统,被广泛的应用于高端科技产品中。
利用MiniGUI开发出良好的人机交互界面已成为嵌入式开发中的迫切需求。
MiniGUI是嵌入式系统的高级图形系统。
为嵌入式软件的开发提供了完整的图形系统支持,是全球针对嵌入式Linux仅有的两个商用嵌入式GUI系统之一。
MiniGUI还为嵌入式Linux系统提供了完整的多进程支持;
可以MiniGUI-Processes、MiniGUI-Threads或者MiniGUI-Standalone三种运行模式运行。
这里我们采用它来设计通信软件。
串口通信软件是最普通的一款数据通信软件,通过这个软件可以完成不同机器上数据的传输。
工程上,它也常常用来作为通信测试软件。
比如我们常见的串口软件助手,就是一个很好的通信测试软件。
通过这个课程实践,我们可以进一步巩固嵌入式系统的基本知识;
掌握嵌入式应用系统的基本结构;
掌握嵌入式系统开发环境建立和使用;
掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法。
第二章MiniGUI在PC机上的安装
2.1移植源代码准备
从http:
//www.minigui.org/res.shtml网站上下载相应的软件压缩包:
libminigui-1.6.10.tar.gz
minigui-res-1.6.tar.gz
mg-samples-1.6.10.tar.gz
mde-1.6.10.tar.gz
还要从相应的网站上下载qvfb-1.0.tar.gz压缩文件。
2.2移植基本内容
2.2.1安装资源文件
我们首先要安装MiniGUI的资源文件。
按照如下步骤:
1、选择解压目录新建minigui
2、使用tar命令解压minigui-res-1.6.10.tar.gz,可以使用如下命令:
3、该命令将建立minigui-res-1.6.10/目录。
用cd命令改变到新建目录中,然后以超级用户身份运行makeinstall命令:
2.2.2配置和编译MiniGUI
1、使用tar解开libminigui-1.6.10.tar.gz到新的目录:
2、编译:
安装:
2.2.3安装qvfb
1)使用tar命令解压qvfb-1.0.tar.gz到新的目录:
2)使用该命令建立qvfb-1.0/目录。
改变到这一新目录,然后执行
3)运行下面的命令编译并安装qvfb:
2.2.4编译并运行MiniGUI的控件演示程序
在安装好MiniGUI函数库之后,应该解开并编译mg-sample演示程序包:
1)使用tar命令将mg-samples-1.6.10.tar.gz软件包解开到目录:
2)进入mg-samples-1.6.10/目录,依次运行./configure和make编译演示程序:
2.2.5配置参数
输入:
#vi/etc/ld.so.conf.d/minigui.conf
添加一行:
/usr/local/lib
执行:
#ldconfig
ldconfig命令为刷新系统共享库缓存
2.3测试
1、打开qvfb:
#/opt/minigui/qvfb-1.0/qvfb/qvfb&
2、配置qvfb
1)打开演示文件:
#cd/opt/minigui/mg-samples-1.6.10/src
#./helloworld
第三章MiniGUI在ARM上的移植
3.1移植基本内容
3.1.1打开目录opt新建目录minigui-arm
#mkdirminigui-arm
#cdminigui-arm
打开minigui-arm目录,新建nfsroot目录,用于安装编译以后的库文件
#mkdirnfsroot
3.1.2安装libminigui
将下载的源码放到minigui-arm目录下,解压libminigui-1.6.10.tar
#tar–zxvflibminigui-1.6.10.tar
#viconfigure
修改configure,在头文件开头指明交叉编译器
CC=arm-linux-gcc
CPP=arm-linux—cpp
LD=arm-linux-ld
AR=arm-linux-ar
RANLIB=arm-linux-ranlib
STRIP=arm-linux-strip
将libcross.sh考到minigui的lib库的解压文件夹中
这是一个脚本文件,在其中可以修改编译出来的目录路径,这里修改为/opt/minigui-arm/nfsroot
然后开始执行命令
[root@localhostminigui-arm]#./libcross.sh
执行的时候会把编译以后的资源安装到/opt/minigui-arm/nfsroot中,在这之下会有etc
include
lib几个目录产生。
然后进入/opt/minigui-arm/nfsroot/lib,执行
[root@localhostlib]#ldconfig
libminigui的交叉编译工作就算完成了。
3.1.3安装minigui-res
首先解压minigui-res-1.6.10.tar
[root@localhostminigui-arm]#tar–zxvfminigui-res-1.6.10.tar
进入/home/root/minigui-arm/minigui-res-1.6.10目录
修改config.linux文件的第11行
TOPDIR=/opt/minigui-arm/nfsroot
保存退出,然后将rescross.sh考到minigui的res资源解压文件夹中
在minigui-res-1.6.10下运行#./rescross.sh
资源文件被安装到/opt/minigui-arm/nfsroot/usr/local/lib/minigui/res,下面有这几个东西
bmp
cursor
font
icon
imetab
3.1.4修改/opt/minigui-arm/nfsroot/etc/MiniGUI.cfg文件
[system]
#GALengineanddefaultoptions
gal_engine=fbcon
defaultmode=800x480-16bpp
#IALengine
ial_engine=console
mdev=/dev/mice
mtype=IPS2
[fbcon]
[qvfb]
display=0
然后把MiniGUI.cfg下载到开发板的/etc/目录下
3.1.5下载minigui的运行库
把PC上/opt/minigui-arm/nfsroot/lib中所有的运行库下载到开发板上的/usr/lib目录下;
在把PC上/opt/minigui-arm/nfsroot/usr/local/lib下的minigui目录整个下载到开发板的/usr/local/lib下面
在开发板的/etc下面应该有MiniGUI.cfg文件存在。
现在准备工作已经已经完成,下面开始移植一些演示程序。
3.1.6编译mg-samples-1.6.10
1)首先解压mg-samples-1.6.10.tar
[root@localhostminigui-arm]#tar–zxvfmg-samples-1.6.10.tar
2)进入/opt/minigui-arm/mg-samples-1.6.10目录,修改configure文件,
在文件的最前面加上交叉编译的工具
CPP=arm-linux-cpp
3)将simplecorss.sh考到sample例子解压文件夹中然后执行
[root@localhostminigui-res-1.6.10]#./simplecorss.sh
3.2测试
进入/opt/minigui-arm/mg-samples-1.6.10/src下,然后删除*.c,.o和Makefile文件[root@localhostsrc]#rm–f*.c
[root@localhostsrc]#rm–f*.o
[root@localhostsrc]#rm–fMakefile
把/home/root/minigui-arm/mg-samples-1.6.10/src下剩下的所有文件和目录下载到开发板的/usr/minigui下面,没有这个目录自己建一个。
现在就可以在开发板上运行minigui的演示程序了。
[root@minigui-arm]#./helloworld
LCD上显示出minigui应用程序,移植成功。
第四章MiniGUI串口传输界面设计
4.1MiniGUI设计知识介绍
4.1.1基本的编程概念
MiniGUI是一个图形用户界面支持的系统,通常的GUI编程概念均适用于MiniGUI编程,如窗口和事件驱动编程等。
4.1.2头文件
<
minigui/common.h>
<
minigui/minigui.h>
minigui/gdi.h>
minigui/window.h>
他们是所有的MiniGUI应用程序都必须包括的头文件。
Common.h包含MiniGUI常用的宏以及数据类型定义。
Minigui.h包含了全局的和通用的接口函数以及某些杂项函数的定义。
Gdi.h包含MiniGUI绘图函数的接口定义。
Window.h包含了窗口有关的宏,数据类型,数据结构定义以及函数接口声明。
Control.h包含预定义控件。
4.1.3程序入口点
一个C程序的入口点为main函数,而一个MiniGUI程序的入口点为
MiniGUIMain,该函数原型如下:
intMiniGUIMain(intargc,constchar*argv[])
main函数已经在MiniGUI的函数库中定义了,该函数在进行一些MiniGUI的出始化工作之后调用MiniGUIMain函数。
参数argc和argv与C程序main函数的参数argc和argv的含义是一样的,分别为命令行参数个数和参数字符串数组指针。
4.1.4对话框的编程
在MiniGUI中,对话框是一类特殊的主窗口,这种主窗口只关注与用户的互—向用户提供输出信息,但更多的是用于用户输入。
对话框可以理解为子类化的主窗类。
对话框模板如下:
Typedefstruct
{
Char*class_name;
DWORDdwStyle;
Intx,y,w,h;
Intid;
Constchar*caption;
DWORDdwAddData;
DWORDdwExStyle;
}CTRDATA;
TypedefCTRLDATA*PCTRLDATA;
Typedefstruct
intx,y,w,h;
constchar*caption;
HICONhicon;
HMENUhMenu;
intcontrolnr;
PCTRLDATAcontrols;
}DLGTEMPLATE;
typedefDLGTEMPLATE*PDLGTEMPLATE;
结构CTRLDATA用来定义控件,DLGTEMPLATE用来定义对话框本身。
在程序中,应该首先利用CTRLDATA定义对话框中所有的控件,并利用数组表示;
控件在该数组中的顺序,也就是对话框中用户按TAB键时控件的切换顺序。
然后定义对话框,指定对话框中的控件数目,并指定DLGTEMPLATE结构中的controls指针指向定义控件的数组。
在定义了对话框模板数据后,需要定义对方框的回调函数,并利用DialogBoxIndirectParam(&
DlgYourTaste,HWND_DESKTOP,DialogBoxProc2,0L)函数建立对话框。
DialogBoxProc2(HWNDhDlg,intmessage,WPARAMwParam,LPARAMlParam)的MSG_INITDIALOG进行消息的循环。
4.1.5程序退出
用户单击窗口右上角的关闭按钮时窗口过程函数将收到一个MSG_CLOSE消息。
程序退出。
4.2串口传输知识介绍
串口传输数据是指把数据按照一帧一帧的方式,进行发送。
常用的发送接口有RS232,USB。
这里我们采用的是RS232的接口。
在进行数据传输之前,首先要设置好串口传输的端口波特率,数据校验位,停止位等信息。
如下图所示就是超级终端设置的串口传输设置:
设置好后,就可以进行串口的传输。
4.3设计方法及整体框架
4.3.1设计界面的样式:
4.4重要程序解析
4.4.1发送部分:
发送部分采用的是按键发送的消息,然后发送写指令把数据写到串口
获取发送信息:
存储到BUFF中。
GetWindowText(hwnd,buff,10);
获取发送ID号:
发送文本信息:
caseIDC_SEND:
nwrite=write(fd,buff,strlen(buff));
if(nwrite>
0)
{
printf("
Receiveletters=%s\n"
buff);
nwrite=%d\n"
nwrite);
nwrite=0;
}
break;
4.4.2接收部分:
接收部分采用的是创建一个新线程的办法,在新线程中接收数据,然后通过内存复制,把数据传回进程中。
创建线程:
if(pthread_create(&
thread_id,NULL,(void*)ReadThread,NULL)!
=0)
readthreadcreateisfailed\n"
);
线程程序:
voidReadThread(void*arg)
intnread;
charstr[100];
while
(1)
sleep
(1);
str[99]='
\0'
;
nread=read(fd,str,100);
if(nread>
sendlettersnread=%d\n"
nread);
str=%s\n"
str);
memcpy(&
buffer[strlen(buffer)],&
str,strlen(str));
}
}
显示到文本框中:
caseIDC_RECEIVE:
SetWindowText(GetDlgItem(GetParent(hwnd),IDC_CHARS),buffer);
for(i=0;
i<
100;
i++)
buffer[i]='
break;
第五章程序调试
5.1发送部分调试及结果
程序发送时,在输入框中输入所需要发送的文字,然后点击send按钮观察超级终端上的输出有输出输入的数值表明发送成功
5.2接收部分调试及结果
接收部分的调试方法是:
首先在超级终端中输入你想要发送的数据内容,然后按下回车键。
这时可以看看是否返回了。
点击超级终端的接收按键,观察接收控件是否显示了发送的数据有就表示接收成功
第六章设计总结及改进
6.1设计总结
1.在安装qvfb1.0的时候,./configure完后,会出现未安装C++、X错误、qt错误在网络上找到资料依次运行
apt-getinstallbuild-essential
X错误
apt-getinstallxorg-dev
qt
sudoapt-getinstalllibqt3-headerslibqt3-mt-dev
./configure--with-qt-includes=/usr/share/qt3/include--with-qt-libraries=/usr/share/qt3/lib/
2.运行MiniGUI可执行文件时,可能会出现权限不足的提示:
可以修改文件属性来解决:
#chmoda+x./文件名
3.NFS配置:
NFS配置时,首先要修改开发板的IP地址,使之与LINUX处于同一网关。
看到如上显示,说明挂载成功。
4.在PC上运行测试程序时要先打开qvfb,再运行程序。
5.程序的编译方法:
如何编译自己写的minigui程序,比如21.c:
gcc-o2121.c-lpthread-lminigui-ljpeg-lpng-lz
编译arm中运行的程序。
把自己的程序拷贝到mg-sample/src目录底下。
修改好编译路径,编译。
6.2设计改进
6.2.1界面设计的改进
界面设计还不够,提供的端口比较少,在发射接收过程中由于没有处理好程序,接受中会出现问题,可以添加进度显示界面大小可调整等……
6.2.2程序的优化
线程程序运行存在延时比较长,影响通信速度。
在设计线程时,应当应减少延时时间。
这里采用的软件接收方式是主动接收的,可以采用被动接收的方法。
更符合人们的使用习惯。
程序中可以减少一部分的全局变量设置,减少内存空间的使用。
6.2.3调试方法的优化
调试时,可以借助串口调试软件来进行调试,界面如下:
第七章设计心得体会
这次课程实际明白了miniGUI在PC机上的安装以及移植到ARM开发板的交叉编译。
两者过程的本质是一样的,只不过是所用的编译工具不同以及运行的环境不同而已。
在PC机上安装成功之后,移植便可照此思路。
在ARM开发板上的嵌入式操作系统中类似的复制MiniGUI所需的资源和环境(可理解为路径)即在PC机/usr/lib目录下的文件交叉编译后移植到ARM开发板上的/usr/lib路径下;
PC机/usr/local/lib路径下的文件交叉编译后同样移植到ARM开发板的/usr/local/lib路径下;
唯一需要特别修改的就是MiniGUI.cfg文件。
因为该文件配置了MiniGUI的图像引擎和输入引擎。
在PC机通常采用qvfb作为图像引擎和输入引擎,而在开发板则不同。
不同的开发板有不同的显示设备和输入输出驱动。
所以,该文件的正确配置直接影响MiniGUI程序界面能否在开发板上显示。
同样将MiniGUI.cfg文件下载到开发板的/etc目录下;
通过这次课程设计对嵌入式的开发应用有了比较形象的理解,以前只是停留在书本上,只是大体知道这些应用,当只有自己亲手操作才能有更深刻的理解。
刚开始是设计图片传输的串口程序就做出了串口界面,由于以前没有接触过这种程序集界面设计的语言使用所以不懂的图片的解码及传输,只好传输字符串,但是结果不是很理想,传输后会持续的进行,不过还是懂的了填充背景及界面按钮静态控件的设置,人机交互界面的设计。
由于时间等问题,最终没能实现理想的结果,但也对交叉编译环境的创建和pc机和开发板的链接以及开发板的nfs下载。
总之,通过此次课程设计,锻炼实际动手能力,理解了文件系统,应用程序的移植。
对Linux操作系统以及程序的编译链接运行有了进一步的认识。
初步了解掌握了Linux下MiniGUI图形用户界面的开发。
因为在前期的移植和交叉编译过程遇到很多问题,导致后面重要结果不能完整出来。
总之,自己摸索学到很多知识!
第八章参考文献
1.刘洪涛、孙天泽;
嵌入式系统技术与设计;
北京:
人民邮电出版社
2.李佳.ARM系列处理器应用开发技术完全手册;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 S3C2440 串口 传输 及其 界面设计