點擊學習>>《龍哥手把手教你學LabVIEW視覺設計》視頻教程
一、串口通信簡介
串口按位(bit)發送和接收字節。串口通信是指外設和計算機間,通過數據信號線 、地線、控制線等,按位進行傳輸數據的一種通訊方式。這種通信方式使用的數據線少,在遠距離通信中可以節約通信成本,但其傳輸速度比并行傳輸低。
串口按位(bit)發送和接收字節。盡管比按字節(byte)的并行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。它很簡單并且能夠實現遠距離通信。比如IEEE488定義并行通行狀態時,規定設備線總長不得超過20米,并且任意兩個設備間的長度不得超過2米;而對于串口而言,長度可達1200米。典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成,分別是地線、發送、接收。由于串口通信是異步的,端口能夠在一根線上發送數據同時在另一根線上接收數據。其他線用于握手,但不是必須的。串口通信最重要的參數是波特率、數據位、停止位和奇偶校驗。對于兩個進行通信的端口,這些參數必須匹配。
二、LabVIEW簡介
LabVIEW是一種程序開發環境,由美國國家儀器(NI)公司研制開發,類似于C和BASIC開發環境,但是LabVIEW與其他計算機語言的顯著區別是:其他計算機語言都是采用基于文本的語言產生代碼,而LabVIEW使用的是圖形化編輯語言G編寫程序,產生的程序是框圖的形式。 LabVIEW軟件是NI設計平臺的核心,也是開發測量或控制系統的理想選擇。
LabVIEW特點
盡可能采用了通用的硬件,各種儀器的差異主要是軟件。
可充分發揮計算機的能力,有強大的數據處理功能,可以創造出功能更強的儀器。
用戶可以根據自己的需要定義和制造各種儀器
三、Labview實現串口通信步驟
1.在程序面板上添加VISA配置接口
2.添加后,開啟幫助文檔的顯示。菜單的Help-》show context help,如下圖
鼠標選擇目標則會顯示幫助框。如下圖所示。
3.創建相應的配置
在程序面板中鼠標移動到對應的引腳上,點擊鼠標右鍵-》create-》control,創建后,界面面板上會出現對應的控制框。如下圖所示,創建個VISA resource name。
前面板顯示如下:
4依次創建,波特率、停止位、數據位等
如下圖所示。
5.創建個while循環,用于放置發送的程序
鼠標移動到循環條件控制的引腳上,創建個control。用于調試,不對條件處理,會報錯。
6前面板放置個按鈕,用于控制數據的發送
7.創建個事件,用于響應發送按鈕
鼠標移動到timeout的位置,鼠標右鍵選擇edit events…如下圖所示。
操作上面后,出現如下界面:選擇需要響應的控件,這里選擇“ok button”,選擇鼠標按下
點擊ok后,事件的名稱也變化了。如下圖所示。
如果鼠標點擊按鍵,則會進入事件處理。
8.創建VISA寫函數
9連接端口和寫函數
10添加個關閉函數
11.創建字符串控件,傳遞給寫函數,用于發送
選中VISA Write的write buffer,右鍵create-》control,
12界面如下所示
13.安裝虛擬串口,提供一個下載地址
用虛擬串口配置兩個端口,配置好后,這兩個串口之間是自動連接上,模擬硬件上兩個串口對接上的。
14運行串口工具
15.運行串口工具,打開串口,運行VI,發送數據
我的電腦配置的是COM12和COM13,vi選擇COM12
運行VI,在write buffer里面填寫test,點擊OK發送。
每點擊一次,發送一次
16.建立接收模塊
添加個while循環,
創建while循環,用于接收。創建VISA Read,在Read buffer引腳上點擊鼠標右鍵create-》indicator,建立個顯示控件。
17 在VISA Enable Event的event type,創建個常量
然后在常量的下拉列表中選擇Serial Character。這個表示串口接收到數據,可以進入幫助文檔查看詳細的說明。
18.創建事件等待
19.連接事件,等待事件的類型直接連接在VISA Enable Event的Event type即可。
20.添加個屬性節點,Visa Bytes at serial port,獲取串口中的字節數
連接字節數,這樣告訴需要讀取的字節數。也能保證每次都把串口中的數據讀完。
21.添加個case結構
22.運行效果
23.調整下界面
24程序無法結束
按理說,點擊兩個stop按鍵,程序應該結束才對,但是事實不是這樣的。點擊之后會卡住哪?
發送循環中,事件是一直等待按鍵的時間處理。即使點擊stop后程序也會等待按鍵的處理,現象是:點擊兩個結束按鈕后,還需要點擊一次發送“ok按鈕”才能結束程序。 處理辦法:在發送按鈕事件創建個超時處理。
1. 如下圖所示,中事件的超時時間設置1000ms的常量
2. 將鼠標放置在圖中的紅框中,點擊鼠標右鍵,選擇Add Event Case.。
如果字節數大于0,那么讀取數據并顯示。事件的超時時間設置為1000ms。
3. 添加應用超時判斷,如下圖所示。選擇點擊ok
添加后如下:
這樣運行程序中,點擊兩個STOP按鈕后就可以結束程序了。
25.使用一個按鈕來結束程序
刪除stop 和STOP2按鈕,在界面面板上添加個結束按鍵,如下圖所示。鼠標移動到按鍵上,右鍵,創建stop按鈕的value屬性節點,如下圖所示。
創建兩個結束按鍵的value屬性節點,連接在循環條件上。
但是注意上面圖中,連接線后,是錯誤的。處理辦法如下:
修改按鍵的行為,默認是第二排第二個,修改為上面第一個即可。
26優化1后的結果
運行程序后,點擊一下stop,程序就結束了。
27.優化顯示框
28將接收的字符追加顯示
添加一個移位寄存器,將鼠標移動到while循環的左右邊界上,點擊鼠標右鍵,選擇addshift Register如下圖所示。
添加一個字符串連接函數,如下圖所示。
這樣程序是錯誤的:點擊下圖所示,可以查看錯誤的地方,提示。問題是在,添加了移位寄存器,然后兩邊的值連接經過case結構,我們只連接了True情況,False情況還沒處理。
29優化2運行效果
30.添加滾動條
鼠標移動到顯示框上右鍵,選擇屬性。界面如下。
選中Show Vertical scroll bar,顯示框的滾動條就出來了,點擊ok。
31還有一問題,接收數據中,滾動條不會跟著動
處理辦法是,設置滾動條的位置。創建滾動條位置屬性節點,Scroll Position
鼠標移動到屬性節點上,右鍵,選擇Change to Write。
那么控制的引腳方向轉到前面了。然后創建個常量1000,如下圖所示。
這樣呢,接收的字符顯示的行數在1000以內,那么都會定位剛接收的字符位置。
32 點擊stop后,再運行程序的時候,stop還是那個狀態
處理辦法是在初始化過程中,對stop的按鍵值進行初始化。創建stop的value屬性節點。如下圖所示。
33.累加接收的字符數并顯示
創建個移位寄存器,連接VISA Read 的Return count,與上一次的值相加,再傳給移位寄存器,作下一次使用,并顯示相加的數字。
34 優化3后
35 可以對接收字符數判斷,超過多少字符數后就清空顯示框,重新開始顯示
處理辦法是:對字符數做個判斷,如果超過多少,加個case結構,超了就賦值個空字符串,未超就追加。
推薦閱讀:
評論