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

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

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

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

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

playback是一個(gè)原始數(shù)據(jù)類型的2維數(shù)組。
如果是double[,]類型,則是double[每通道樣本數(shù),通道數(shù)]
如果是Int16[,]類型,則是Int16[每通道樣本數(shù),通道數(shù)]
將原始數(shù)據(jù)轉(zhuǎn)換為Double值
將原始數(shù)據(jù)轉(zhuǎn)換為Double值有三種方法,以下詳細(xì)說(shuō)明這三種方法的實(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ù)啟動(dòng)前,通過(guò)GetScalingCoefficients方法獲取。該函數(shù)返回值為ScalingCoefficients類型的數(shù)組。包含了每個(gè)通道的Gain和Offset標(biāo)定系數(shù))
方法:根據(jù)保存的原始數(shù)據(jù)類型,按照多通道存放順序讀取原始數(shù)據(jù),并利用每個(gè)通道的Gain和Offset系數(shù)對(duì)原始數(shù)據(jù)進(jìn)行重新的標(biāo)定。
則轉(zhuǎn)換方法是

其中:
readValue是double[],是某個(gè)通道的轉(zhuǎn)換后的Double類型數(shù)組;
readRawValue是Int16[]或Int32[],是某個(gè)通道的原始數(shù)據(jù),其數(shù)據(jù)類型取決于流盤時(shí)設(shè)置的保存的數(shù)據(jù)類型。
scalingCoefficients是ScalingCoefficients[],這個(gè)值需要用戶在流盤時(shí)記錄下來(lái)。通過(guò)AI任務(wù)的GetScalingCoefficients()方法獲取。
-
AI
+關(guān)注
關(guān)注
89文章
37611瀏覽量
293700 -
板卡
+關(guān)注
關(guān)注
3文章
159瀏覽量
17407 -
文件
+關(guān)注
關(guān)注
1文章
587瀏覽量
25898
原文標(biāo)題:測(cè)量小百科 | 如何解讀回放流盤文件
文章出處:【微信號(hào):簡(jiǎn)儀科技,微信公眾號(hào):簡(jiǎn)儀科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
如何解讀運(yùn)放數(shù)據(jù)規(guī)格書
STM32F107VCT6使用USB HOST OTG掛載U盤連續(xù)讀寫文件錯(cuò)誤是怎么回事?如何解決?
系統(tǒng)設(shè)計(jì)人員如何解讀產(chǎn)品說(shuō)明書規(guī)范
DOS命令修復(fù)U盤文件錯(cuò)誤
電腦c盤那些文件可以刪除_電腦c盤滿怎么擴(kuò)大
MXNet源碼解讀筆記一 ---- 如何解析參數(shù)文件
制作U盤純DOS啟動(dòng)盤文件
應(yīng)用筆記 | TSMaster快速入門篇(2)-報(bào)文回放

如何解讀回放流盤文件
評(píng)論