<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM 和Qt/E的車(chē)載HMI終端設計

基于A(yíng)RM 和Qt/E的車(chē)載HMI終端設計

作者: 時(shí)間:2012-06-18 來(lái)源:網(wǎng)絡(luò ) 收藏


圖2

4 的軟件設計

4.1 /軟件設計
主程序中首先要完成初始化操作,包括單片機、SJA1000、RS232通信以及中斷源的初始化。其中SJA1000的初始化是整個(gè)設計最重要的部分,也是保證 通信的前提??紤]車(chē)輛內部網(wǎng)絡(luò )的兼容性,SJA1000配置為Peli模式,支持2.0A和B規范,實(shí)現標準幀和擴展幀兩種報文傳輸。SJA1000初始化寄存器配置流程如圖3所示。

圖3 SJA1000初始化寄存器配置流程

為保證數據實(shí)時(shí)傳輸,采用中斷方式進(jìn)行數據收發(fā)。

當CAN總線(xiàn)有數據接收時(shí)SJA1000會(huì )跳入接收中斷函數將數據接收并存儲到接收緩存,根據數據幀頭來(lái)判別數據類(lèi)型和所帶數據長(cháng)度,最后提取CAN 數據拆分為單字節通過(guò)串口發(fā)送,并在HMI終端顯示;當HMI終端有控制字發(fā)送,串口接收中斷函數將所發(fā)送的控制字依次接收存入接收緩存,并根據首字節來(lái)判別所發(fā)數據類(lèi)型和長(cháng)度,組裝成CAN數據幀格式發(fā)送到網(wǎng)絡(luò )中去,以此實(shí)現各節點(diǎn)的控制。具體流程如圖4所示。

圖4 數據接收與發(fā)送流程圖

4.2 車(chē)載HMI界面的設計

HMI界面采用Qt Creator2.0來(lái)設計,因為HMI終端是通過(guò)UART接口接入CAN網(wǎng)絡(luò )中,所以通信時(shí)需接上面所介紹的CAN/RS232協(xié)議轉換器來(lái)實(shí)現。同時(shí),還需在Linux下編寫(xiě)Qt串口通信程序。

首先,在Linux下利用open函數打開(kāi)串口設備,用tcsetattr函數來(lái)設置串口屬性。打開(kāi)驅動(dòng)設備UART0進(jìn)行讀寫(xiě)操作:const char*devName= " /dev/ttySAC0";fd = ::

open (devName,O_RDWR|O_NONBLOCK);設置波特率等參數:
serialAttr.c_cflag= B115200| HUPCL| CS8|CREAD|CLOCAL;serialAttr.c_cc[VMIN]=1;其中串口設備可使用Linux下I/O函數進(jìn)行Read和Write操作。但是,在數據接收時(shí)當數據量過(guò)大會(huì )導致界面被阻塞(造成界面假死),于是創(chuàng )建了一個(gè)線(xiàn)程通過(guò)事件驅動(dòng)實(shí)現數據接收。

Qt中可采用QSocketNotifier類(lèi)來(lái)實(shí)現設備事件驅動(dòng)的設計要求。QSocketNotifier類(lèi)關(guān)聯(lián)Signal/Slot機制,當有數據可讀時(shí)會(huì )觸發(fā)Ativated信號,LCD Number控件Slot會(huì )被調用來(lái)連接到該信號并顯示,從而實(shí)現數據采集與顯示功能。在數據發(fā)送時(shí),可通過(guò)Button控件Signal/Slot調用QObject對象的connect()函數來(lái)實(shí)現[3].當按鍵被按下時(shí)觸發(fā)Signal信號,Slot會(huì )調用pressed ()函數將定義好的數據通過(guò)串口Write函數發(fā)送到總線(xiàn)上。函數實(shí)現如下:

void Glass::on_lu_pressed(){char msg[]= {160,34,16,0};//定義所發(fā)送數據myserial->myCom->write(msg,4);//寫(xiě)發(fā)送數據}

通過(guò)QPainter類(lèi)進(jìn)行對窗體界面和按鍵圖像界面進(jìn)行設計,達到美觀(guān)的人機界面。最后將設計好的程序通過(guò)交叉編譯,生產(chǎn)二進(jìn)制文件移植到ARM 中,然后在文件系統中調用執行,最終在LCD觸摸屏上顯示,如圖2所示。

5 系統集成與測試

首先將設計好的HMI終端通過(guò)交叉串口線(xiàn)與PC機連接,進(jìn)行相互通信,測試是否能夠進(jìn)行數據收發(fā),測試成功后通過(guò)CAN/接入Polo車(chē)CAN試驗臺進(jìn)行綜合測試。試驗臺設備節點(diǎn)可通過(guò)觸摸方式控制,同時(shí)可實(shí)時(shí)采集與顯示運行狀態(tài)信息,經(jīng)過(guò)多次實(shí)驗測試,運行穩定可靠,達到了設計要求。

6 結束語(yǔ)

本文所設計的集車(chē)身控制、儀表顯示、導航、多媒體和無(wú)線(xiàn)上網(wǎng)為一體,簡(jiǎn)化了車(chē)載中控平臺,降低了車(chē)輛控制系統操作的復雜性。經(jīng)實(shí)驗測試實(shí)現了車(chē)身設備的,能夠對各設備運行狀態(tài)信息進(jìn)行采集與顯示。為車(chē)載HMI開(kāi)發(fā)提供了一種可行的設計思路與性?xún)r(jià)比更合理的解決方案。


上一頁(yè) 1 2 下一頁(yè)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>