點擊學習>>《龍哥手把手教你學LabVIEW視覺設(shè)計》視頻教程
一、串口通信簡介
串口按位(bit)發(fā)送和接收字節(jié)。串口通信是指外設(shè)和計算機間,通過數(shù)據(jù)信號線 、地線、控制線等,按位進行傳輸數(shù)據(jù)的一種通訊方式。這種通信方式使用的數(shù)據(jù)線少,在遠距離通信中可以節(jié)約通信成本,但其傳輸速度比并行傳輸?shù)汀?/p>
串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù)。它很簡單并且能夠?qū)崿F(xiàn)遠距離通信。比如IEEE488定義并行通行狀態(tài)時,規(guī)定設(shè)備線總長不得超過20米,并且任意兩個設(shè)備間的長度不得超過2米;而對于串口而言,長度可達1200米。典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成,分別是地線、發(fā)送、接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時在另一根線上接收數(shù)據(jù)。其他線用于握手,但不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗。對于兩個進行通信的端口,這些參數(shù)必須匹配。
二、LabVIEW簡介
LabVIEW是一種程序開發(fā)環(huán)境,由美國國家儀器(NI)公司研制開發(fā),類似于C和BASIC開發(fā)環(huán)境,但是LabVIEW與其他計算機語言的顯著區(qū)別是:其他計算機語言都是采用基于文本的語言產(chǎn)生代碼,而LabVIEW使用的是圖形化編輯語言G編寫程序,產(chǎn)生的程序是框圖的形式。 LabVIEW軟件是NI設(shè)計平臺的核心,也是開發(fā)測量或控制系統(tǒng)的理想選擇。
LabVIEW特點
盡可能采用了通用的硬件,各種儀器的差異主要是軟件。
可充分發(fā)揮計算機的能力,有強大的數(shù)據(jù)處理功能,可以創(chuàng)造出功能更強的儀器。
用戶可以根據(jù)自己的需要定義和制造各種儀器
三、Labview實現(xiàn)串口通信步驟
1.在程序面板上添加VISA配置接口

2.添加后,開啟幫助文檔的顯示。菜單的Help-》show context help,如下圖

鼠標選擇目標則會顯示幫助框。如下圖所示。

3.創(chuàng)建相應(yīng)的配置
在程序面板中鼠標移動到對應(yīng)的引腳上,點擊鼠標右鍵-》create-》control,創(chuàng)建后,界面面板上會出現(xiàn)對應(yīng)的控制框。如下圖所示,創(chuàng)建個VISA resource name。

前面板顯示如下:

4依次創(chuàng)建,波特率、停止位、數(shù)據(jù)位等
如下圖所示。

5.創(chuàng)建個while循環(huán),用于放置發(fā)送的程序
鼠標移動到循環(huán)條件控制的引腳上,創(chuàng)建個control。用于調(diào)試,不對條件處理,會報錯。
6前面板放置個按鈕,用于控制數(shù)據(jù)的發(fā)送
7.創(chuàng)建個事件,用于響應(yīng)發(fā)送按鈕
鼠標移動到timeout的位置,鼠標右鍵選擇edit events…如下圖所示。

操作上面后,出現(xiàn)如下界面:選擇需要響應(yīng)的控件,這里選擇“ok button”,選擇鼠標按下

點擊ok后,事件的名稱也變化了。如下圖所示。

如果鼠標點擊按鍵,則會進入事件處理。
8.創(chuàng)建VISA寫函數(shù)

9連接端口和寫函數(shù)

10添加個關(guān)閉函數(shù)


11.創(chuàng)建字符串控件,傳遞給寫函數(shù),用于發(fā)送

選中VISA Write的write buffer,右鍵create-》control,
12界面如下所示

13.安裝虛擬串口,提供一個下載地址
用虛擬串口配置兩個端口,配置好后,這兩個串口之間是自動連接上,模擬硬件上兩個串口對接上的。

14運行串口工具
15.運行串口工具,打開串口,運行VI,發(fā)送數(shù)據(jù)
我的電腦配置的是COM12和COM13,vi選擇COM12

運行VI,在write buffer里面填寫test,點擊OK發(fā)送。

每點擊一次,發(fā)送一次
16.建立接收模塊
添加個while循環(huán),

創(chuàng)建while循環(huán),用于接收。創(chuàng)建VISA Read,在Read buffer引腳上點擊鼠標右鍵create-》indicator,建立個顯示控件。

17 在VISA Enable Event的event type,創(chuàng)建個常量

