Airbolt
(Airbolt)
#1
在這邊介紹三種 Advanced File I/O Techniques
或許在 LabVIEW 8.x 已經提供了這方面的整合 vi 給予使用,
但是在 LabVIEW 7.x 以前的使用者來說,如果有這些需要的話,還是可以參考一下。
另外還有很多其它的寫檔設計技術,比方說寫入 waveform、configuration 等等,
這些大家可以參考 LabVIEW 本身所提供的 PDF 檔 (lvuser.pdf)
- 優點:
1. 為人們可閱讀的
2. 檔案具備 跨程式、作業平臺 之能力
- 缺點:
1. 佔用較大的儲存空間
2. 讀、寫速度較慢
3. 程式執行佔用較多記憶體空間
4. 無法執行 Random access 的讀、寫 (註)
5. 在儲存 numeric 資料時,可能會遺失掉精準度
-
Text File Writer:
一開始,我們開啟或是建立新的文字檔,取得該文字檔的 Refnum 來做寫入的動作,
之後在 close 掉 Refnum,以儲存資料。

-
Text File Reader:
一開始,開啟即有的文字檔,並取得 file size,送給「Read File.vi」,
來正確取得文字檔內容。
注意! 如果此一 file size 未告知「Read File.vi」,則不能正確知道檔案
內容結尾在哪裡,也會因此而無法正確讀取到內容。

Airbolt38995.4941898148
Airbolt
(Airbolt)
#2
- 優點:
1. 佔用最少的儲存空間
2. 讀、寫速度最快
3. 執行期間佔用最少的記憶體
4. 可執行 Random access 的讀、寫 (註)
5. 在儲存 numeric 資料時,可以保留精準度
-
Binary File Writer 第一種設計法 (寫入的設計法共有兩種):
要特別注意的一點是在檔案一開始的地方,我們要先寫入 "檔頭",
這些檔頭是用來記載之後所寫入的檔案內容所「佔用的空間」、「Data Type」
為何?
以底下寫入 2D Array (DBL) 來說,
我們先寫入第一維 Row 的大小,再寫入第二維 Column 的大小,
最後才寫入真正的資料。

-
Binary File Writer 第二種設計法 (寫入的設計法共有兩種):
第二種方法較為簡單、便利些,只需要在「Writer File.vi」的接腳 "head (F) "
給予 True 值,即可寫入 "檔頭"

-
Binary File Reader :
在「Read File.vi」上的接腳 "byte stream type" 給予指定的 Data Type,
這樣才在 output 接腳 "data"上,得到正確 Data Type 的輸出

Airbolt38995.4935069444
Airbolt
(Airbolt)
#3
- 優點:
1. 快速且容易來 儲取 複雜 的資料型態,比如,Cluster
2. 可執行 Random access 的讀、寫 (註)
- 通常我們會搭配 Type Def. 的 Controller 來定義這些在 Datalog File I/O
中所使用的 Data Type。
-
Datalog File Writer:
在「New File.vi」的接腳 "datalog type" 上,給予將要寫入的 Data Type,
如此一來,才能建立並輸出 Datalog 的 "refnum",而檔案也才能寫入正確的
Data Type。
平常「New File.vi」的接腳 "datalog type" 不接時,只是一般建立新檔的動作。


-
Datalog File Reader:
在「Open File.vi」的接腳 "data type",同樣要給予指定的 Data Type,
這樣開啟、輸出 Datalog 的 "refnum",而讀出的資料才會是正確的 Data Type。
平常「Open File.vi」的接腳 "datalog type" 不接時,只是一般開啟舊檔的動作。


Airbolt38995.4964467593
ancle
(ancle)
#5
感謝Airbolt精彩的教學,我已收藏本文
PS.提醒一下Airbolt可否將圖示加上浮水印,以免被盗圖
ancle38995.4600115741
Airbolt
(Airbolt)
#6
謝謝 ancle 的提醒,我已經為圖檔加上了簽名,
一方面提倡智慧財產,另一方面也跟大家示範一下如何來保障自身的權利。
(不過這是我第一次為圖檔加上簽名,如果有防礙閱讀,或是更好的方式,
請不吝告知我,謝謝。)
ancle
(ancle)
#7
建議Airbolt參考以下方式,謝謝!

ancle38995.512037037
Binary file I/O還有另一個好處是在跨語系的OS下不會出問題. 譬如說你的檔案有中文字,在英文 or 法文版OS 執行時可能會有問題. 這是我之前遇到的問題.