Pyserial 不会从 arduino 读取数据

Pyserial won't readline data from arduino

我在从 Arduino 读取数据时遇到问题。 这是我从我的 arduino 发送到 Pycharm:

Serial.println("ArduinoMega");

这是我的 Pycharm 代码,它读取并与 b'ArduinoMega' 进行比较:

ser = serial.Serial(port,baudrate=9600, timeout=1)
            ser.write(b'\x00')
            print(port)
            serial.time.sleep(2)
            rec = (ser.readline(len(b'ArduinoMega')))
            print(rec)
            if rec == b'ArduinoMega':
                ser.close()
                return port
            ser.close()

默认情况下,pyserial 在打开新连接时将 dtr 引脚设置为高电平。 Arduino 板在连接到高 dtr 时会自行重置,因此当您打开与计算机的连接时您的 Arduino 会重置,并且在您发送包裹并期待回复时不会及时初始化其串行端口。

要以编程方式解决此问题,您可以将代码更改为:

ser = serial.Serial()
ser.port = port
ser.baudrate = 9600
ser.timeout = 1
ser.dtr = False
ser.open()
ser.write(b'\x00')
rec = ser.read(len(b'ArduinoMega')
if rec == b'ArduinoMega':
    ser.close()
    return port
ser.close()

此外,请注意 ser.read... 行中的更改。