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 来自我,它不在文件中!)

我在网上搜索过,但没有找到有关该文件格式的任何信息。

我看到首先有模拟和数字通道的描述(如列标题),然后是数据。但我无法弄清楚分隔符。

最好的办法是拥有一段可以处理该数据文件的 C++/C# 代码。

有谁能帮忙吗?

4

2 回答 2

0

这看起来很像 XML,所以我很想研究 .NET XML 解析函数Here: 可能是一个很好的起点。这些天我处理了很多 XML,而且在 C# 中使用它真的很容易。

至于语法背后的含义(例如每个属性/元素的含义以及如何在逻辑中使用它),只有您或专家会知道。您可能必须与客户/客户或其他工程师坐在一起才能弄清楚这一点。

希望有帮助。

编辑

要阅读最后一部分,您可以将整个文件作为字符串读取,然后创建它的子字符串 - 从最后一个 > 的位置开始,一直读取到 EOF 标记。这样,您将“数据”保存在一个字符串中,并且您可以以任何您需要的方式进一步操作/解析它。

终止字符串的空字符通常是 C# 中的“\0”

于 2012-04-12T12:56:06.767 回答
0

我没有使用过 .daq 文件——但这种方法可能会有所帮助,我将它用于“松散”或碎片化的 XML 文件、格式​​错误的文件等。

我认为你有一个'header' + XML + data.

首先解析标题 - 看起来就像一个<>- 或者也可能总是在线。

在下一次打开时<(我猜是格式,但看起来像那样),您将启动 XML。

搜索'end >'- 你可以使用 LastIndexOf - 应该做的。

这就是您的 XML,使用 LINQ to XML 加载它,例如 - 然后rest才是真正的数据。

希望这可以帮助

于 2012-04-12T13:12:06.017 回答