LabVIEW-TCP/IP資料傳輸

更新於 發佈於 閱讀時間約 3 分鐘

LabVIEW做最基本的TCP/IP資料傳輸和可能遇到的問題處裡

準備兩個VI, 分別是傳輸端(TX)和接收端(RX)

流程是: TX先啟動等待連線-->RX建立連線-->TX送出資料-->RX接收資料-->結束

 

詳細說明如下:

傳輸端利用TCP listen來建立一個listner(或server)等待接收端連線

連線建立後, 用TCP write將資料字串送出

其中TCP listen的Service name接點其實是非必要的, 除非把port設成0讓程式隨機設定

另外TCP listen僅能提供一組連線, 如果要建立多組連線需使用TCP Create Listener

搭配TCP Wait On Listener

raw-image

 

接收端(RX)的部份用TCP Open Connection來建立連線

連線成功後用TCP Read來接收TX傳出的資料

Remote port接點可以選擇輸入特定port或者是service name

取決於TX端的設定

輸入listner IP是必要的, 這邊用本機伺服器127.0.0.1來測試

用localhost也是可以, 但他是不通過網卡傳輸

也有可能因為變更過系統host文件而不是127.0.0.x

raw-image

 

資料傳送接收的部份

可以看到不是直接一個指令就把資料處理掉

當然我們可以跟範例一樣隨便設定一個數字為byte to read

但這樣連續傳輸時就會讀到不正確的字串

為了精準的傳送接收正確大小的資料, 避免接收過多或過少

TX端傳送前我們用string length先取得字串長度, 會得到型態是 I32的數字

再把數字casting成字串,放在要傳送的資料前先傳出

 

RX接收時先讀取4個Byte的資料, casting回 I32就是正確的資料長度

4個Byte是因為 I32的儲存空間就是32bits=4Bytes

I32數值範圍可以到2,147,483,647足夠應付一般的一次傳輸量了

程式碼裡的數值常數"4"資料型態就是 I32

所以他除了設定第一次讀取的byte數外,同時還有設定casting型態的功用

=================================

raw-image

在做傳輸測試時偶而會出現像這樣記憶體不足的錯誤訊息

這不是因為硬體的記憶體不足, 而是程式在處理byte to read的數字時出了錯

導致讀取資料需要的記憶體太大

 

找到的解法有兩個

第一個是在兩次傳輸/接收間放一個delay指定, 設為0ms也可以

這個方法實際測試結果是可以改善, 但無法完全根除問題

raw-image

 

另一個解法是TX端傳輸長度和傳輸資料本體合併成一筆資料一次傳出

反正RX端有正確資料長度就可以分別正確讀出兩筆資料

目前用這個解法完全不會再出現記憶體不足的錯誤訊息

raw-image

 

另外在用兩台電腦做連線測試時發現有些電腦會有無法連接的狀況

推測是防火牆或某些網路設定被關閉造成

目前我是把共享檔案和印表機選項啟用就可以了

接下來要用TCP/IP功能製作LabVIEW多人連線通訊系統 (AKA 聊天室)

 

