0

組み込みシステムによって取得されたデータのログを含むファイルがあります。

次に例を示します。

<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 60@49.6 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は私からのもので、実際にはファイル内にはありません!)

Web を検索しましたが、そのファイル形式については何も見つかりませんでした。

最初にアナログ チャネルとデジタル チャネルの説明 (列ヘッダーのようなもの) があり、その後にデータが続きます。しかし、セパレーターがわかりません。

最良の方法は、そのデータ ファイルを処理できる C++/C# コードを用意することです。

誰でも助けることができますか?

4

2 に答える 2

0

これは XML によく似ているので、.NET の XML 解析関数を調べてみたくなりまし。私は最近多くの XML を扱っていますが、C# での使用は非常に簡単です。

構文の背後にある意味 (各属性/要素の意味とロジックでの使用方法など) については、あなたまたは専門家だけが知っています。それを理解するために、クライアント/顧客または仲間のエンジニアと一緒に座らなければならない場合があります。

それが役立つことを願っています。

編集

最後のセクションを読み取るには、ファイル全体を文字列として読み取ってから、その部分文字列を作成します。最後の > の位置から始まり、EOF マーカーまで読み取ります。そうすれば、「データ」が文字列になり、必要な方法でさらに操作/解析できます。

文字列を終了するヌル文字は、通常、C# では "\0" です。

于 2012-04-12T12:56:06.767 に答える
0

私は .daq ファイルを扱ったことはありませんが、このアプローチが役立つかもしれません。「緩い」または断片化された XML ファイル、フォーマットが間違っているファイルなどで使用しました。

私はあなたが持っていると思います'header' + XML + data

最初にヘッダーを解析します - それは 1 つのように見えます<>- あるいは、常に同じように行にあるかもしれません。

次のオープニング<で (形式は推測していますが、そのように見えます)、XML を開始します。

- LastIndexOf を使用できます - を検索して'end >'ください。

そして、それがあなたの XML です。たとえば、LINQ to XML でロードします。これrestが実際のデータです。

お役に立てれば

于 2012-04-12T13:12:06.017 に答える