概述
很多簡儀的板卡支持流盤功能,即AI任務(wù)模式支持Record模式。當(dāng)軟件使用該模式后,即可使用流盤功能。
如何解讀回放流盤文件?最簡單的方法就是參考簡儀為每種設(shè)備提供的C# 范例。用戶可以登錄簡儀官網(wǎng)https://www.jytek.com/,注冊下載簡儀大全《JYPEDIA》,在“Drivers and Software” 頁中搜索下載需要的C# 范例。簡儀提供各類語言的設(shè)備使用范例,但C# 范例具有最全的功能集合,其中包含了流盤文件解讀回放范例。其他語言開發(fā)者若也想實(shí)現(xiàn)流盤文件的解讀回放功能,可參考C# 范例來實(shí)現(xiàn)。
本文特地匯總了簡儀主流板卡的解讀回放流盤文件的方法,如下表。

如上表所展示的原始數(shù)據(jù)解讀方法,主要分為3種方法:
方法1-直接讀取Double值
這種方法最為簡單直接,由于保存的數(shù)據(jù)就是Double類型,因此只需要直接讀取就可以,多用于采樣率不高的板卡。
方法2-將Int16值轉(zhuǎn)換成Double值
這種方法將保存的Int16類型數(shù)據(jù)根據(jù)量程進(jìn)行Double類型轉(zhuǎn)換。由于不同卡在設(shè)計(jì)的時候量程系數(shù)不同,因此需要查看表中的系數(shù)A和系數(shù)B來進(jìn)行轉(zhuǎn)換。這種方法較多用于采樣率高的板卡中。
方法3-根據(jù)通道的標(biāo)定系數(shù)轉(zhuǎn)換成Double值
這種方法需將保存的Int16或Int32數(shù)據(jù)根據(jù)每個通道對應(yīng)的標(biāo)定系數(shù)進(jìn)行標(biāo)定轉(zhuǎn)換成Double類型。好處是每個通道具有獨(dú)立的標(biāo)定系數(shù),此種方法或可能是簡儀未來發(fā)布的設(shè)備的主要解讀回放流盤文件的方法。
此3種方法的使用通常出現(xiàn)在解讀回放流盤文件的最后一步“將原始數(shù)據(jù)轉(zhuǎn)換為Double值”,完整的步驟為:
了解多通道數(shù)據(jù)存放順序
從流盤文件讀取原始數(shù)據(jù)
將原始數(shù)據(jù)轉(zhuǎn)換為Double值
下文將詳細(xì)介紹這幾個步驟。
了解多通道數(shù)據(jù)存放順序
無論何種數(shù)據(jù)格式(Double或Int16或Int32),多通道數(shù)據(jù)在流盤數(shù)據(jù)文件中按以下順序存放:

用戶在使用BinaryReader回讀回來后,均需要按此規(guī)律將數(shù)據(jù)歸類到各個通道。
從流盤文件讀取原始數(shù)據(jù)
根據(jù)流盤數(shù)據(jù)文件所保存的數(shù)據(jù)格式,采用合適的方法讀取數(shù)據(jù)。以下以C# 語言為例。
創(chuàng)建一個BinaryReader的實(shí)例

_playbackfs是FileStream類型,創(chuàng)建流盤文件的文件流。
_playbackbr是BinaryReader類型,基于_playbackfs創(chuàng)建。
讀取byte[]類型的1維數(shù)據(jù)
如果要讀取的數(shù)據(jù)元素個數(shù)為N,且數(shù)據(jù)類型為Double,那么要讀取的字節(jié)數(shù)就是N*sizeof(double),如下

playback是一個原始數(shù)據(jù)類型的2維數(shù)組。
如果是double[,]類型,則是double[每通道樣本數(shù),通道數(shù)]
如果是Int16[,]類型,則是Int16[每通道樣本數(shù),通道數(shù)]
buf是byte[]類型,即讀到的數(shù)據(jù),是個1維數(shù)組。
根據(jù)通道和原始數(shù)據(jù)類型數(shù)轉(zhuǎn)為2維原始數(shù)據(jù)
為了方便區(qū)分各個通道數(shù)據(jù),通常還需要將上一步驟中讀取到的byte[]類型的1維數(shù)據(jù)轉(zhuǎn)換為多維的原始數(shù)據(jù)。用戶可以根據(jù)上一節(jié)“多通道數(shù)據(jù)存放順序”所描述的方法來轉(zhuǎn)換,或直接使用C# 中的Buffer.BlockCopy方法。

