我在解码 DLE EOT 1 时遇到问题,我认为它的位顺序和缺少前导零
import serial
x = 1
while x:
time.sleep(3)
ser.write("\x10\x04\x01".encode())
bytesToRead = ser.inWaiting()
data = ser.read(bytesToRead)
while data:
print(data)
print(bin(int.from_bytes(data, byteorder="big")))
print(bin(data[0])[2:])
data = ""
所以这是在就绪和在线状态时返回的内容:
b'\x16'
0b10110
10110
这是门打开“假定离线状态”时返回的内容:
b'\x1e'
0b11110
11110
怎么翻译?我不需要8位回来吗?
爱普生电调手册节选:
每个状态由 1 个字节组成,值为 0xx1xx10b。实时状态可以通过比特 0、1、4 和 7 与其他传输数据区分开来,除了块数据中的数据(Header – NUL)。
位二进制状态|十六进制|十进制 ====+=============================================== =+===+====== 0 | 0 | 固定 |00 |0 | ----+---+-------------------------- -+----+-----+ 1 | 1 | 固定 |02 |2 | ----+---+-------------------------- -+----+-----+ 2 | 0 | 抽屉踢出连接器插针 3 为低电平 |00 |0 | | 1 | 抽屉踢出连接器插针 3 为高电平 |04 |4 | ----+---+-------------------------- -+----+-----| 3 | 0 | 在线 |00 |0 | | 1 | 离线 |08 |8 | ----+---+-------------------------- -+----+-----| 4 | 1 | 固定 |10 |16 | ----+---+-------------------------- -+----+-----| 5 | 0 | 不等待联机恢复 |00 |0 | | 1 | 等待在线恢复 |20 |32 | ----+---+-------------------------- -+----+-----| 6 | 0 | 未按下进纸按钮 |00 |0 | | 1 | 正在按下进纸按钮 |04 |64 | ----+---+-------------------------- -+----+-----| 7 | 0 | 固定 |00 |0 | -------------------------------------------------- ------------