我正在尝试从Arduino读取传感器数据到Pi Zero,以进行自动驾驶汽车项目。由于串行通信,我已经停留了一个多星期。我无法以可接受的速度使Pi通过pyserial从USB读取。
我的第一个猜测是USB通信本身就是瓶颈。但是在运行了许多测试之后,我的结论是,打开串行端口后,Pi就会快要死了。
脚本一旦运行:ser = serial.Serial('/dev/ttyUSB0', 74880, timeout=None)
,Pi的运行速度将降低50倍。
我的最后一次测试是最基本的代码。我有两个脚本运行一个循环,打印一个字符1000次。一个包含ser = serial.Serial('/dev/ttyUSB0', 74880, timeout=None)
,第二个包含注释掉的行,还有一个额外的sleep(1)来估计运行该行所花费的时间(来自近似手动测量)。
在Arduino方面,几乎没有任何东西。我设置序列并在循环中打印“ hello world”。对于Arduino而言,这似乎不是一个问题,因为它在连接到Mac或从Pi运行C语言的串行程序时都能完美运行。
这是我的两个测试脚本:
使用序列号测试1:
import serial
from time import sleep
ser = serial.Serial('/dev/ttyUSB0', 74880, timeout=None)
sleep(2)
for i in range(0, 1000):
print("x", end="")
不带序列号的测试2:
import serial
from time import sleep
#ser = serial.Serial('/dev/ttyUSB0', 74880, timeout=None)
sleep(3)
for i in range(0, 1000):
print("x", end="")
每项运行time python3
时,我得到:
希望正在消失。到目前为止,我在网上找不到任何成功的解决方案。