?

基于Qt的手持式炮長終端界面設計與實現

2015-09-16 22:09雷雨能等
現代電子技術 2015年18期
關鍵詞:CAN總線

雷雨能等

摘 要: 為了實現對火炮表尺、方向等參數的實時可視顯示和有效控制,設計一種基于嵌入式Linux系統Qt/Embedded的手持炮長終端應用界面軟件。首先在工作計算機平臺中塔建嵌入式Qt開發環境,再針對鍵盤模塊、CAN總線通信模塊和圖形顯示模塊進行軟件模塊設計,最后將程序移植至Freescale i.MX53處理器平臺中運行。該程序解決了對火炮的有效控制和可視顯示,大大提高了火炮的作戰效率。實驗結果表明,基于Qt/Embedded的手持炮長終端界面響應速度快,運行穩定,滿足性能要求。

關鍵詞: Qt; 嵌入式Linux; CAN總線; 炮長終端

中圖分類號: TN911?34 文獻標識碼: 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 引 言

當前,嵌入式系統是目前最流行的計算機應用技術之一,而嵌入式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/Embedded(ARM)三個版本的Qt SDK,并安裝配置Qt Creator開發工具。Qt/X11版本主要用于產生Qt開發工具,最重要的是可以得到QVFB工具[4]。QVFB可以不需要實際的開發板,在工作計算機上開發Qt/Embedded應用程序,然后進行調試,再下載到目標硬件平臺上。Qt/Embedded版本主要應用于嵌入式Linux系統的版本;

(3) 根據目標硬件平臺的需要,交叉編譯Qt/Embedded庫文件;

(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/Embedded(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],開發起來更加方便。經過現場調試和測試,炮長終端界面友好,運行穩定,響應速度快,可滿足實時性要求。

參考文獻

[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.

猜你喜歡
CAN總線
論網絡通信技術
CAN總線通信技術在電梯監控系統中的應用
基于CANoe的J1939協議在ECU通信中的應用
利用MC9S12(X)單片機構建CAN總線網絡的研究
基于CAN總線的智能微噴灌監控系統中下位機的硬件電路組成與設計
基于CAN總線的變電站通訊網絡設計
一種航空交換機中CAN總線的自動化測試方法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合