<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ARM 和Qt/E的車載HMI終端的設計方案

          基于ARM 和Qt/E的車載HMI終端的設計方案

          作者: 時間:2012-04-27 來源:網(wǎng)絡 收藏

          3.2觸控平臺的

          觸控平臺以為處理器,接7.0寸LCD觸摸屏來實現(xiàn),可取代傳統(tǒng)的(如圖2A)機械按鍵與表盤顯示的中控平臺。觸控平臺如圖2B所示,由車燈、車窗、后視鏡、多媒體、空調(diào)、導航以及狀態(tài)參數(shù)顯示菜單組成。將該嵌入到方向盤,駕駛員可點擊觸控菜單進入車燈、車窗等控制界面(如圖2C和D)實現(xiàn)車燈、車窗等設備的觸摸控制,也可實時采集與顯示設備狀態(tài)參數(shù)如:車速、故障碼等。其中,觸控與顯示數(shù)據(jù)需調(diào)用底層串口驅(qū)動來實現(xiàn)讀寫操作,觸控界面通過Button控件的信號與槽機制來實現(xiàn)數(shù)據(jù)的發(fā)送,狀態(tài)參數(shù)的采集與顯示通過事件驅(qū)動方式實現(xiàn)。可外接GPS模塊實現(xiàn)導航功能,了Qt媒體媒體播放器實現(xiàn)娛樂功能,也可接入無線網(wǎng)卡來實現(xiàn)無線上網(wǎng)功能。

          圖2 車載HMI終端

          圖2HMI

          4HMI終端的軟件

          4.1CAN/RS232網(wǎng)關軟件設計

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

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

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

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

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

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

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

          4.2車載HMI界面的設計

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

          首先,在Linux下利用open函數(shù)打開串口設備,用tcsetattr函數(shù)來設置串口屬性。打開驅(qū)動設備UART0進行讀寫操作:constchar*devName=/dev/ttySAC0;fd=::

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

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

          voidGlass::on_lu_pressed(){charmsg[]={160,34,16,0};//定義所發(fā)送數(shù)據(jù)myserial->myCom->write(msg,4);//寫發(fā)送數(shù)據(jù)}

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

          5系統(tǒng)集成與測試

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

          6結(jié)束語

          本文所設計的車載HMI終端集車身控制、儀表顯示、導航、多媒體和無線上網(wǎng)為一體,簡化了車載中控平臺,降低了車輛控制系統(tǒng)操作的復雜性。經(jīng)實驗測試實現(xiàn)了車身設備的觸摸控制,能夠?qū)Ω髟O備運行狀態(tài)信息進行采集與顯示。為車載HMI開發(fā)提供了一種可行的設計思路與性價比更合理的解決。

          c++相關文章:c++教程



          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();