基于ARM9的電梯緩沖器復位時間測試儀的設計
3.2.1 串口通訊協議說明
本文引用地址:http://cqxgywz.com/article/272747.htm模塊串口波特率9600,無奇偶效驗,一位停止位。控制命令通過一致的幀結構通訊,幀長度4字節:命令+數據0+數據1+校驗和。效驗和=命令+數據0+數據1的相加和的低8位。系統通過上位機串口直接對下位機模塊進行操作。上位機向下位機發送啟動16位距離讀取命令:Ox22+度數+NC+SUM。當測量完畢時,這時返回的數據是:Ox22+距離高+距離低+SUM;當測量無效時返回的距離高位和低位數據都是Oxff。(注:NC代表任意數據,SUM代表效驗和)串行端口在Windows CE下屬于流接口設備,是串行設備接口常規I/O驅動程序的調用與通信相關的具體函數的結合。串行設備被視為用于打開、關閉和讀寫串行端口的常規的可安裝的流設備。Windows CE的串口函數和Windows的串口函數基本相同,但有幾點值得注意:Windows CE只支持Unicode字符集,在編程時必須特別注意; Windows CE不支持重疊的I/O操作。在所有的流設備驅動程序中,均使用CreateFile來打開串行端口設備,如果這個端口不存在,CreateFile返回ERROR_FILE_NOT_FOUND。因此,用戶指定的端口必須是存在并且可用的,而且要遵循Windows CE流接口設備驅動程序的命名規則,即COM后接要打開的端口號再緊跟一個冒號。

關閉串行端口比較簡單,調用CloseHandle函數就能關閉一個打開的串行端口。CloseHandle只有一個參數,即調用CreateFile函數打開端口時返回的句柄,方法如下:
CloseHandle(hPort);
正如使用CreateFile打開串行端口一樣,可以使用ReadFile和WriteFile函數來讀寫串行端 口。假設已經調用CreateFile成功地打開了串行端口,那么只需調用ReadFile即可從串行端口讀取數據:

如果從主線程讀、寫大量的串行數據,主線程就會因為等待相對較慢的串行讀或串行寫操作而阻塞,不能即時處理其他的消息,因此這里用單獨的線程來讀寫串行端口。對于串行端口來說,還必須配置超時值,否則程序可能陷入到一個等待來自串口字符的死循環。通常,配置超時值和配置串口類似。首先用GetCommTimeouts函數獲取當前串口的超時值,然后修改CommTimeouts成員變量的值,最后用SetCommTimeouts設置新的超時值。
3.2.2 算法分析
根據電梯檢測規程要求,緩沖器從全壓縮到復位的時間應不大于120秒。上位機從上電檢測開始每隔0.1秒發送一次數據采集命令,并將返回的距離值和開關量信號存儲于不同的數組待分析。數組s(m)和F(n)分別存儲采集到的距離值和開關信號值(0或1),t為每次數據采集循環時間,T為緩沖器回復時間。軟件的算法流程圖如5所示:

4 結束語
基于ARM技術和Windows CE系統的電梯緩沖器復位時間測試儀功能齊備,精確性高,實用性強,滿足了新的檢測規程的要求。本設計方案首次實現了緩沖器復位過程中瞬時脫離點的檢測,實現了各種狀態時刻的精確計時和狀態識別,解決了信號同步,結果自動判斷和輸出等問題。隨著技術的進一步發展,必將向著多功能、智能化的方向發展。
c語言相關文章:c語言教程
網線測試儀相關文章:網線測試儀原理




評論