【摘 要】設(shè)計一種基于Linux Qt平臺的國內(nèi)某型地鐵人機(jī)界面方案,綜合考慮列車運行的環(huán)境,系統(tǒng)采用性能優(yōu)越的X86架構(gòu)作為硬件平臺、穩(wěn)定性強(qiáng)的Linux系統(tǒng)作為軟件平臺,在此基礎(chǔ)上利用開源的圖形界面庫Qt開發(fā)界面程序。通過在硬件平臺上的實際應(yīng)用,驗證了方案的可靠性與穩(wěn)定性。
【關(guān)鍵詞】人機(jī)界面,Qt,x86架構(gòu),Linux系統(tǒng)
一、引言
車輛人機(jī)界面(Human Machine Interface,HMI)是列車網(wǎng)絡(luò)控制與監(jiān)控系統(tǒng)的一個重要組成部分,是列車駕駛員和維護(hù)人員操作列車的窗口。它不同于傳統(tǒng)司機(jī)室以模擬儀表和指示燈為主的顯示方式[1],這種基于平板顯示器和微機(jī)結(jié)合構(gòu)成的智能終端,具有信息顯示、參數(shù)設(shè)定、功能測試和數(shù)據(jù)轉(zhuǎn)存等功能,它為駕駛?cè)藛T實現(xiàn)對車輛各子系統(tǒng)狀態(tài)的實時監(jiān)測與控制,提供了一個更加友好、簡潔、標(biāo)準(zhǔn)化的界面。
基于上述原因,本文提出了一種城市地鐵車輛的人機(jī)界面設(shè)計方案,方案采用Intel X86處理器作為硬件平臺,以嵌入式Linux系統(tǒng)作為軟件平臺,在此基礎(chǔ)上采用開源的圖形界面庫Qt開發(fā)HMI應(yīng)用程序。通過在硬件平臺上的實際應(yīng)用,驗證了方案的可靠性與穩(wěn)定性。
二、系統(tǒng)方案
(一)硬件平臺的選擇
當(dāng)下的硬件平臺主要有x86架構(gòu)和ARM架構(gòu)兩種選擇。ARM架構(gòu)的硬件平臺相較于x86架構(gòu),具有功耗低的特點,但在硬件資源方面,x86架構(gòu)具有明顯的優(yōu)勢[2],列車對功耗的要求并不像手機(jī)等移動設(shè)備那么苛刻,反而在人機(jī)界面的性能方面要求比較高,因此X86架構(gòu)的硬件平臺更適合做車載人機(jī)界面的開發(fā)。另外,行車過程中復(fù)雜的電磁環(huán)境和強(qiáng)烈的機(jī)械振動,要求顯示器硬件有很好的電磁兼容性和抗振能力,有比較大的存儲能力。綜合上述因素,選擇了基于Intel X86平臺的PIXY INC90系列顯示屏作為硬件平臺。
(二)軟件平臺的選擇
Linux操作系統(tǒng)完全沿襲了Unix系統(tǒng)的架構(gòu),在網(wǎng)絡(luò)通信方面的效率和功能都很突出[3];Linux是開源的操作系統(tǒng),設(shè)計者可以根據(jù)自己的開發(fā)需求在此系統(tǒng)上進(jìn)行二次開發(fā),且免費使用;列車人機(jī)界面可使用的硬件資源相對較少并且要求上電時間短,綜合上述因素此處操作系統(tǒng)選擇了嵌人式Linux。
(三)編程語言的選擇
Qt是一個跨平臺的C++圖形用戶界面庫,由挪威TroUTeeh公司出品,它支持絕大部分類Unix系統(tǒng)和Windows平臺,擁有良好的跨平臺特性[4]。Qt/Embedded Linux,為嵌入式系統(tǒng)的開發(fā)人員搭建了一套完善的窗口系統(tǒng)和開發(fā)平臺。 Qt還提供了一種稱為signal/slot(信號/槽)的機(jī)制替代了一般Gui庫中所使用的回調(diào)函數(shù)機(jī)制。
三、開發(fā)環(huán)境搭建
硬件平臺選擇PIXY INC-90顯示器,顯示器搭載Linux操作系統(tǒng),以O(shè)racle VM VirtualBox和Qt creater作為軟件仿真、編譯和開發(fā)平臺,開發(fā)的應(yīng)用程序經(jīng)過交叉編譯生成可執(zhí)行文件后,通過Win Scp軟件導(dǎo)入顯示器,再用SSH服務(wù)軟件遠(yuǎn)程控制顯示屏,執(zhí)行目標(biāo)程序[5]。
四、人機(jī)界面設(shè)計
(一)設(shè)計流程
控制電源DC110V接通后,兩個司機(jī)室的HMI同時開啟。激活端司機(jī)室的HMI正常顯示,非激活端司機(jī)室的HMI顯示黑屏,主顯示界面根據(jù)用戶操作需求分為運行模式與檢修模式,運行模式主要面對司機(jī),檢修模式主要面對檢修技術(shù)人員,運行模式切換至檢修模式需輸入密碼。設(shè)計流程如圖1所示。
(二) 界面繪制實現(xiàn)
總程序采取順序執(zhí)行的方式,在參數(shù)初始化之前,首先執(zhí)行MVB通訊模塊、亮度傳感器檢測,以及判斷串口配置文件是否讀取成功程序,若成功,則進(jìn)行參數(shù)初始化,若失敗,則彈出故障提示界面,提示駕駛員或維護(hù)人員按故障提示進(jìn)行操作。部分檢測程序代碼如下:
if (engine->init(0x12, 5) != PIXYMVB_OK) //判斷MVB通訊模塊是否正常
{ FaultReason = 1; //故障原因為1
showFaultHintScreen(JudgeFaultReason); //失敗,根據(jù)故障原因,顯示故障提示界面
}
QFileInfo fileInfo(“/dev/ttyUSB_SC”); //讀取顯示器亮度硬件配置文件
if (!fileInfo.exists()) //判斷硬件是否存在
{FaultReason =2; //故障原因為2
showFaultHintScreen(JudgeFaultReason); //失敗,顯示故障提示界面
}
圖1 設(shè)計流程圖
1.信號/槽(signal/slot)機(jī)制
本文提出的人機(jī)界面設(shè)計方案采用多級界面呈現(xiàn)的形式,界面之間的切換通過信號/槽機(jī)制實現(xiàn),切換功能實現(xiàn)部分代碼如下:
Class QPushButton; //定義按鍵類
QPushButton* Button; //聲明一個按鍵指針
Button –>setGeometry(x,y,width,height); //定義按鍵的坐標(biāo)、長寬參數(shù)
Button->setText(QString); //設(shè)置按鍵顯示文本
Private signals:
Void SwitchScreen(); //聲明切換界面的信號
Private slots:
Void JumpToTargetScreen(); //聲明跳轉(zhuǎn)槽函數(shù)
Connect(Button,released(),this, SwitchScreen ()); //按鍵被點擊且松開時,觸發(fā)信號
Connect(screen, SwitchScreen (),this, JumpToTargetScreen ()); //信號調(diào)用槽函數(shù),實現(xiàn)跳轉(zhuǎn)到目標(biāo)界面
2.靜態(tài)界面繪制
顯示器啟動后進(jìn)入主顯示界面,主界面主要分為三部分:最上端的頁眉,最下端的頁腳,以及顯示區(qū)域最大,位于中部的顯示畫面。其中,頁眉、頁腳的顯示內(nèi)容基本固定,不因界面切換而改變;顯示界面的內(nèi)容會隨界面切換而變化。
頁眉繪制的部分代碼如下:
class Controller : public QWidget //繼承自Qt基礎(chǔ)類 QWidget
Controller::init()
{
topHeader = new PTopHeader(this); //在內(nèi)存中new一個空間
topHeader->setGeometry(x,y,width,height);//設(shè)置坐標(biāo)、長寬參數(shù)
topHeader->show();//初始化為顯示狀態(tài)
}
頁眉顯示車號、畫面號及時間信息,在進(jìn)行頁面切換時,保持頁眉一直處于Show()狀態(tài);顯示畫面主要包括車輛當(dāng)前站,終點站,速度,網(wǎng)壓以及子系統(tǒng)狀態(tài)。
(三)MVB通信
MVB是用于在一個固定編組的幾個車輛內(nèi)連接各種可編程設(shè)備的車輛總線。顯示器作為車輛總線的一個子系統(tǒng),通過MVB總線實現(xiàn)同VCU的通信,通訊程序部分代碼如下:
Void GetCommData() //獲取宿端口數(shù)據(jù)
Map.insert(); //把端口地址和獲取的數(shù)據(jù)作為鍵值對插入容器中
void GetOnePortData( wantPortAddress); //通過端口地址讀取容器中的數(shù)據(jù)用于顯示
五、結(jié)束語
結(jié)合公司的實際項目,本文設(shè)計了一種城市地鐵車輛的人機(jī)界面方案。本文對軟硬件的選擇及系統(tǒng)平臺的搭建等方面進(jìn)行了闡述,并且著重描述了軟件系統(tǒng)的開發(fā)流程。以PIXY INC-90系列顯示器為應(yīng)用平臺,利用功能強(qiáng)大的開源圖形庫Qt進(jìn)行系統(tǒng)開發(fā)設(shè)計,最終實現(xiàn)了地鐵列車人機(jī)界面系統(tǒng)。通過在顯示器上實際應(yīng)用,驗證了本文方案的可靠與穩(wěn)定。
參考文獻(xiàn)
[1] 客金坤,梅櫻,郭紅衛(wèi),等.基于圖形化編程語言的列車人機(jī)界面設(shè)計[J].都市快軌交通,2011,24(1).
[2] 任亞飛,唐濤.基于嵌入式Linux的列控系統(tǒng)車載人機(jī)界面的實現(xiàn)[J].鐵路計算機(jī)應(yīng)用,2005,14(12).
[3] 楊志偉,曾艷姍.基于Linux的ACM在線評測系統(tǒng)研究[J].計算機(jī)與現(xiàn)代化,2010(6).
[4] Jasmin Blanchette, Mark Summerfield. C++ GUI Programming with Qt 4, 2nd edition. 2008.8
[5] 劉超,周紀(jì)超,張紅星. 基于Linux Qt的列車人機(jī)界面設(shè)計與實現(xiàn)[J].計算機(jī)與現(xiàn)代化。2013,4.