通用可靠的串口/以太網網關設計
1.2 串口數據傳送
串口數據傳送的幀格式如下:本文引用地址:http://www.104case.com/article/148750.htm
其中各個字段的意義如下:
◆SFD:幀首定界符;
◆EFD:幀尾定界符,SFD和EFD為確定的特定值;
◆Seq:幀序號;
◆Type:幀類型,其值見表1;
◆LEN:Data字段的字節數;
◆Data:實際要傳送的數據;
◆FCS:幀校驗,是一個簡單校驗,為Seq.至Data字段中所有字節按位異或運算的結果。
1.2.1 串口發送
串口發送隊列示意圖如圖3所示。網關使用FIFO(先入先出)隊列緩沖發送幀,包括待發送隊列和待確認隊列兩個隊列,每個隊列為一個雙向循環鏈表,節點從尾部插入,頭部讀出。
當有數據需要從串口發送時,首先將要發送的數據按幀格式加上一些附加的字段組成一個完整的幀,然后插入待發送隊列尾。插入待發送隊列的幀并不一定會被立即發送,但只要待發送隊列中緩沖有需要發送的幀,串口就會從隊列頭逐個的讀取待發送幀以中斷的方式發送,直到待發送隊列為空。
每一幀發送完畢后,如果是確認幀,便會被立即從待發送隊列中刪除并釋放掉內存,該幀的發送過程結束;如果是非確認幀,即數據幀或命令幀,那么該幀不會被立即釋放,而是從待發送隊列刪除而插入待確認隊列尾,等待串口另一端的設備發送對應的確認幀。
若在超時時間內收到對應的確認幀,則將該幀從待確認隊列刪除釋放,該幀的發送過程結束;若等待超時,則將該幀從待確認刪除并重新插入待發送隊列尾,以重發此幀。當然有重發次數限制,若達到了最大重發次數仍然未收到對應的確認幀,則丟棄該幀,該幀的發送過程結束。
tcp/ip相關文章:tcp/ip是什么
評論