留言
avatar-img
留言分享你的想法!
avatar-img
hls Ding的沙龍
7會員
64內容數
ktest
hls Ding的沙龍的其他內容
2025/03/06
import csv import os folder = 'D:/PROGRAMMING/PythonCode/data_arrange/' fname_sum = 'sum.csv' bump = 6 csv_filenames = [f for f in os.listdir(folde
2025/03/06
import csv import os folder = 'D:/PROGRAMMING/PythonCode/data_arrange/' fname_sum = 'sum.csv' bump = 6 csv_filenames = [f for f in os.listdir(folde
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
<iostream> ​在之前的文章有提到過,<iostream> 是專門處理程式的輸入 (input) 以及輸出 (output) 的函式庫。輸入輸出的對象是以電腦作為主角: 輸入指的是「把資料給電腦」,輸出指的是「從電腦那邊取得資料」。 在這個系列的文章中,程式輸入指的都是從鍵盤輸入資料給電
Thumbnail
<iostream> ​在之前的文章有提到過,<iostream> 是專門處理程式的輸入 (input) 以及輸出 (output) 的函式庫。輸入輸出的對象是以電腦作為主角: 輸入指的是「把資料給電腦」,輸出指的是「從電腦那邊取得資料」。 在這個系列的文章中,程式輸入指的都是從鍵盤輸入資料給電
Thumbnail
問題來了,如果在一組 Master-Slave 在通訊過程中出現其他的裝置「插嘴」的狀況會怎麼樣?因為迴路只有一條,所以只要在同一個通訊迴路上同時有兩台裝置發出訊號,結果就是兩個資料封包互相對撞雙雙損毀…
Thumbnail
問題來了,如果在一組 Master-Slave 在通訊過程中出現其他的裝置「插嘴」的狀況會怎麼樣?因為迴路只有一條,所以只要在同一個通訊迴路上同時有兩台裝置發出訊號,結果就是兩個資料封包互相對撞雙雙損毀…
Thumbnail
紅外線(IR)接收模組是一種常見的元件,可用於接收來自遙控器等設備的紅外線訊號。在本教學中,我們將使用Arduino來連接和讀取IR Receiver Module V2.0模組,以捕捉紅外線訊號的數值。讓我們開始吧!
Thumbnail
紅外線(IR)接收模組是一種常見的元件,可用於接收來自遙控器等設備的紅外線訊號。在本教學中,我們將使用Arduino來連接和讀取IR Receiver Module V2.0模組,以捕捉紅外線訊號的數值。讓我們開始吧!
Thumbnail
LabVIEW FTP上傳檔案與建立資料夾
Thumbnail
LabVIEW FTP上傳檔案與建立資料夾
Thumbnail
建立Modbus IO Server
Thumbnail
建立Modbus IO Server
Thumbnail
這篇文章主要介紹 TCP 可靠性傳輸服務、連接管理、流量控制及擁塞控制等...
Thumbnail
這篇文章主要介紹 TCP 可靠性傳輸服務、連接管理、流量控制及擁塞控制等...
Thumbnail
從瀏覽器到伺服器之間究竟發生了哪些事情?才讓我們可以正常的瀏覽網頁呢?
Thumbnail
從瀏覽器到伺服器之間究竟發生了哪些事情?才讓我們可以正常的瀏覽網頁呢?
Thumbnail
橋接器的特色就是將多個不同網段的獨立網路﹝進行連接﹞,就好像一座橋一樣,把不同的網絡變成同一個網絡一樣。 然而這樣做的主要目的是﹝提高網絡的可靠度﹞、﹝增加網絡的效率及安全性﹞。 如圖所示,﹝Bridge﹞在這邊的運作流程是: 接收到發送請求→判斷請求是否放行→傳送到目的位址。 範例:
Thumbnail
橋接器的特色就是將多個不同網段的獨立網路﹝進行連接﹞,就好像一座橋一樣,把不同的網絡變成同一個網絡一樣。 然而這樣做的主要目的是﹝提高網絡的可靠度﹞、﹝增加網絡的效率及安全性﹞。 如圖所示,﹝Bridge﹞在這邊的運作流程是: 接收到發送請求→判斷請求是否放行→傳送到目的位址。 範例:
Thumbnail
第一層(Layer1) - 實體層(Physical Layer) 實體層主要是用來定義設備裝置之間位元資料傳輸,也就是透過物理線材連接至其他實體設備,傳遞0和1的數位訊號。 實體層包括了針腳、電壓、線纜規範、集線器、中繼器、網卡、主機介面卡等。 第二層(Layer2) - 資料連結層(
Thumbnail
第一層(Layer1) - 實體層(Physical Layer) 實體層主要是用來定義設備裝置之間位元資料傳輸,也就是透過物理線材連接至其他實體設備,傳遞0和1的數位訊號。 實體層包括了針腳、電壓、線纜規範、集線器、中繼器、網卡、主機介面卡等。 第二層(Layer2) - 資料連結層(
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News