我有一台PC将字节值2发送到Raspberry Pi。
但是我无法弄清楚为什么Python程序在接收到值时没有将其评估为true。
如果我打印收到的值,它将写b'\ x02'作为输出。
import serial
def GetSerialData():
x = ser.inWaiting()
if x > 0:
received_data = ser.read(x)
print (received_data)
return x
ser = serial.Serial ("/dev/ttyAMA0", 9600)
try:
while True:
SData = GetSerialData ()
if ( SData == b'\x02'):
print ("Ok - value is 2")
except KeyboardInterrupt:
ser.close()
最佳答案
您的GetSerialData
函数似乎并未真正返回串行数据。它会打印串行数据,但是之后您再也不会引用received_data
,而是返回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