使用 Python 脚本向 Arduino 发送串行数据
Sending Serial Data to Arduino Using Python Script
我在 macOS 10.14 上使用 python 串行通信向 Arduino 写入字符时遇到一个特殊问题。
Arduino 被编程为读取字符串、解析它并对 运行 汽车采取 PWM 操作。
Ardiuno 的串行通信通道配置为接收格式为 < A, B, C, D >
的字符串,其中 ABCD
是表示汽车方向、速度、转向方向和转向位置的数字。
问题是,当我从串行监视器或通过 Python 开发环境发送字符串时,字符串被接收、正确解析并成功执行命令。
但是,如果我在文件 write.py
中编写一个简单的程序并从命令行执行它,则什么也不会发生。
import serial
ser = serial.Serial('/dev/cu.usbmodem14301', 9600)
data = '<1,150,0,0>'
ser.write(data.encode())
如果我从 macOS 终端使用命令 运行 这个脚本:
python write.py
没有任何反应。我在这里错过了什么?
可能是端口处于文本模式,直到发送换行符才会发送数据:
data = '<1,150,0,0>\n'
ser.write(data.encode())
或调用 flush()。
data = '<1,150,0,0>'
ser.write(data.encode())
ser.flush()
这里最有可能发生的事情是数据没有发送到串口。
有一种简单的方法可以检查这一点。
将 Arduino 连接到您的笔记本电脑(我怀疑它是 mac),然后在 Arduino IDE 上启动串行监视器。
在串行监视器中输入 <1,150,0,0> 并按发送。
Arduino 上的 tx LED 将 blink。既然您知道模式的外观,请使用 Python 代码重复相同的实验。
如果 LED 不以同样的方式显示 link,则表明您遇到了串行端口访问问题,您可以使用以下 link 中的说明修复该问题
Access USB serial ports using Python and pyserial
如果没有,我很难过。
与 ser=serial.Serial('/dev/cu.usbmodem14301',9600)
的新 USB 连接会重置 Arduino。由于Arduino启动,连接后立即发送的数据丢失。
我在 macOS 10.14 上使用 python 串行通信向 Arduino 写入字符时遇到一个特殊问题。
Arduino 被编程为读取字符串、解析它并对 运行 汽车采取 PWM 操作。
Ardiuno 的串行通信通道配置为接收格式为 < A, B, C, D >
的字符串,其中 ABCD
是表示汽车方向、速度、转向方向和转向位置的数字。
问题是,当我从串行监视器或通过 Python 开发环境发送字符串时,字符串被接收、正确解析并成功执行命令。
但是,如果我在文件 write.py
中编写一个简单的程序并从命令行执行它,则什么也不会发生。
import serial
ser = serial.Serial('/dev/cu.usbmodem14301', 9600)
data = '<1,150,0,0>'
ser.write(data.encode())
如果我从 macOS 终端使用命令 运行 这个脚本:
python write.py
没有任何反应。我在这里错过了什么?
可能是端口处于文本模式,直到发送换行符才会发送数据:
data = '<1,150,0,0>\n'
ser.write(data.encode())
或调用 flush()。
data = '<1,150,0,0>'
ser.write(data.encode())
ser.flush()
这里最有可能发生的事情是数据没有发送到串口。
有一种简单的方法可以检查这一点。 将 Arduino 连接到您的笔记本电脑(我怀疑它是 mac),然后在 Arduino IDE 上启动串行监视器。 在串行监视器中输入 <1,150,0,0> 并按发送。
Arduino 上的 tx LED 将 blink。既然您知道模式的外观,请使用 Python 代码重复相同的实验。
如果 LED 不以同样的方式显示 link,则表明您遇到了串行端口访问问题,您可以使用以下 link 中的说明修复该问题 Access USB serial ports using Python and pyserial
如果没有,我很难过。
与 ser=serial.Serial('/dev/cu.usbmodem14301',9600)
的新 USB 连接会重置 Arduino。由于Arduino启动,连接后立即发送的数据丢失。