使用Arduino和Python进行串行通信的开始很慢

时间:2015-08-17 19:29:47

标签: python performance arduino serial-communication

所以我使用Arduino Uno和pySerial通过串行通信与PC通信。我的程序正在运行,一旦初始化,它似乎工作得很快;但是,Arduino需要几秒钟才能开始对代码进行操作。这个慢启动我不会有一个很大的问题,除了它似乎把其余的代码放在后面(当我退出程序时,我的arduino上的电机继续运行几秒钟)。

如果我正在使用的变量发生变化(由用户选择),我希望串行通信立即将信息发送到arduino,并且arduino在变量发生变化时采取不同的行动,我担心它不会立即采取行动

可能会减慢初始化的一件事是这段代码:

Arduino的:

void establishContact()
{
   while (Serial.available()<=0) 
   {
    Serial.print('A');
    delay(300);
   }
}

的Python:

firstContact = False 
inByte = ser.read(1)

while True:
    if (firstContact == False):
        if inByte == b'A' :
            firstContact = True
            ser.write('a'.encode())

如果其中一个程序Arduino或Python没有准备好接收信息,我用这个来节省时间。 (之前建议这可以加快运行时间,但我不记得我从哪个或哪里读过它。)这会减慢我的程序或者你说它有用吗?

加速我的代码的另一种可能的方法(虽然我再次不确定它是否会减速或加速)是检查(每次我发送信息之后)每一方是否arduino已准备好再次接收信息,以便arduino不会超载信息,这可能会减慢信息速度。 (我相信我的Python代码发送命令的速度比Arduino执行命令的速度快。)

我使用9600波特率,会使用更高的一个帮助吗?

我的Python代码中还有几个嵌入的if-elif-elif语句,我理解这些语句通常会降低代码速度,但我还是找不到合适的替代品,而且看起来也不太多Python方面的一个问题。

清除串口缓冲区会有帮助吗?我问这个的原因是因为如果我能在Arduino方面正确地工作,它可以摆脱Python的命令构建,所以即使程序初始化缓慢,两个程序也是实时同步运行的。

这些都是我在不同地方提出的建议,但我不确定他们是否会在我的具体情况下提供帮助。在此先感谢您的帮助!

0 个答案:

没有答案