2 回答
TA贡献1951条经验 获得超3个赞
您的GetSerialData函数似乎并未实际返回串行数据。它打印串行数据,但之后您再也不会引用received_data它,而是 return x,它似乎是一个表示响应大小的整数。
不要返回 x,而是尝试返回received_data。
def GetSerialData():
x = ser.inWaiting()
if x > 0:
return ser.read(x)
else:
return b"" #or whatever value is appropriate when no data has been sent yet
TA贡献1796条经验 获得超10个赞
\x02是十六进制 02 的 ASCII 码,即STX(文本开头)。 \x32是 digit 的 ASCII 码2。
如果SData是整数或任何非(二进制)字符串,请记住使用str(SData).将其转换为字符串。
另外,一般来说,b'A' != 'A'. 您想使用.encode('ascii')将 Python 字符串转换为 ASCII 二进制字符串。
>>> binary_A_from_string = 'A'.encode('ascii')
>>> binary_A_from_string
b'A'
>>> binary_A = '\x41' # ASCII 41 (dec 65) is 'A'
>>> binary_A
b'A'
>>> binary_A == 'A'
False
>>> binary_A == binary_A_from_string
True
这是因为 Python 将二进制 ASCII 字符串视为不同于标准 Python 字符串。
此外,确保读取的信息实际上是一个字节长。
添加回答
举报