【发布时间】:2018-08-17 14:33:45
【问题描述】:
我在解码 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
如何翻译?我不需要 8bits 回来吗?
爱普生电调手册节选:
每个状态由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 | -------------------------------------------------- ------------【问题讨论】:
-
好吧,我明白了,我想.... 0xx1xx10b 是背单词???如果是这样,这意味着如果我有“前导零”
10110 = 00010110,则表示01101000,然后表示在线bit 3 ='0',如果11110 = 00011110真的是01111000,则bit 3='1'是离线 !!!!!!!这是正确的吗? -
那么如何添加前导零和反转位顺序?