然后在常量的下拉列表中選擇Serial Character。這個表示串口接收到數(shù)據(jù),可以進入幫助文檔查看詳細的說明。
18.創(chuàng)建事件等待

19.連接事件,等待事件的類型直接連接在VISA Enable Event的Event type即可。

20.添加個屬性節(jié)點,Visa Bytes at serial port,獲取串口中的字節(jié)數(shù)

連接字節(jié)數(shù),這樣告訴需要讀取的字節(jié)數(shù)。也能保證每次都把串口中的數(shù)據(jù)讀完。

21.添加個case結(jié)構(gòu)

22.運行效果

23.調(diào)整下界面

24程序無法結(jié)束
按理說,點擊兩個stop按鍵,程序應(yīng)該結(jié)束才對,但是事實不是這樣的。點擊之后會卡住哪?
發(fā)送循環(huán)中,事件是一直等待按鍵的時間處理。即使點擊stop后程序也會等待按鍵的處理,現(xiàn)象是:點擊兩個結(jié)束按鈕后,還需要點擊一次發(fā)送“ok按鈕”才能結(jié)束程序。 處理辦法:在發(fā)送按鈕事件創(chuàng)建個超時處理。
1. 如下圖所示,中事件的超時時間設(shè)置1000ms的常量
2. 將鼠標放置在圖中的紅框中,點擊鼠標右鍵,選擇Add Event Case.。

如果字節(jié)數(shù)大于0,那么讀取數(shù)據(jù)并顯示。事件的超時時間設(shè)置為1000ms。
3. 添加應(yīng)用超時判斷,如下圖所示。選擇點擊ok

添加后如下:

這樣運行程序中,點擊兩個STOP按鈕后就可以結(jié)束程序了。
25.使用一個按鈕來結(jié)束程序
刪除stop 和STOP2按鈕,在界面面板上添加個結(jié)束按鍵,如下圖所示。鼠標移動到按鍵上,右鍵,創(chuàng)建stop按鈕的value屬性節(jié)點,如下圖所示。

創(chuàng)建兩個結(jié)束按鍵的value屬性節(jié)點,連接在循環(huán)條件上。

但是注意上面圖中,連接線后,是錯誤的。處理辦法如下:
修改按鍵的行為,默認是第二排第二個,修改為上面第一個即可。

26優(yōu)化1后的結(jié)果
運行程序后,點擊一下stop,程序就結(jié)束了。

27.優(yōu)化顯示框
28將接收的字符追加顯示
添加一個移位寄存器,將鼠標移動到while循環(huán)的左右邊界上,點擊鼠標右鍵,選擇addshift Register如下圖所示。

添加一個字符串連接函數(shù),如下圖所示。

這樣程序是錯誤的:點擊下圖所示,可以查看錯誤的地方,提示。問題是在,添加了移位寄存器,然后兩邊的值連接經(jīng)過case結(jié)構(gòu),我們只連接了True情況,F(xiàn)alse情況還沒處理。

29優(yōu)化2運行效果

30.添加滾動條

鼠標移動到顯示框上右鍵,選擇屬性。界面如下。

選中Show Vertical scroll bar,顯示框的滾動條就出來了,點擊ok。
31還有一問題,接收數(shù)據(jù)中,滾動條不會跟著動
處理辦法是,設(shè)置滾動條的位置。創(chuàng)建滾動條位置屬性節(jié)點,Scroll Position

鼠標移動到屬性節(jié)點上,右鍵,選擇Change to Write。

那么控制的引腳方向轉(zhuǎn)到前面了。然后創(chuàng)建個常量1000,如下圖所示。

這樣呢,接收的字符顯示的行數(shù)在1000以內(nèi),那么都會定位剛接收的字符位置。
32 點擊stop后,再運行程序的時候,stop還是那個狀態(tài)
處理辦法是在初始化過程中,對stop的按鍵值進行初始化。創(chuàng)建stop的value屬性節(jié)點。如下圖所示。

33.累加接收的字符數(shù)并顯示

創(chuàng)建個移位寄存器,連接VISA Read 的Return count,與上一次的值相加,再傳給移位寄存器,作下一次使用,并顯示相加的數(shù)字。
34 優(yōu)化3后

35 可以對接收字符數(shù)判斷,超過多少字符數(shù)后就清空顯示框,重新開始顯示
處理辦法是:對字符數(shù)做個判斷,如果超過多少,加個case結(jié)構(gòu),超了就賦值個空字符串,未超就追加。
推薦閱讀:
電子發(fā)燒友App
















評論