0

我在只听模式下使用 Prologix GPIB-USB 适配器来破译两个设备(与半导体相关的,即测试仪和探测器)之间的通信。

我能够解码手册中所述的大部分信息,但无法转换数据之一,即 BIN 类别。

样本数据 :

018022
C@A@@@@@@@
Q
O
A
A
019022
CA@A@@@@@@

工具手册:

如何读取传入数据的手册

我感兴趣的数据是“C@A@@@@@@@”和“CA@A@@@@@@”第一个字节即“C”是传入的命令。第二个字节可以是“@”或“A”实际上告诉测试是否通过/失败。

转换为二进制:

@ ---> 0100 0000
A ---> 0100 0001

结果由字节的低4位决定,即0000(通过)和0001(失败)。我能够正确解码直到这里。

接下来的 8 Bytes 代表 BIN 类别,在测试时设置为 5 表示测试失败,1 表示通过,因此“C@A@@@@@@@”中的 BIN 编号为 1,BIN 编号对应“CA@A@@@@@@”设置为 5。

我无法从 GPIB 适配器生成的数据中解码 5 和 1 的值。有人可以建议它是否可以实际解码为 5 和 1。我附上了解释如何读取传入数据的手册。

坚持了很长时间:-(

4

1 回答 1

0

您可以使用 struct.unpack 将字节值解码为数字。您需要知道长度(在本例中为 8 个字节)以及数字是大端还是小端(如果您不知道,请测试)。以及号码是签名还是未签名。

如果您的字符串是“C@A@@@@@@@”并且二进制数据在字节 3-10 中,您可以尝试

import struct    
foo="C@A@@@@@@@"
print struct.unpack(">Q", foo[3:11])

这将解码一个 8 字节长的无符号大端数。有关说明,请参阅https://docs.python.org/2/library/struct.html

希望这可以帮助。

汉努

于 2016-10-18T10:38:35.673 回答