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... 行中的更改。
我在从 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... 行中的更改。