我有一台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

07-26 00:07