我在仅LISTEN模式下使用Prologix GPIB-USB适配器来破译两个设备之间的通信(半导体相关,即Tester和Prober)。
我能够解码手册中所述的大部分信息,但无法转换其中一个数据即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个字节代表BIN类别,如果测试失败则在测试期间设置为5,如果测试失败则设置为1,因此“C @ A @@@@@@@”中的BIN编号为1且BIN对应于“CA @ A @@@@@@”的编号设置为5。
我无法从GPIB适配器生成的数据中解码5和1的值。有人可以建议它是否可以实际解码为5和1.我附上了手册,解释了如何读取传入的数据。
长期坚持: - (
答案 0 :(得分: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。
希望这会有所帮助。
哈努哈利