好吧,我在串行端口上有一个 Arduino Nano 打印 high
或 low
,具体取决于是否按下按钮。然后我使用以下 Raspberry pi 代码将其转换为 LED 信号。这是我的代码:
import serial
import RPi.GPIO as gpio
import time
low = gpio.LOW
high = gpio.HIGH
gpio.setmode(gpio.BCM)
gpio.setwarnings(False)
yellow = 5
red = 6
gpio.setup(yellow, gpio.OUT)
gpio.setup(red, gpio.OUT)
if __name__ == '__main__':
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
ser.flush()
while True:
if ser.in_waiting > 0:
line = ser.readline().decode('utf-8').rstrip()
print(line)
if line == 'high':
gpio.output(yellow, high)
gpio.output(red, low)
elif line == 'low':
gpio.output(yellow, low)
gpio.output(red, high)
这会引发此错误:
Traceback (most recent call last):
File "/home/pi/Desktop/SerialCom/RPI-Com-Test01.py", line 24, in <module>
line = ser.readline().decode('utf-8').rstrip()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
但是当我改变时
elif line == 'low':
到
elif line == 'blow':
错误消失并且 high
部分可用(当然 low
不是)。
是 b 有所作为,但为什么呢?