串行通信树莓派

时间:2021-01-06 14:51:55

标签: python

好吧,我在串行端口上有一个 Arduino Nano 打印 highlow,具体取决于是否按下按钮。然后我使用以下 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 有所作为,但为什么呢?

0 个答案:

没有答案