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