雷雨能等
摘 要: 為了實現(xiàn)對火炮表尺、方向等參數(shù)的實時可視顯示和有效控制,設(shè)計一種基于嵌入式Linux系統(tǒng)Qt/Embedded的手持炮長終端應(yīng)用界面軟件。首先在工作計算機(jī)平臺中塔建嵌入式Qt開發(fā)環(huán)境,再針對鍵盤模塊、CAN總線通信模塊和圖形顯示模塊進(jìn)行軟件模塊設(shè)計,最后將程序移植至Freescale i.MX53處理器平臺中運行。該程序解決了對火炮的有效控制和可視顯示,大大提高了火炮的作戰(zhàn)效率。實驗結(jié)果表明,基于Qt/Embedded的手持炮長終端界面響應(yīng)速度快,運行穩(wěn)定,滿足性能要求。
關(guān)鍵詞: Qt; 嵌入式Linux; CAN總線; 炮長終端
中圖分類號: TN911?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2015)18?0036?03
Abstract: In order to achieve the real?time visual display and effective control for artillery hindsight and orientation, a Qt/Embedded?based application interface software of handheld gunner terminal was designed. At first, embedded Qt exploitation environment was built in the computers, and then software module was designed on the basis of keyboard module, CAN?bus communication module and graphic module. In the end, this program was transplanted to Freescale i.MX53 processor platform to operate, with which the effective control and visual display for artillery were realized, and the fighting efficiency was improved greatly. The test results show that the handheld gunner terminal based on Qt/Embedded has the advantages of rapid response speed and stable operation so that it can satisfy performance requirements.
Keywords: Qt; embedded Linux; CAN; gunner terminal
0 引 言
當(dāng)前,嵌入式系統(tǒng)是目前最流行的計算機(jī)應(yīng)用技術(shù)之一,而嵌入式Linux系統(tǒng)卻是其中發(fā)展最快的也是應(yīng)用最廣的嵌入式操作系統(tǒng)[1]。
Qt是一種基于C++的包含了跨平臺開發(fā)工具和國際化支持工具的GUI系統(tǒng)[2],由于其具有C++圖形類庫強(qiáng)大、跨平臺移植方便、豐富的多線程支持和很高的響應(yīng)速度等優(yōu)點,目前已經(jīng)越來越多地應(yīng)用于嵌入式系統(tǒng)界面設(shè)計中。
現(xiàn)代火炮系統(tǒng)作為局部地面戰(zhàn)爭中陸軍裝備的主力軍,面臨著智能化和信息化的發(fā)展趨勢。炮長手持終端作為一種PDA設(shè)備,主要用于有效顯示和控制火炮的各種參數(shù),便于火炮對目標(biāo)的精確打擊,大大提高了部隊的信息化作戰(zhàn)能力。
本系統(tǒng)基于Freescale i.MX53處理器和Linux操作系統(tǒng),硬件接口包含串口總線、CAN總線、網(wǎng)口、LCD和觸摸屏;界面設(shè)計包括鍵盤模塊、CAN通信模塊、圖形顯示模塊。
1 嵌入式Qt開發(fā)流程
Linux系統(tǒng)下Qt/Embedded開發(fā)詳細(xì)流程如下:
(1) 選定嵌入式Linux硬件平臺;
(2) 塔建Qt開發(fā)環(huán)境。在工作計算機(jī)上安裝Linux操作系統(tǒng),安裝Qt/X11[3],Qt/Embedded(X86),Qt/Embedded(ARM)三個版本的Qt SDK,并安裝配置Qt Creator開發(fā)工具。Qt/X11版本主要用于產(chǎn)生Qt開發(fā)工具,最重要的是可以得到QVFB工具[4]。QVFB可以不需要實際的開發(fā)板,在工作計算機(jī)上開發(fā)Qt/Embedded應(yīng)用程序,然后進(jìn)行調(diào)試,再下載到目標(biāo)硬件平臺上。Qt/Embedded版本主要應(yīng)用于嵌入式Linux系統(tǒng)的版本;
(3) 根據(jù)目標(biāo)硬件平臺的需要,交叉編譯Qt/Embedded庫文件;
(4) 在工作計算機(jī)上使用Qt Creator開發(fā)工具進(jìn)行應(yīng)用程序的編輯和調(diào)試。在設(shè)計調(diào)試階段,為方便調(diào)試,編輯編譯成Qt/Embedded(X86)版本的程序,使用QVFB工具,將調(diào)試輸出結(jié)果顯示在一個仿真嵌入式設(shè)備顯示終端的模擬器上。如果仿真測試正確無誤,再編譯成Qt/Embedded(ARM)版本應(yīng)用程序;
(5) 移植Qt/Embedded(ARM)版本應(yīng)用程序到目標(biāo)硬件平臺;
(6) 在目標(biāo)硬件平臺運行Qt/Embedded(ARM)版本應(yīng)用程序。
2 嵌入式Qt環(huán)境塔建
工作計算機(jī)操作系統(tǒng)為Fedora Core 14。
2.1 準(zhǔn)備的開發(fā)工具包
Qt creator開發(fā)工具包:
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版
執(zhí)行如下操作:
#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)版
執(zhí)行如下操作:
#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庫并修改環(huán)境變量,執(zhí)行以下命令:
#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 ,執(zhí)行如下命令:
# ./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開發(fā)工具
執(zhí)行如下命令 :
#./chmod +x qt?creator?linux?x86?opensource?2.5.1.bin
# ./qt?creator?linux?x86?opensource?2.5.1.bin
3 炮長終端界面設(shè)計與實現(xiàn)
炮長終端應(yīng)用軟件包含軟鍵盤、CAN通信、圖形顯示界面和各個模塊的整合,其主界面顯示如圖1所示。
(1) 鍵盤模塊的實現(xiàn)
軟鍵盤作為輸入設(shè)備,能夠?qū)鹋诟鲄?shù)進(jìn)行設(shè)定,類似于電腦鍵盤的數(shù)字小鍵盤,采取了將所有按鍵做成一個類,類名為Keyboard,每個按鍵信號都和對應(yīng)槽函數(shù)進(jìn)行一一相連。軟鍵盤顯示如圖2所示。
(2) CAN總線通信模塊的實現(xiàn)
CAN是一種控制器局域網(wǎng),一個串行的、異步的、多主機(jī)的通信協(xié)議,屬于全數(shù)字化,雙向的現(xiàn)場總線[5]。本文通過開辟2個線程分別用來接收和發(fā)送各參數(shù)數(shù)據(jù),并進(jìn)行數(shù)據(jù)顯示、存儲和處理。該模塊主要包括CAN參數(shù)設(shè)置初始化程序、數(shù)據(jù)接收處理程序和數(shù)據(jù)發(fā)送處理程序。在CAN初始化程序中,主要設(shè)置CAN波特率、端口號、濾波器、協(xié)議類型、數(shù)據(jù)格式、ID等參數(shù)。在數(shù)據(jù)接收和數(shù)據(jù)發(fā)送處理程序中,主要針對火炮基準(zhǔn)射向、射擊修正、裝定表尺和當(dāng)前表尺等參數(shù)進(jìn)行處理和顯示。
(3) 圖形界面的實現(xiàn)
圖形以2個直方圖來表示(見圖3):左邊直方圖代表火炮的裝定表尺和當(dāng)前方表尺的差值;下邊直方圖代表火炮的裝定方向和當(dāng)前方向的差值。該圖形使炮長能夠直觀而準(zhǔn)確地感知火炮的到位情況,以便能夠快速有效地控制火炮的到位。顯示圖形界面顯示如圖3所示。圖3中,裝定表尺為100,當(dāng)前表尺為200,差值為100,炮長需要對表尺向左繼續(xù)搖動火炮2圈才能到位。裝定方向為0,當(dāng)前方向為200,差值為200,炮長需要對方向向右繼續(xù)搖動火炮才能到位。
4 移植與運行
使用Qt Creator工具編輯程序并編譯成Qt/Embedded(ARM)版本可執(zhí)行文件,文件名為gunV0。通過安裝配置NFS服務(wù)器,掛載網(wǎng)絡(luò)文件系統(tǒng),移植可執(zhí)行文件,執(zhí)行操作:
# mount ?t nfs 192.168.1.5:/nfsroot /mnt/nfs/ ?o nolock
#cp /mnt/nfs/gunV0 /root/tmp
由于Qt沒有自帶中文字體庫,在此須添加文泉字庫的支持,把文泉字庫wenquanyi.ta解壓后放到目標(biāo)硬件平臺Qt安裝目錄下。最后運行可執(zhí)行程序,執(zhí)行:
#./gunV0 ?qws ?font unifont &
5 結(jié) 語
相對基于MiniGUI的界面開發(fā),基于Qt的界面設(shè)計,其C++開發(fā)類更加完整,功能更加全面,設(shè)置控件和屬性更加簡單,而且提供了免費的開發(fā)工具,開發(fā)成本較低[6],開發(fā)起來更加方便。經(jīng)過現(xiàn)場調(diào)試和測試,炮長終端界面友好,運行穩(wěn)定,響應(yīng)速度快,可滿足實時性要求。
參考文獻(xiàn)
[1] 弓雷.ARM嵌入式Linux系統(tǒng)開發(fā)詳解[M].北京:清華大學(xué)出版社,2010.
[2] 黃超.基于Qt的嵌入式GUI的研究與實現(xiàn)[D].長春:吉林大學(xué),2011.
[3] 李艷民.基于Qt跨平臺的人機(jī)交互界面的研究與應(yīng)用[D].重慶:重慶大學(xué),2007.
[4] 張冬,丁金華.基于Qt/E的A/D數(shù)據(jù)采集系統(tǒng)的設(shè)計[J].大連工業(yè)大學(xué)學(xué)報,2008,27(4):374?375.
[5] 陳鯤,陳秋云,劉信新.基于Qt/Embedded的嵌入式Linux應(yīng)用程序的設(shè)計[J].計算機(jī)與數(shù)字工程,2009,37(1):156?157.
[6] 孫建中.基于ARM嵌入式Linux平臺的 CAN總線儀表的研制[D].長春:吉林大學(xué),2007.