Labview在工控領域,如產線,實驗室等環境用得較多,其中與儀器通訊控制的方式有串口(RS232,RS485,TTL),GPIB,網口,CAN等,其中串口在儀器還有單片機控制中用來調試居多。(很多開發者習慣把UART稱為232,但很多萌新容易被誤導。其實UART≠RS232,UART是TTL電平的,一般和單片機通訊時用的是TTL電平的串口信號。232,485和UART的電平都不同,這里不多說,不清楚的同仁找度娘唄)。串口通訊在應用上已經很成熟,無外乎是初始化配置波特率,數據位,停止位等,然后往寄存器或者往某個封裝好的串口讀寫函數中,讀取或寫入對應的數據。而Labview對串口的運行顯得更加的簡單。
1、初始化配置
儀器IO->串口->VISA配置串口。VISA是NI自己開發的虛擬儀器軟件包,包括還有其他的如DAQ,NI-Vision數據采集,視覺之類的軟件包。這些都是和NI自主研發的儀器相配套的,也就是如果使用NI的采集卡或者其他儀器板卡,你可以直接使用DAQ的工具包對采集卡直接操作,並且配套有現成的程序例程,可以大大加快監控儀器或者產線自動化設備的開發。當然只要是標准的通訊設備,也是可以用NI工具包的。這里就拿串口通訊示例一下吧。
右鍵新建輸入常量,端口號,波特率,數據位,檢驗方式等。一般按默認設置即可,如有特殊配置,請點擊右側“?”的按鍵,挪到該函數上了解各個接口的作用后自行配置。
2、添加“VISA打開”函數
儀器IO->VISA->高級VISA->VISA打開。
配置完串口后加20ms延時是為了連接更穩定一些,一般可不加。但是按以往的經驗,不加一點延時的話,在某些快速打開和關閉串口的邏輯功能中,會出現偶爾通訊不上的情況,加了延時后該情況沒有再復現。
3、添加“VISA寫入”和“VISA讀取”函數
儀器IO->VISA->VISA寫入;儀器IO->VISA->VISA讀取。
在“VISA讀取”前面添加一個串口引用的屬性節點,添加串口讀取的數據量(字節數)。
該Serial Settings ->Number of Bytes at Serial Port屬性節點,可預先獲取串口緩存的數據大小。如果不給“VISA讀取”輸入數據大小參數的話,串口緩存上數據可能會沒讀完,需要讀取兩次以上(當然可以用程序邏輯處理這個問題,不過本次示例是單步寫入讀取串口數據,我們還是穩妥一點)
最后再添加一個“VISA關閉”,結束串口通訊。
4、添加“VISA寫入”的數據
如果直接添加字符串數據到“VISA寫入”函數,從單片機或者虛擬串口上讀取的將是一組亂碼。在Labview中,該函數寫入的數據應該要轉成字節數組,再由字節數組轉成16進制的字符串發送到電腦串口上,這樣在單片機或在虛擬串口上讀取的才是16進制的一組數據。否則傳進去的將是這組字符對應的ASCII碼。
操作如下所示:將要傳輸的數據通過 創建數組(編程->數組->創建數組)的方式生成字節數據,再通過字節數組轉字符串(編程->字符串->路徑/數組/字符串轉換->字節數組轉字符串)的方式生成16進制的字符串給到“VISA寫入”。
最后選擇端口 如左側所示COM8,運行即可發送010203的串口數據,如果單片機或者虛擬串口沒有返回數據,則讀取的數據為空。
將左側數值常量轉成u8類型。
大家可以嘗試用狀態機寫一個串口助手,或者做個虛擬示波器的小工具,由單片機ADC采集電壓,將電壓值通過串口傳給Labview上位機顯示電壓波形。串口助手我有空上傳一個自己寫的。虛擬示波器的話,倒有一個以前的畢業設計,如果有需要的話可以留下郵箱,我有空單獨發過去,可能會缺少一些庫,但是邏輯參考一下就好了。(臉皮較薄,以前寫的代碼太亂,就不放在CSDN的資源上了,有興趣的我單獨給,哈哈。。。。。手動滑稽)
原創不易,一鍵三連拉!