2 回答

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
您的GetSerialData函數(shù)似乎并未實(shí)際返回串行數(shù)據(jù)。它打印串行數(shù)據(jù),但之后您再也不會(huì)引用received_data它,而是 return x,它似乎是一個(gè)表示響應(yīng)大小的整數(shù)。
不要返回 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貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊
\x02是十六進(jìn)制 02 的 ASCII 碼,即STX(文本開頭)。 \x32是 digit 的 ASCII 碼2。
如果SData是整數(shù)或任何非(二進(jìn)制)字符串,請(qǐng)記住使用str(SData).將其轉(zhuǎn)換為字符串。
另外,一般來說,b'A' != 'A'. 您想使用.encode('ascii')將 Python 字符串轉(zhuǎn)換為 ASCII 二進(jìn)制字符串。
>>> 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
這是因?yàn)?Python 將二進(jìn)制 ASCII 字符串視為不同于標(biāo)準(zhǔn) Python 字符串。
此外,確保讀取的信息實(shí)際上是一個(gè)字節(jié)長。
添加回答
舉報(bào)