在我的Raspberry 2上使用serial.write()时,Python挂起
我使用pySerial在RaspberryPi 2和Arduino之间进行通信,但在我的第一个100次写调用之后,它开始变得非常缓慢。 我的代码如下所示:在我的Raspberry 2上使用serial.write()时,Python挂起,python,raspberry-pi,raspbian,pyserial,Python,Raspberry Pi,Raspbian,Pyserial,我使用pySerial在RaspberryPi 2和Arduino之间进行通信,但在我的第一个100次写调用之后,它开始变得非常缓慢。 我的代码如下所示: import serial ser = serial.Serial("/dev/ttyACM0", 2000000, write_timeout=0) while True: byteData = getData() sentBytes = ser.write(byteData) if sentBytes == 4:
import serial
ser = serial.Serial("/dev/ttyACM0", 2000000, write_timeout=0)
while True:
byteData = getData()
sentBytes = ser.write(byteData)
if sentBytes == 4:
print("All Data was sent successfully!")
第一秒钟一切正常,但随后它挂起,我每秒只发送4个字节。我也看到了这篇文章,但在我的Raspbian机器上a/dev/serial0或/dev/ttyS0不存在。我是如何在第一秒钟内得到这种持续的快感的?您使用的是一个非常高的波特率,缓冲区可能已经满了,并在短时间内导致hick上升。 尝试一个非常保守的波特率9600,看看你是否有同样的问题
还要确保您的
getData()
实际上总是返回4个字节,否则您的print语句可能不会在每个循环中都得到计算。好了,现在它变得奇怪了!在进行了一些测试并将波特率降低到115200之后,我还监控了我的系统资源(但这次我在笔记本电脑上遇到了与pi相同的问题),但没有任何可疑之处。一切都很好,CPU使用率为100%,但这不是问题。写入命令仍然非常慢。经过一点调试后,我添加了一个Serial.print(“test”);在Arduino号上。当我启动python脚本时,它仍然非常慢,但在另一个终端中,我进入了这个命令屏幕/dev/ttyACM0 115200,然后python脚本又快了。