我想以这样的方式测试包含字节的变量的内容:
line = []
while True:
for c in self.ser.read(): # read() from pySerial
line.append(c)
if c == binascii.unhexlify('0A').decode('utf8'):
print("Line: " + line)
line = []
break
但这不起作用...... 如果一个字节为空,我还想测试一下: 在这种情况下
print(self.ser.read())
打印:b''(带两个单引号)
我直到现在才成功测试这个
if self.ser.read() == b''
或者总是显示语法错误...
我知道,非常基本,但我不明白......
答案 0 :(得分:1)
如果要验证要从pySerial中读取的变量或字符串的内容,请使用repr()
函数,如:
import serial
import repr as reprlib
from binascii import unhexlify
self.ser = serial.Serial(self.port_name, self.baudrate, self.bytesize, self.parity, self.stopbits, self.timeout, self.xonxoff, self.rtscts)
line = []
while 1:
for c in self.ser.read(): # read() from pySerial
line.append(c)
if if c == b'\x0A':
print("Line: " + line)
print repr(unhexlify(''.join('0A'.split())).decode('utf8'))
line = []
break
答案 1 :(得分:1)
感谢您的帮助。问题的第一部分由@sisanared回答:
if self.ser.read():
测试空字节
问题的第二部分(带有十六进制值0A的行尾)stil不起作用,但我认为关闭这个问题是因为给出了标题的答案。
谢谢大家