一種基于狀態機的串口通信協議的設計與實現
下位機采用ATMEL公司的AVR系列單片機ATmega168作為其核心控制單元;上位機軟件采用Delphi 7.0編寫,Delphi 7.0是Borland公司開發的基于Windows平臺的面向對象的快速應用程序開發工具。本協議上位機程序采用Delphi開發,主要考慮到Delphi易于實現多線程編程。另外,Delphi開發程序的簡單、高效,也是上位機軟件選擇其作為開發工具的重要原因。
串口通信協議包括發送與接收兩部分。在本系統中,下位機負責發送數據,上位機負責接收數據,而另一種情況:下位機接收、上位機發送,其處理方法與前面一種相似。因此,這里僅介紹下位機發送數據、上位機負責接收數據的實現。
下位機串口通信發送程序由于不考慮狀態機,實現較為簡單,其示例代碼如下:
上位機軟件中,當接收到數據時,串口控件會觸發一個事件,在事件處理代碼中應及時將收到的數據存入接收沖區,同時不應該把串口通信協議接收部分的代碼放置在此事件中,否則后面到來的數據可能因為前面先到的數據沒有及時處理完畢而被沖掉,導致數據丟失。因此,在上位機軟件運行時,應該啟動一個Windows線程,用于不斷檢測接收緩沖區是否為空,不為空時則對緩沖中的數據進行處理,創建一個名為TBufferThread的線程類:
數字通信相關文章:數字通信原理
通信相關文章:通信原理
評論