使用LabVIEW讀寫二進製文件

更新 May 25, 2021

產品資訊

軟體

  • LabVIEW

問題敘述

我想使用LabVIEW讀寫二進製文件。我還想了解該過程如何運作,以便可以將諸如二維陣列的數據結構寫入和讀取到二進製文件中。
我想知道使用Write to Binary File vi 寫入網絡資料夾時LabVIEW中傳輸數據包的大小。

解決方案

LabVIEW程式可以使用位於Programming » File I/O功能面板中的Write to Binary File VI和從Binary File VI讀取二進製文件。 NI範例查找器Help»Find Examples...Fundamentals » File Input and Output » Read Binary File.viWrite Binary File.vi中有幾個範例,演示了如何使用這些功能。


Windows和IPv協議決定了從LabVIEW發送的數據傳輸包的大小。更具體地說,內置的Windows SMB協議用於傳輸最大封包大小為64 KB的數據。

相關資訊

存取二進製文件與存取其他文件按照相同的程式碼結構。具體來說,用戶打開文件,根據需要呼叫讀取和寫入功能,然後關閉文件。下圖顯示了一個簡單的情況,說明如何將32位元帶符號整數寫入二進製文件:
讀取二進製文件時,用戶必須知道將數據寫入文件時的格式。寫入二進製文件時,請注意存儲數據的格式,以便以後可以正確讀取。用戶可以選擇二進製文件的結構,並且二進製文件沒有通用的格式(與ASCII不同),因此其他應用程式或作業系統可能無法從文件中讀取有意義的數據。

將整數寫入二進製文件時,整數的位元將映射到文件中的位元。例如,如果將I32寫入二進製文件,則它將佔用32位空間。
將I32 2D陣列寫入二進製文件更加複雜,因為該陣列可能具有不同數量的行和列。為了簡化此二維陣列,數據通常與描述這些尺寸的標頭一起保存。要從二進製文件讀取二維陣列,LabVIEW需要一個8字節的標頭。可以通過兩種方式創建此標頭:
  • 手動:陣列大小函數可用於決定這些值。必須將FALSE常數連接到Prepend Array或String Size? Write to Binary File的終端。
  • 自動:要自動生成標頭,可以將TRUE常數連接到Prepend Array或String Size? Write to Binary File功能的終端(但不是必需的)。
通常,建議讓“Write to Binary File ”功能自動創建數據標頭因為該標頭根據保存到磁碟的數據類型而有所不同。但是,有時用戶明確需要知道標頭結構並寫入磁碟(或從磁碟讀取)。在這種情況下,可以使用在線參考來確定不同數據類型的必要標頭。

下圖顯示了將2D陣列寫入二進製文件並自動創建標頭的簡單情況:
要讀取二進製文件,請將所需的數據類型連接到“Data Type”輸入中。例如,如果文件包含一個32位元整數的2D陣列,則將一個32位元整數的2D陣列連接到“Data Type”輸入。然後,LabVIEW將假定在文件中存儲了適合虛擬數據類型的標頭文件,並使用該文件標頭提取二進制訊息。下圖顯示了從二進製文件讀取2D數據的簡單情況: