智能車(chē)運動(dòng)狀態(tài)實(shí)時(shí)監測系統的設計及實(shí)現
下位機向上位機傳輸的是以每20ms傳輸一組包涵了光電編碼器值(speed),電池電壓(battary),舵機轉角值(angle),傳感器當前狀態(tài)(sensor)的數據,如果是在理想狀態(tài)下,上位機接收到的應是上述各值循環(huán)出現的周期性數據,此時(shí)上位機只需將這些數據按順序裝入各自的數組并畫(huà)圖即可。但在實(shí)際的無(wú)線(xiàn)傳輸過(guò)程中可能出現數據丟失現象。因此加入適當的數據校驗是必要的,否則會(huì )出現數據裝入錯誤,造成畫(huà)圖的混亂。我們在實(shí)際過(guò)程中是在每組數據中加入0x00,0xff的幀頭,當數據出現錯誤時(shí),則舍棄該幀數據。
數據的無(wú)線(xiàn)收發(fā)部分采用的是SUNRAY公司的QC96型無(wú)線(xiàn)收發(fā)模塊,該模塊可以收發(fā)波特率為9600的串行數據,距離可達100m。
上位機的數據接收及處理
上位機部份主要四個(gè)模塊來(lái)構成:
·數據接收模塊
功能:上位機通過(guò)串口采集下位機發(fā)送的原始數據。
實(shí)現:VC++中實(shí)現串口通信一般有二種方式,分別是MSComm控件和Windows API函數。MSComm簡(jiǎn)潔易用,適用于比較簡(jiǎn)單的系統,Windows API函數應用較廣但比較復雜繁瑣,由于此模塊的串口通信功能相對簡(jiǎn)單,本系統采用前者。在實(shí)際過(guò)程中使用的是事件驅動(dòng)的方式,這種方法響應及時(shí),可靠性高,并且比查詢(xún)法占用更少的資源。
·存儲模塊:
功能:可直接存儲采集到的原始數據,以備以后更多的分析處理。
實(shí)現:在每個(gè)OnComm事件被觸發(fā)后,將串口接收到的數據直接存入temp臨時(shí)文件,并且可以在用戶(hù)的要求下將temp臨時(shí)文件里的值存儲到指定文件。
·數據的分析和處理模塊:
功能:將采集到的原始數據進(jìn)行用戶(hù)選定的分析和處理,主要包括丟棄錯誤數據,以及去除幀頭并進(jìn)行數據裝入任務(wù),同時(shí)也可以對已保存的數據進(jìn)行分析和處理。
評論