1

我在 NI 支持论坛上创建了一个关于我的项目的帖子,但我目前的问题比在 labview 中编写驱动程序更广泛。我有一个风速计,它使用 USB UART 桥接器与计算机连接。我向 Extech 索要任何类型的文档,但只收到了以下通信协议。

串行通信协议

我在处理这个问题时遇到了几个问题,所以我使用了风速计附带的软件并使用 portmon 来嗅探往返的命令,这就是它变得更糟的地方。为了尽可能简化问题,我只读取了环境温度读数。以下是我使用制造商的软件连接到仪器时 portmon 捕获的内容:

(这是上述协议文档中的“上传协议”)

AA 61 64 6A 67 08 40 00 40 00 01 00 00 C6 41 00 00 00 00 00 3C 1C C6 9A 19 99 42 00 3C 1C C6 00 00
AA 61 64 6A 67 08 40 10 40 00 01 7D 0C C6 41 00 00 00 00 00 3C 1C C6 39 1F 99 42 00 3C 1C C6 00 00
AA 61 64 6A 67 08 40 10 40 00 01 00 00 C6 41 00 00 00 00 00 3C 1C C6 9A 19 99 42 00 3C 1C C6 00 00
AA 61 64 6A 67 08 40 10 40 00 01 83 F3 C5 41 00 00 00 00 00 3C 1C C6 FB 13 99 42 00 3C 1C C6 00 00

这被稍微截断了,但重要的部分应该在那里。当时的环境温度读数约为 76.5F。所以根据文档,这应该在第 10-13 位,所以我相信:

0000c641
7d0cc641
0000c641
83f3c541

成为记录的环境温度,但我不知道如何阅读。我认为没有理由需要从开尔文或摄氏度进行转换,因为在 F1 中似乎有一点。另外值得注意的是,我得到的值与几个字段记录的任何值完全不同,所以要么我读错了,要么文档就是错误的。我无法从制造商那里得到更多关于协议的答案,所以我不知道为什么我的数据只有一半与预期的相似。

4

1 回答 1

2

41C60000 转换为 24.75 作为 IEEE754 标准 32 位单精度浮点数。这看起来像一个摄氏值,将映射到 76.55 F。

对于其余数据,您将拥有:

 41C60000 = 24.7500000000000000000 
 41C60C7D = 24.7560977935791015625 
 41C5F383 = 24.7439022064208984375

我认为这可以为您解决字节顺序和格式问题。

于 2012-05-01T19:05:50.057 回答