收端是不會判斷所謂某個字節(jié)的起始位的,接收機如果是在接收的狀態(tài),那么只要它的接收引腳檢測到有低電平(這個低電平不是檢測一次,而是檢測3次,判斷有2次均是低電平則最終判斷為低電平,即起始位),那么接收端就開始以設定的波特率接收數(shù)據(jù),判斷數(shù)據(jù)時也是判斷3次2次有效,也就是說,只要檢測到低電平它就接收。假如發(fā)送端已經(jīng)在發(fā)送過程中,再接上接收端,那么接收的數(shù)據(jù)一定是錯的,你可以試試,隨便將接收狀態(tài)下的RXD用導線接地一下,接收機肯定收到數(shù)據(jù)。那么是不是不可避免這種情況的發(fā)生呢?是可以的避免的,但是發(fā)送端的時間需要有個數(shù)據(jù)的時間間隔,否則永遠出不來這個循環(huán)錯誤:
1,確保接收端就緒先于發(fā)送端,那么第一個字節(jié)的起始位必定被檢測到; 2,發(fā)送第9位,接收到數(shù)據(jù)后,判斷數(shù)據(jù)和第9位是對應,若對應則再接收之后的數(shù)據(jù);3, 添加必要地起始字節(jié)如0xaa,當接收端接收到第一個數(shù)據(jù),并且為0xaa時,才進入接收真正的有效數(shù)據(jù),一個起始字節(jié)不夠就兩個;總之在接收時就作條件判斷,直至同步為止。
所以如何在自己的筆記本電腦上模擬串口數(shù)據(jù)就成了當務之急。托Google的福,找到了兩個小工具:VSPD和串口調試助手。下面簡單介紹一下如何結合這兩個小工具進行串口程序調試。1、安裝好VSPD后,首先選擇你要虛擬的端口號,點擊“添加端口”。一般現(xiàn)在的筆記本電腦都沒有串口,所以可以選COM1和COM2。
2、虛擬好端口后,左側能看到新虛擬出的COM1和COM2,此時兩個端口應該都沒有被占用,處于停用狀態(tài)。
3、打開串口調試助手,設置COM1的波特率、奇偶校驗位、數(shù)據(jù)位、停止位等參數(shù),同時確保COM2是未占用狀態(tài)。我們這樣設置,是為了讓COM1負責發(fā)送數(shù)據(jù),COM2負責接收數(shù)據(jù)。如果COM2也被占用,那么你的程序就無法使用這個端口了。
4、在圖中方框位置填入你要模擬的數(shù)據(jù),然后點擊“自動發(fā)送”,這時你應該看到進度條不斷前進,而VSPD的COM1的Sent數(shù)據(jù)不斷增長,說明串口調試助手正不斷通過COM1發(fā)送數(shù)據(jù)。
5、打開你要調試的程序,在你的程序中設置好波特率等各種參數(shù),即可看到模擬結果了。此時可以觀察到VSPD中的COM2被Java占用了,而且Received數(shù)據(jù)不斷增長。