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