发送格式如图, 长度15个字节
以读取栈号1, D100长度1为例:
第1-2个字节表示栈位01: ascii码: 0x30, 0x31 第5字节:是否bit, 是:B, 否: W: ascii对应0x42, 0x57 第6字节: 读R, 写W分别是: 0x52, 0x57 第7: 是否等待是0x30, 否0x31 第8-12表示地址D0100, ascii码分别为: 0x44 0x30 0x31 0x30 0x30 第9-10表示长度01, ascii: 0x30, 0x31 因此, 发送报文为:
05 30 31 46 46 42 52 30 44 30 31 30 30 30 31
返回示例:
02 30 34 46 46 32 43 33 30 03
取第5字节到倒数第2字节, 需要解析的数字为: 0x32, 0x43, 0x33, 0x30, 转换为字符串 2C30 解析成int16: 11312
使用Python解析:
recv_msg = b'\x02\x30\x34\x46\x46\x32\x43\x33\x30\x03'
res = recv_msg[5:-1] # len4: \x32\x43\x33\x30
int16_value = struct.unpack('>h', bytearray.fromhex(res.decode()))[0] # 11312
所以, 读取D100 int16的值为: 11312