LabVIEW和Python二進位數據文件互操作
我們知道LabVIEW和Python交互數據處理二維數組時,使用純文本是最方便的(np.txtsave() 和np.txtload()),可以完整保留數據和維度信息。
不過文本的讀取效率相對來說低一些,所以二進位數據文件的讀寫也是必不可少的。
首先要考慮的是端序的問題,在Windows平台下,LabVIEW默認是大端序big endian,Python默認是小端序little endian,但是無論LabVIEW還是Python,讀取或者寫入文件都是可以配置端序的,所以只要約定好統一的端序即可。
其次二維數組在Python和LabVIEW中保存時各有特點,因此要分情況討論:
Python寫,LabVIEW讀
Python二進位寫二維數組時,有兩種格式:包含文件頭的npy(np.save() &
np.load() )和不包含維數信息的bin(np.tofile()& np.fromfile())文件,npy去掉文件頭和bin文件的內容是一致的,都是數據依次按照一維展開。而npy的文件頭包含了文本形式的數據類型、端序、維數信息,只要解析出來就可以正常恢復二維數組。
LabVIEW寫,Python讀
LabVIEW寫入二維數組時可以選擇是否追加文件頭,不追加的時候就和python的bin文件一致,實際上就是一維數組,而選擇追加時,前邊會有兩個I32數據保存二維數組的維數信息,所以LabVIEW保存的二進位文件只要解析了文件頭就可以用python正常讀取。
擴展維數
對於多維數據,LabVIEW二進位文件和Python的NPY都會擴展文件頭信息,只要做對應的解析後就可以正常讀寫。
而不追加文件頭的LabVIEW二進位文件和Python的二進位文件,仍然是一維連續數組,只要從其他地方能恢復維數信息,是可以互相兼容的。
推薦閱讀: