我试图通过串口打印机从机器上得到答案。 但我不知道为什么我收到我发送的信息!
with serial.Serial(port,
baudrate=9600,
bytesize=serial.EIGHTBITS,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
#timeout=0.5,
xonxoff=False,
rtscts=False,
dsrdtr=False
) as ser:
print(port,'opened!')
ser.reset_input_buffer()
o1='at+cgmr\r\n'
x=ser.write(o1.encode()) #without encode() error!
print('sended',x,'bytes','-->',o1)
sleep(1)
y=ser.readline(10) #ser.readline() is the same and read(10) as well
print('answer',y)
输出是:
COM3 opened!
sended 8 bytes --> at+cgmr
respuesta b'at+cgmr\r\r\n'
我必须接受“好的”#39;或者“不好”'。 任何想法?
答案 0 :(得分:0)
该设备可能会回复它所获得的内容,然后发送回复。您是否尝试增加收到的字节数?
如果您执行y = ser.read(100)
(启用超时),您将获得所需的所有内容。
另一种方法是读取与可用字节完全相同的字节数:
y = ser.read(ser.in_waiting)
或
y = ser.read(ser.inWaiting())
(取决于pyserial的版本)。