labview串口通訊的深入分析.
labview可以直接調用ACTIVEX控件,所以可以直接使用,新版本的LV可以注冊回調函數(REG CALLBACK),所以這個控件的所有功能都是可用的,下面示意一下調用的方法.
重點介紹一下VISA串口通訊的方法:
基本流程是:打開(配置)--->循環(讀寫)--->關閉(釋放)
一共有八個VI節點
1.VISA Configure Serial Port :
設定波特率,數據位,停止位,奇偶校驗位,流控制,超時處理,結束符使能,結束符.
特別需要注意的是超時(TIMEOUT) 和結束符號兩個參數.TIMEOUT默認的10秒,結束符號默認是使能狀態,默認的結束符是0X0A(n),另外,回車0x0D (r)也經常做為做為結束符號.
如果采用的是二進制通訊,可能會遇到結束符的問題.因為二進制中0A是10,0D是13,這兩個是作為數字出現的,如果不禁止結束符號,會導致讀提前結束,產生錯誤的結果,這再和設備通訊時可能會碰到.
至于波特率,數據位等,對照要通訊的設備的要求設定就可以了.
2.Visa Write: 這個節點負責把緩沖區的數據發送出去,并返回實際發送的數據.
MSCOMM串口通訊時是可以選擇文本和二進制方式的,VISA有選擇項嗎?沒有,完全取決于你的字符串,這是一個需要注意的問題.
正常顯示方式時,字符串是"1234"在內存中存儲的是ASCII,看下圖.
"1"=31,"2"=32 "3"=33,"4"=34.
發送的字符串"1234"實際發送的是16進制的31,32,33,34.用過單片機的都知道,實際所有的串口通訊從本質上說,都是二進制的,只不過接收方面如何判定數據的問題.
比如發送的是33(HEX),接收方面可以解釋成數字1,(字符串型),或者是數字33.
用過C的人知道,字符串實際和U8數組是等價的.
所以VISA是不管是否是字符串還是數值,都是采用二進制發送的,關鍵是我們在于我們的字符串是如何構成的.
Visa Read等其它的幾個都比較簡單,就不介紹了.
評論