小草手把手教你 LabVIEW 串口儀器控制——初識VISA串口


有些人,學習一樣東西時候,喜歡現成的例子。很多人學習一門技術,都喜歡現成的例子開始,比如學單片機的啊,最開始都是修改的例子吧,學語言的也是。最開始都是模仿。

這個年頭看書上的理論知識太浪費時間了。所以啊,很少人買個手機還去看手機說明書,或者買個電腦,看電腦說明書一樣。

事實上,學習 LabVIEW 的人有福了。因為例子很多,而且到處都是,應接不暇,還是免費的……

我的觀點是:LabVIEW 自帶的范例寫的很好。大家看看范例,就很方便大家學習和理解了。不要去找很多相關的資料,又不是寫論文需要達到多少文獻。

關鍵句子:看 LabVIEW 自帶的例子。

本手把手系列,屬於啟蒙級的,對串口有了解的,可以略過。

如果你對 LabVIEW 的串口使用不明白。那你就看例子吧。以后你會發現很多類似的例子教學。
打開的范例操作如下圖所示。
<ignore_js_op> 

找到“硬件輸入輸出”→“串口”,里面有好多范例,自己找個吧。其實都差不多。當然,你也可以左邊的選項,搜索里面搜“VISA”,也可以得到這些范例。

現在雙擊打開某個范例“基本串行寫入和讀取”。
<ignore_js_op> 

<ignore_js_op> 

打開了范例之后,我們來研究下它的情況,如下圖。
<ignore_js_op> 

我們看下程序面板,結構很簡單。
如果看過我的手把手系列前面的內容,就會發現,就是我之前說的 4 個函數。
①配置串口
②寫數據到串口 的 VISA 寫入,從串口讀數據 的 VISA 讀取
③關閉串口
<ignore_js_op> 

用 VISA 函數,最常用的,就這幾個。我寫了這么多串口程序,基本也就用了這幾個,其他的,自己看着辦。
<ignore_js_op> 

如果我們要連續讀串口后者連續寫串口 ,那就要記得 加循環了。記得循環的位置,配置 VISA 的后面,跟關閉 VISA 的前面。這個道理很簡單,

Example:
你要把一個屋子的東西,都搬到門外,那你只需要打開一次門,然后把東西搬完了,再關閉門。對吧?你不用進門一次,開一次門,搬出去了,關門,然后進門,再開門,出門再關門。。。。。很累的吧。。。。
還有,結尾一定要關閉 VISA。不關閉 VISA,你的串口的控制權,一直沒被釋放,你的串口就工作不正常了。

對 VISA 串口的理解,可以用打電話解釋。就拿打電話來說吧。
①,首先,撥對方號碼,號碼肯定要配置正確吧,不正確肯定達不到對方的, VISA 配置串口相當於你給對方撥電話。
②,其次,給對方說要說的話,這個相當於 VISA 串口寫。你說話,當然也也聽對方說
話,那就是 VISA 串口讀
③,通話結束,要掛電話,掛電話相當於 關閉 VISA.

下面示意圖:
撥電話→VISA 串口配置
講電話→VISA 讀寫(這里就是各種命令啦。)
掛電話→VISA 關閉
有空記得看 VISA 的四個函數的說明。其實串口很容易。難點在於你讀到數據,怎么轉化成自己需要的數據。而且保證數據無誤。

深入分析:
首先,進行儀器通信前,注意配置你的儀器通訊方式。

正常情況下,連接好你的儀器(這個看說明書,有的是 232 接口,有的是 485 接口,232接口的,直接連接電腦的 COM 口就可以了,如果是 485 的,電腦都不自帶,需要買個485轉換器)連接好儀器后,有些儀器,需要設置遠程方式。

例如:keithley2000 的萬用表,需要按如下方式設置為 232 接口。
<ignore_js_op> 

設置好了之后,就可以用進行串口通信了。

前面給大家看了個最基本的NI自帶的例子,不過這個例子,單次運行只能運行一次,

問:如何讓它持續的讀寫直到按下停止鍵?
答:前面提示過,要加循環,在 VISA 串口配置和 VISA 關閉中間加。為什么要這樣呢?前面已經回答了。
示例圖如下:
<ignore_js_op> 
為了方便大家觀看,我把While循環框顏色調整成紅色。(估計會有人問怎么調節顏色,這個用工具欄顏色筆。再不懂自己看書吧。這個不是本文內容)

自己記得這么加,然后單擊 工具欄的 “運行一次”按鈕,就會一直在讀寫狀態了。記得循環框的問題。
但是,你這樣,生成 EXE 程序后,打開 EXE 就運行了,會報錯,因為你不能自己改變串口參數再運行。一般程序都是運行程序后,設定串口參數,比如 COM 口,波特率等,如果僅僅按照上圖所示,是無法在程序中設定的。

問:如果我想先運行 LabVIEW 程序,然后在線改變串口配置參數,然后再進行讀寫串口,我改怎么做?
答:這個需要考慮程序結構問題。
下面細講。如果你要運行 LabVIEW 后,改變 COM 口參數等,然后打開串口操作讀寫等,你需要考慮你的程序邏輯結構。可能邏輯已經有了,就是你所謂的想要的操作。那么怎么實現就是編程問題了。

最簡單的實現方式,是上圖的結構,外面在套一個循環。
<ignore_js_op> 

記得,畫圈的3 個按鈕的機械動作,都是釋放時候觸發,按鈕有三個機械動作。這個很每本書都會講,或者自己百度相關知識。

怎么設置見下圖所示。
<ignore_js_op> 

如果你覺得打開串口跟關閉串口用2 個按鈕比較不好看。那你可以只用一個按鈕,用它的兩個狀態表示”打開串口”和”關閉串口”。具體需要改動的看下圖我畫圈的地方。

下面解釋下結構:
利用了用一個局部變量(或者自己使用 “屬性節點”→“值”)。

當前面打開串口為真時,進入串口程序,然后運行一次配置后,進入讀寫 VISA 串口循環,程序就一直在這個讀寫狀態。由於打開串口為真,后面用一個布爾的“非”操作,這樣,WHILE 循環的條件就為假,就一直進行 WHILE 循環,當你再次點擊“打開串口”時候,打開串口這個控件值就為“假”,經過“非”操作,WHILE 循環條件值為真,退出循環。
<ignore_js_op> 
這個例子很容易吧。
差不多就是一個簡單的 LabVIEW 串口助手程序了。當然你也可以用事件結構,可能一般初學者對事件結構都不是很了解。
注意:記住如果是用局部變量,請更改按鈕的機械動作。否則會出現以下錯誤。
<ignore_js_op> 

提示:觸發動作與局部變量不兼容,這個時候,你要改為如下動作。看我紅框部分。
<ignore_js_op>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM