雷雨能1,赖文娟1,曾刊1,刁中凯2,高洁1
(1.中国兵器工业第五八研究所军品部,四川绵阳621000;2.中国人民解放军驻157厂军事代表室,四川成都611930)
摘要:为了实现对火炮表尺、方向等参数的实时可视显示和有效控制,设计一种基于嵌入式Linux系统Qt/Embedded的手持炮长终端应用界面软件。首先在工作计算机平台中塔建嵌入式Qt开发环境,再针对键盘模块、CAN总线通信模块和图形显示模块进行软件模块设计,最后将程序移植至Freescale i.MX53处理器平台中运行。该程序解决了对火炮的有效控制和可视显示,大大提高了火炮的作战效率。实验结果表明,基于Qt/Embedded的手持炮长终端界面响应速度快,运行稳定,满足性能要求。
教育期刊网 http://www.jyqkw.com
关键词 :Qt;嵌入式Linux;CAN总线;炮长终端
中图分类号:TN911?34 文献标识码:A 文章编号:1004?373X(2015)18?0036?03
收稿日期:2015?03?25
0 引言
当前,嵌入式系统是目前最流行的计算机应用技术之一,而嵌入式Linux系统却是其中发展最快的也是应用最广的嵌入式操作系统[1]。
Qt是一种基于C++的包含了跨平台开发工具和国际化支持工具的GUI系统[2],由于其具有C++图形类库强大、跨平台移植方便、丰富的多线程支持和很高的响应速度等优点,目前已经越来越多地应用于嵌入式系统界面设计中。
现代火炮系统作为局部地面战争中陆军装备的主力军,面临着智能化和信息化的发展趋势。炮长手持终端作为一种PDA 设备,主要用于有效显示和控制火炮的各种参数,便于火炮对目标的精确打击,大大提高了部队的信息化作战能力。
本系统基于Freescale i.MX53 处理器和Linux 操作系统,硬件接口包含串口总线、CAN总线、网口、LCD和触摸屏;界面设计包括键盘模块、CAN 通信模块、图形显示模块。
1 嵌入式Qt 开发流程
Linux系统下Qt/Embedded开发详细流程如下:
(1)选定嵌入式Linux硬件平台;
(2)塔建Qt开发环境。在工作计算机上安装Linux 操作系统,安装Qt/X11[3],Qt/Embedded(X86),Qt/Embed?ded(ARM)三个版本的Qt SDK,并安装配置Qt Creator开发工具。Qt/X11 版本主要用于产生Qt开发工具,最重要的是可以得到QVFB 工具[4]。QVFB 可以不需要实际的开发板,在工作计算机上开发Qt/Embedded应用程序,然后进行调试,再下载到目标硬件平台上。Qt/Em?bedded版本主要应用于嵌入式Linux系统的版本;
(3)根据目标硬件平台的需要,交叉编译Qt/Em?bedded库文件;
(4)在工作计算机上使用Qt Creator开发工具进行应用程序的编辑和调试。在设计调试阶段,为方便调试,编辑编译成Qt/Embedded(X86)版本的程序,使用QVFB工具,将调试输出结果显示在一个仿真嵌入式设备显示终端的模拟器上。如果仿真测试正确无误,再编译成Qt/Embedded(ARM)版本应用程序;
(5)移植Qt/Embedded(ARM)版本应用程序到目标硬件平台;
(6)在目标硬件平台运行Qt/Embedded(ARM)版本应用程序。
2 嵌入式Qt 环境塔建
工作计算机操作系统为Fedora Core 14。
2.1 准备的开发工具包
Qt creator开发工具包:
qt?creator?linux?x86?opensource?2.5.1.bin
Qt SDK包:
qt?everywhere?opensource?src?4.8.2.tar.gz
Qt库包:
tslib?qt.tar.bz2
交叉编译工具:
gcc?4.4.4?glibc?2.11.1?multilib?1.0.tar.bz2
2.2 安装Qt/X11版
执行如下操作:
#cd /usr/local/Trolltech/PC
#tar –jxvf qt?everywhere?opensource?src?4.8.2.tar.gz
# ./configure
#gmake
#gmake install
2.3 安装Qt/Embedded(X86)版
执行如下操作:
#cd /usr/local/Trolltech/X86
#tar –jxvf qt?everywhere?opensource?src?4.8.2.tar.gz
#./configure ?embeddedx86?qt?gfx?qvfb ?qt?kbd?qvfb ?qt?mouse?
qvfb
#gmake
#gmake install
# cd /usr/local/Trolltech/PC/tools/ qvfb
#make
#cp?rf/usr/local/Trolltech/PC/bin/qvfb/usr/local/Trolltech/X86/bin
2.4 安装Qt/Embedded(ARM)版
编译Qt库并修改环境变量,执行以下命令:
#cd /usr/local/arm/
#tar –jxvf tslib?qt.tar.bz2
#./autogen.sh
#./configure??host=arm?none?linux?gnueabi??prefix=/qts/tslib ??enable?debug=no
#make
#make install
#export PATH=/usr/local/arm/gcc?4.4.4?glibc?2.11.1?multilib?1.0/arm?fsl?linux?
gnueabi/bin:$PATH
最后,配置和编译Qt ,执行如下命令:
# ./configure ?prefix /usr/local/Trolltech/ARM ?opensource ?confirm?license ?release ?shared ?embedded arm ?xplatformqws/linux?arm?g++ ?depths16,18,24 ?fast ?optimized?qmake ?pch ?qt?sql?sqlite ?qt?libjpeg ?qt?zlib ?qt?libpng ?qt?freetype ?little?endian ?host?little?endian ?no?qt3support ?no?libtiff ?no?libmng ?no?opengl ?no?mmx ?no?sse ?no?sse2 ?no?3dnow ?no?openssl ?no?webkit ?no?qvfb ?no?phonon ?no?nis ?no?opengl ?no?cups ?no?glib ?no?xcursor ?no?xfixes ?no?xrandr ?no?xrender \ ?no?separate?debug?info ?nomake examples ?nomake tools ?nomake docs ?D__ARM_ARCH_5TEJ__ ?qt?mouse?tslib ?I/ /qts/tslib/include ?L/ /qts/tslib/lib
#make
#make insatll
2.5 安装Qt creator开发工具
执行如下命令:
#./chmod +x qt?creator?linux?x86?opensource?2.5.1.bin
# ./qt?creator?linux?x86?opensource?2.5.1.bin
3 炮长终端界面设计与实现
炮长终端应用软件包含软键盘、CAN通信、图形显示界面和各个模块的整合,其主界面显示如图1所示。
(1)键盘模块的实现
软键盘作为输入设备,能够对火炮各参数进行设定,类似于电脑键盘的数字小键盘,采取了将所有按键做成一个类,类名为Keyboard,每个按键信号都和对应槽函数进行一一相连。软键盘显示如图2所示。
(2)CAN总线通信模块的实现
CAN是一种控制器局域网,一个串行的、异步的、多主机的通信协议,属于全数字化,双向的现场总线[5]。本文通过开辟2个线程分别用来接收和发送各参数数据,并进行数据显示、存储和处理。该模块主要包括CAN参数设置初始化程序、数据接收处理程序和数据发送处理程序。在CAN初始化程序中,主要设置CAN波特率、端口号、滤波器、协议类型、数据格式、ID等参数。在数据接收和数据发送处理程序中,主要针对火炮基准射向、射击修正、装定表尺和当前表尺等参数进行处理和显示。
(3)图形界面的实现
图形以2个直方图来表示(见图3):左边直方图代表火炮的装定表尺和当前方表尺的差值;下边直方图代表火炮的装定方向和当前方向的差值。该图形使炮长能够直观而准确地感知火炮的到位情况,以便能够快速有效地控制火炮的到位。显示图形界面显示如图3所示。图3 中,装定表尺为100,当前表尺为200,差值为100,炮长需要对表尺向左继续摇动火炮2 圈才能到位。装定方向为0,当前方向为200,差值为200,炮长需要对方向向右继续摇动火炮才能到位。
4 移植与运行
使用Qt Creator 工具编辑程序并编译成Qt/Embed?ded(ARM)版本可执行文件,文件名为gunV0。通过安装配置NFS服务器,挂载网络文件系统,移植可执行文件,执行操作:
# mount ?t nfs 192.168.1.5:/nfsroot /mnt/nfs/ ?o nolock
#cp /mnt/nfs/gunV0 /root/tmp
由于Qt没有自带中文字体库,在此须添加文泉字库的支持,把文泉字库wenquanyi.ta解压后放到目标硬件平台Qt安装目录下。最后运行可执行程序,执行:
#./gunV0 ?qws ?font unifont &
5 结语
相对基于MiniGUI 的界面开发,基于Qt 的界面设计,其C++开发类更加完整,功能更加全面,设置控件和属性更加简单,而且提供了免费的开发工具,开发成本较低[6],开发起来更加方便。经过现场调试和测试,炮长终端界面友好,运行稳定,响应速度快,可满足实时性要求。
教育期刊网 http://www.jyqkw.com
参考文献
[1] 弓雷.ARM嵌入式Linux系统开发详解[M].北京:清华大学出版社,2010.
[2] 黄超.基于Qt的嵌入式GUI的研究与实现[D].长春:吉林大学,2011.
[3] 李艳民.基于Qt 跨平台的人机交互界面的研究与应用[D].重庆:重庆大学,2007.
[4] 张冬,丁金华.基于Qt/E的A/D数据采集系统的设计[J].大连工业大学学报,2008,27(4):374?375.
[5] 陈鲲,陈秋云,刘信新.基于Qt/Embedded的嵌入式Linux应用程序的设计[J].计算机与数字工程,2009,37(1):156?157.
[6] 孙建中.基于ARM 嵌入式Linux平台的CAN总线仪表的研制[D].长春:吉林大学,2007.
作者简介:雷雨能(1982—),男,广西人,硕士。研究方向为嵌入式软件开发。