LabVIEW編程實例:如何通過TCP協議進行數據通信

編程語言 通信 軟件 2018頭條記憶 技術 編碼那些事 2019-04-06

對於網絡通信來說,LabVIEW平臺本身提供了多種方法加以實現,如可以通過TCP協議、UDP協議、DataSocket技術、甚至遠程面板通信技術等方式進行通信。

下面通過一個簡單的例子,演示在LabVIEW中如何通過TCP協議實現兩個程序之間的數據通信功能。

實例說明

編寫兩個程序,分別為服務器端程序和客戶端程序。其中,服務器端程序開始運行時,處於等待客戶端連接的狀態中,一旦有客戶端成功連接,則向客戶端發送帶有時間信息的字符串“I`m sever!”;客戶端程序與服務器成功建立連接後,則讀取服務器端發送的信息,並在前面板上顯示出來,以此來實現服務器端與客戶端的通信。

編程思路

TCP(Transmission Control Protocol,傳輸控制協議)是一種面向連接的、可靠的、基於字節流的傳輸層通信協議。使用LabVIEW基於TCP協議編寫通信軟件時,一般其整個傳輸過程如下:

(1)服務器通過主機名或者IP地址與端口號,建立偵聽,等待客戶端連接;

(2)客戶端根據主機的IP地址和端口號發出連接請求;

(3)服務器與客戶端建立連接後,通過讀寫函數進行TCP數據通信;

(4)關閉連接。

在LabVIEW中,提供了一組專門的相關TCP的操作函數,在後面板程序框圖中進入函數®數據通信®協議中選擇TCP可以進入TCP子模板,主要節點函數如下圖所示。

LabVIEW編程實例:如何通過TCP協議進行數據通信


使用上面的函數,下面分別給出服務器端程序和客戶端程序的具體實現方法。

服務器端程序

服務器端前面板如下圖所示,其中,“端口號”設置服務器程序的端口,該值即為客戶端程序的要連接的服務器程序的端口標識值;“待發送字符串”為發送給客戶端程序的內容,該處設置為“I`m sever!”。

LabVIEW編程實例:如何通過TCP協議進行數據通信


服務器端程序框圖如下:

LabVIEW編程實例:如何通過TCP協議進行數據通信


在程序框圖中,首先利用“TCP偵聽”函數創建一個偵聽,該函數需要2個關鍵參數:端口號和超時時間(單位為ms)。該示例超時時間設為-1表示永遠不超時,即無限等待下去直到有一個客戶端程序連接。該函數運行後返回一個“連接ID”參數,該參數是其它TCP相關操作函數的輸入參數接口。利用“格式化日期/時間字符串”函數取得當前的系統日期及時間,然後與待發送的字符串連接後得到實際發送的消息內容,利用“寫入TCP數據”函數發送到客戶端程序即可。該例中採用了兩個“寫入TCP數據”節點函數發送數據,首先發送消息內容的字節數(此處使用“強制類型轉換”函數將“I32”類型的長度數據轉換為字符串),其次發送實際的內容字符串數據。這種先發字符串長度再發字符串內容的發送方式有利於客戶端正確的接收數據。最後調用“關閉TCP連接”函數,退出程序。

客戶端程序

客戶端前面板如下圖所示,其中,“端口號”即為服務器端程序設置的端口標識值;“IP地址”設置服務器端程序的IP地址,“已接收字符串”顯示服務器端程序發送的消息及收到該消息時的時間信息。

LabVIEW編程實例:如何通過TCP協議進行數據通信


客戶端端程序框圖如下:

LabVIEW編程實例:如何通過TCP協議進行數據通信


在程序框圖中,首先調用“打開TCP連接”函數建立與服務器端程序的連接,該函數需要2個關鍵參數:IP地址和端口號,即服務器端程序所在的主機的IP地址及服務器端程序設置的端口號。該函數與服務器端程序正確建立連接後返回一個“連接ID”參數,該參數是其它TCP相關操作函數的輸入參數接口。與服務器端框圖程序相對應,該程序也採用了2個“讀取TCP數據”節點函數讀取服務器端程序發送的數據,與“寫入TCP數據”節點函數不同的是,該函數還需要一個參數:要讀取的字節數。由於服務器端程序先發送的是總字節信息,因此客戶端首先讀取接收消息內容的字節信息,輸入I32類型的常數“4”,表示讀取4個字節的內容,然後將讀取的字符串內容使用“強制類型轉換”函數轉換為“I32”類型的字節值,將字節值作為第2個“讀取TCP數據”節點函數的讀取的字節值參數,然後將實際的消息內容讀出顯示到前面板的“已接收字符串”控件上即可。這種方法是TCP通信中常用的方法,可以保證在不丟失數據的前提下有效地發送或接收數據。最後調用“關閉TCP連接”函數,退出程序。

總結

通過上面的程序可以看出,由於LabVIEW對TCP協議通信底層的具體實現方法進行了高度的封裝,因此使用這些函數構建複雜、靈活的網絡測試系統時,相對於其它高級編程語言,將會大大降低編程人員的開發難度,提高編程效率,這也是圖形化編程語言的高效、簡潔的魅力所在。

另外,需要說明的是:

(1)採用TCP節點通信時,在服務器端框圖程序中必須指定網絡通信端口,客戶端也要指定相同的端口,才能與服務器之間進行正確的通信,如上面例子中指定端口號為1800。在一次通信連接建立後,就不能改變端口的值了。如的確需要改變端口值,則必須首先斷開連接,才能重新設置新的端口值。

(2)在客戶端要指定服務器的IP地址才能與服務器之間建立連接。若服務器和客戶機在同一臺機子上運行時,客戶端框圖程序中輸入的服務器地址可以設置為下面任意一個值:“localhost”、“127.0.0.1”、空字符串或者當前計算機的名稱。

如果你覺得這篇文章對你有用的話,收藏+點贊吧。

相關推薦

推薦中...