1. 程式人生 > >Labview VISA實現串列埠通訊例項講解 轉

Labview VISA實現串列埠通訊例項講解 轉

1.安裝VISA驅動
VISA驅動不含在軟體包中,必須要自己去下載。

VISA(Virtual Instrument Software
Architecture,簡稱為"Visa"),即虛擬儀器軟體結構,是VXI
plug&play聯盟制定的I/O介面軟體標準及其規範的總稱。VISA提供用於儀器程式設計的標準I/O函式庫,稱為VISA庫。VISA函式庫駐留在計算機系統內,是計算機與儀器的標準軟體通訊介面,計算機通過它來控制儀器

如果安裝成功就可以看到COM口了。

然後點選右鍵,選擇儀器I/O,就可以看到本次我們要使用的4個VISA控制元件了。

使用快捷鍵ctrl+h可以開啟即時幫助,在即時幫助中我們可以看到關於該控制元件的說明。其中還有詳細幫助資訊,十分方便我們的開發應用。
2.放置控制元件
這是一個簡單的收發程式,程式的主體主要由上面提到的控制元件組成。

就是先配置串列埠,然後再到寫入,然後在讀取。完成這些操作後就把串列埠關閉。
3.VISA配置串列埠
接下來我們要對串列埠進行配置。
一般來說,配置的主要內容有:

visa資源名稱。
波特率
資料位元
奇偶校驗:檢驗程式碼1的個數
流控制

接下來我一一介紹他們的配置方法。
1)VISA資源名稱

這個可以在接線端上點選右鍵或者建立一個輸入控制元件。
用於選擇和下位機通訊的埠號。
2)波特率
和visa資源名稱一樣,也可以選擇建立輸入控制元件和常量。這兩項值都要和下位機相對應。
一般多為9600,115200也可以自定義。
在這裡我選用9600.
3)資料位元
資料位元是輸入資料的位數。
右鍵點選建立輸入控制元件。
4)奇偶校驗
監測收到資訊的1的個數,用於校驗。
右鍵點選建立輸入控制元件。
5)流控制
因為上位機的處理速度和下位機的處理速度快慢不一致。可能導致一方資料還未來的及處理,另一方又繼續傳送,導致資料的丟失。
右鍵點選建立輸入控制元件。
labview中可以使用硬體流控制和軟體流控制。

軟體流控制
XON/XOFF(繼續/停止)是非同步序列連線的計算機和其他元件之間的資料流控制協議。當接收端的輸入緩衝區內資料量超過設定的高位時,就向資料傳送端發出XOFF字元,傳送端收到XOFF字元後就立即停止傳送資料;當接收端的輸入緩衝區內資料量低於設定的低位時,就向資料傳送端發出XON字元,傳送端收到XON字元後就立即開始傳送資料。

硬體流控制

硬體流控制常用的有RTS/CTS流控制,收發雙方都有各自的RTS和CTS,如通訊雙方A,B。那麼A的RTS就與B的CTS相連,A的CTS就與B的RTS相連。RTS的作用是告訴對方我可以接受資料,是輸出口;CTS的作用是根據電平高低控制傳送或不發生數。

6)停止位

用於表示單個包的最後一位。典型的值為1,1.5和2位。由於資料是在傳輸線上定時的,並且每一個裝置有其自己的時鐘,很可能在通訊中兩臺裝置間出現了小小的不同步。因此停止位不僅僅是表示傳輸的結束,並且提供計算機校正時鐘同步的機會。適用於停止位的位數越多,不同時鐘同步的容忍程度越大,但是資料傳輸率同時也越慢。

7)啟動終止符與終止符

“終止符”的預設值為10,它的十六進位制是“0x0A”,這是一個 ASCII碼,是一個換行符。
啟動終止符。預設值是true,當收到終止符是就停止接收。一般不需要終止符時要設定其為false
8)超時
如果不設定超時,或者超時無限大,程式就一直在等 VISA 讀取,會佔用整個cpu。
如果設定了超時,等待超時時間到了,程式就不執行了,錯誤輸出會輸出錯誤。
所以一般解決的時就在迴圈中加入延時,防止一直佔用導致程式出現無法執行。
9)簇類
在完成控制元件放置後,我們可以將所需要的配置控制元件都放在同一簇類中。使程式更加美觀。

在前面板中選擇簇類,將控制元件放入。

放入後

程式框圖

10)配置串列埠控制元件底層

這個串列埠配置函式不是底層vi,通過雙擊配置串列埠可以開啟配置串列埠底層的vi。可以看出配置串列埠程式是一個屬性節點!

屬性節點:
獲取(讀取)和/或設定(寫入)引用的屬性。 通過屬性節點對本地或遠端應用程式例項、VI或物件獲取或設定屬性和方法 也可通過屬性節點訪問LabVIEW類的私有資料。

4.寫入串列埠
在串列埠配置完成後,接下來要做的就是寫入串列埠。串列埠配置就好像是門的鑰匙,開門後就該進去了。

建立一個用於傳送的迴圈

使用一個事件結構加一個按鈕作為傳送

再加上一個傳送資料的視窗

5.讀取操作
在完成寫的操作後,就開始進行讀的操作配置。

這裡最好加入一個反饋節點,以防止一些傳送過來的資料讀取不到。

前面加入一個反饋節點,用於讀取傳送過來的資料的位數。可以用於校驗
6.完成
後面加入一些迴圈結構等就完成整個串列埠的簡單收發。