1、指定空閑線時間(可以理解為兩幀數據之間的間隔)為50ms(小于發送間隔時間100ms),則當發送完第一幀0102030405后,啟動空閑時間檢測,超過50ms即認為一幀數據結束,準備接收下一幀數據。這可以看做是“字符間定時器”結束消息方式。
2、指定接收結束字符為05,則當接收到0102030405后,即收到結束字符05后,認為一幀數據結束,再接收到的0102030405認為是下一幀數據,依此類推。這可以看做是“結束字符檢測”結束消息方式。
3、指定接收數據長度為5,則收到0102030405(5個字符)后,即認為一幀數據結束,再接收到的0102030405認為是下一幀數據,依此類推。這可以看做是“最大字符計數”結束消息方式。
4、其他條件還包括“消息定時器”、“奇偶效驗錯誤”、“用戶終止”等結束消息的方式,或者這些條件的組合作為結束消息的方式。
那么在應用中選擇哪種結束消息的方式,要具體情況具體分析。這話說起來很空洞,但確實如此,因為自由口通信本身就決定了,不同的通信對象間的數據幀格式(或協議)是設備廠家自由定義的,這就要求事先充分理解通信協議,并在此基礎上進行選擇。
另外一方面,如果能靈活掌握這部分內容,還可以解決一些實際問題。比如大家都知道數據要接收到接收緩沖區,而接收緩沖區的大小是有限制的(255個字節),那么怎么能夠接收到大于255個字節的數據呢(緩沖區溢出后前面的數據被覆蓋)?可以考慮設置“最大字符計數”為結束消息方式,將數據分為多個部分依次進行接收。