为Extech HD300风速计编写驱动程序

时间:2012-04-24 19:42:05

标签: serial-port hex driver labview

I started a thread in the NI support forums about my project,但我目前的问题不仅仅是在labview中编写驱动程序。我有一个使用USB UART桥的风速计 与计算机连接。我向Extech询问了任何类型的文档,并且只收到了下面的通信协议。

Serial Communication Protocol

我遇到了几个问题,因此我使用风速计附带的软件并使用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中似乎有一点点。另外值得注意的是,我得到的值与几个字段记录的内容完全不同,所以要么我读错了,要么文档错了。我无法从制造商那里得到关于协议的更多答案,所以我不知道为什么我的数据只有一半类似于预期。

1 个答案:

答案 0 :(得分:2)

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

对于您将拥有的其他数据:

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

我认为这会为您排序字节顺序和格式。