playback是一個原始數(shù)據(jù)類型的2維數(shù)組。
如果是double[,]類型,則是double[每通道樣本數(shù),通道數(shù)]
如果是Int16[,]類型,則是Int16[每通道樣本數(shù),通道數(shù)]
將原始數(shù)據(jù)轉(zhuǎn)換為Double值
將原始數(shù)據(jù)轉(zhuǎn)換為Double值有三種方法,以下詳細(xì)說明這三種方法的實(shí)現(xiàn)。
方法1-直接讀取Double值
前提條件:通道數(shù)量
方法:按照多通道存放順序讀取Double類型數(shù)據(jù)即可。可參考范例”Winform AI Data Playback”,以5500系列為例,如下方代碼:

其中:
buf是byte[]類型
playback是double[,]類型
_playbackbr是BinaryReader類型
方法2-將Int16值轉(zhuǎn)換成Double值
前提條件:通道數(shù)量,所用量程,系數(shù)A和系數(shù)B(查閱本文開篇表格,或參考查閱范例)
方法:按照多通道存放順序讀取Int16數(shù)據(jù),并參考范例“Winform AI Data Playback”。以5320系列為例,A是0x7FFF而B是1,如下方代碼:

其中:
buf是byte[]類型;
rawData是short[,]類型;
_playbackbr是BinaryReader類型;
playData是double[,]類型;
0x7FFF是系數(shù)A
scaleValue=所用量程*系數(shù)B
方法3-根據(jù)通道的標(biāo)定系數(shù)轉(zhuǎn)換成Double值
前提條件:保存原始數(shù)據(jù)類型(Int16或Int32),通道數(shù)量,所用標(biāo)定系數(shù)(在AI任務(wù)啟動前,通過GetScalingCoefficients方法獲取。該函數(shù)返回值為ScalingCoefficients類型的數(shù)組。包含了每個通道的Gain和Offset標(biāo)定系數(shù))
方法:根據(jù)保存的原始數(shù)據(jù)類型,按照多通道存放順序讀取原始數(shù)據(jù),并利用每個通道的Gain和Offset系數(shù)對原始數(shù)據(jù)進(jìn)行重新的標(biāo)定。
則轉(zhuǎn)換方法是

其中:
readValue是double[],是某個通道的轉(zhuǎn)換后的Double類型數(shù)組;
readRawValue是Int16[]或Int32[],是某個通道的原始數(shù)據(jù),其數(shù)據(jù)類型取決于流盤時設(shè)置的保存的數(shù)據(jù)類型。
scalingCoefficients是ScalingCoefficients[],這個值需要用戶在流盤時記錄下來。通過AI任務(wù)的GetScalingCoefficients()方法獲取。
-
AI
+關(guān)注
關(guān)注
91文章
39048瀏覽量
299590 -
板卡
+關(guān)注
關(guān)注
3文章
172瀏覽量
17454 -
文件
+關(guān)注
關(guān)注
1文章
588瀏覽量
25981
原文標(biāo)題:測量小百科 | 如何解讀回放流盤文件
文章出處:【微信號:簡儀科技,微信公眾號:簡儀科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
如何解讀運(yùn)放數(shù)據(jù)規(guī)格書
STM32F107VCT6使用USB HOST OTG掛載U盤連續(xù)讀寫文件錯誤是怎么回事?如何解決?
系統(tǒng)設(shè)計(jì)人員如何解讀產(chǎn)品說明書規(guī)范
DOS命令修復(fù)U盤文件錯誤
電腦c盤那些文件可以刪除_電腦c盤滿怎么擴(kuò)大
MXNet源碼解讀筆記一 ---- 如何解析參數(shù)文件
應(yīng)用筆記 | TSMaster快速入門篇(2)-報文回放
u盤插在電腦上不顯示怎么回事?如何解決?
BOM與焊盤為什么不匹配?
水庫增殖放流站物聯(lián)網(wǎng)智慧管理系統(tǒng)方案
使用簡儀科技產(chǎn)品構(gòu)建高速數(shù)據(jù)流盤與回放系統(tǒng)解決方案
如何解讀回放流盤文件
評論