2012-04-12 348 views
0

我有一個文件,其中包含由嵌入式系統獲取的一些數據的日誌記錄。如何解析.daq文件?

下面是一個例子:

<HISDAQ-V0.1;COMPRESSION(TOKEN-ESC(4X, 0x10, 7, 13, 15))> 
<DAQPRJ> 
<ANALOG> 
<CHANNEL id='0' name='TKist' unit='°C' /> 
<CHANNEL id='1' name='RGTist' unit='°C' /> .... 
</ANALOG> 
<DIGITAL> 
<CHANNEL id='0' bit='0' name='HK1MischerAuf' /> .... 
</DIGITAL> 
</DAQPRJ> 
.... 
2012-04-10_00:00:00 pm 64.0 79.4 18.0 49.0 120.0 48.3 6683573.0 5.8 23.6 120.0 60.0 [email protected] 0.0 0.0 8 *8 5 8¡{13.4 -5.3 0 8à,8à6 8à 2 66838áU0.0 6.8 0 0 8 *8 7 8 3 18.08 3 66838¡U13.4 98À18À8 8Á{0.0 11.3 0 08À+8À9 8À2 18.08Áj13.4 9.8 0 08À+8À40 8Á{20.1 3.0 0 08À+8À1 8Á{6.7 3.8 0 0 8 *8 2 8¡{0.0 -68À18À3 8À3 78.18Ás14.3 08À-8À4 8Á4.5 0 8 ,8 5 8¡{20.1 6.8 0 08À+8À6 8Á{0.0 -08À18À7 8Á{13.4 9.1 0 08À+8À8 8À1 120.8Á`20.1 3.8 0 08À+8À9 8À0 18.0 49.0 8Ád6.7 5.3 0 0 8 *8 50 8¡{0.0 -3`8À+8À1 8Á6.8 0 8 ,8 2 8¡-1.5 08À-8À3 8À 7.9 188Ál6.7 3.0 0 0 8 *8 4 8¡{13.4 38À18À5 8À 8.0 188Ál0.0 4.5 0 0 8 *8 6 8¡{13.4 5.3 0 08À+8À7 8À 7.9 188Ál20.1 -3.0 0 8à,8à8 8á2.3 0......á 
--- EOF--- 

(EOF是從我這不是真的裏面的文件!)

我在網上搜索,但沒有發現有關文件格式的任何東西。

我看到,首先是模擬和數字通道的描述(如列標題),然後跟隨數據。但我無法弄清楚分隔符。

最好的事情是擁有一塊可以處理該數據文件的C++/C#代碼。

任何人都可以提供幫助嗎?

+1

看來XML我... – Marco 2012-04-12 12:53:35

+0

這可能是XML的一個鬆散的變體或更廣泛地[SGML(http://en.wikipedia.org/wiki/SGML)。我不確定它是否真的符合XML規範。 – 2012-04-12 12:57:53

+0

不是XML,因爲';'可能不會出現在標籤名稱中。 – MSalters 2012-04-12 13:17:10

回答

0

這看起來很像XML,所以我很想看看.NET XML解析函數Here: might be a good place to start。我最近處理很多XML,在C#中使用它非常簡單。

至於語法背後的含義(如每個屬性/元素意味着什麼以及如何在邏輯中使用它),只有您或專家會知道。你可能不得不與客戶/客戶或同事一起考慮。

希望有所幫助。

編輯

要閱讀的最後一節,你可以讀取整個文件作爲一個字符串,然後創建它的一個子 - 開始在最後的位置>和讀取,直到EOF標記。這樣,你就可以將你的「數據」放在一個字符串中,並且可以以任何你需要的方式進一步操縱/解析它。

終止字符串的空字符,通常情況下,「\ 0」,在C#

+0

是的,這也是我的第一個想法,但在「列」的「定義」之後,數據沒有圍繞「<" and ">」,它的唯一數字帶有某種特殊符號。我可以看到「DLE ACK DC2 NUL BEL VT」和一些「8À+」和「8À-」 – 2012-04-12 13:00:06

+0

,所以我不認爲這是一種真正的XML格式 – 2012-04-12 13:11:24

+0

正如其他人所說的,它看起來像是基於XML。這意味着,除了一些XML非法字符外,您應該能夠使用XML解析大部分。最後一行可能是一個問題,但是(正如我在回答中所說的),您可能必須與使用您正在查看的嵌入式系統的工程師/客戶坐在一起,以便能夠弄清楚數據的含義。一旦你完成了,解析其餘部分應該非常簡單 – 2012-04-12 13:32:17

0

我還沒有和.daq文件的工作 - 但這種做法可能會幫助,我與「寬鬆」或零散用它XML文件,格式錯誤的文件等。

我想你有一個'header' + XML + data

解析標題首先 - 它看起來就像一個<> - 或者也可能永遠在線。

隨着下一個開頭<(我猜格式,但看起來像這樣),你開始XML。

搜索'end >' - 您可以使用LastIndexOf - 應該做的。

這就是你的XML,使用LINQ to XML來加載它。 - 然後rest確實是數據。

希望這有助於