python serial to arduino speed test

时间:2016-03-25 12:11:14

标签: python arduino pyserial loopback

我正在尝试使用python(pyserial 3.0.1)在我的计算机和Arduino之间进行串行速度测试。我通过USB将Arduino Duemilanove(ATmega328)连接到我的Ubuntu VM。该设备完美显示,我通过arduino IDE(1.6.7)使用这个简单的环回草图闪现它:

void setup() {
  Serial.begin(115200);
}

void loop() {
  while(Serial.available()) {
    Serial.write(Serial.read());
  }
}

我的python程序如下所示:

from __future__ import print_function

import time
import serial

ser = serial.Serial(
    port='/dev/ttyUSB0',
    baudrate=115200,
    timeout=1
)

i = 0;

#wait until bootloader finished
time.sleep(2)

try:
    t0 = time.time()
    while i < 1000:
        ser.write(b'U')
        ser.flush()
        while ser.in_waiting <= 0:
            pass
        ret = ser.read(1)
        if ret != 'U':
            print("Error received: %s" % ret)
        i += 1
    t1 = time.time()
except KeyboardInterrupt:
    ser.close()
    exit(1)

ser.close()

print("%.3f" % (t1-t0))

问题是,它有时会工作,有时python程序不会返回,我必须使用Ctrl-C。如果发生这种情况,我看不到arduino RX和TX LED闪烁。

有人知道为什么会这样吗?

非常感谢... draufundrann

1 个答案:

答案 0 :(得分:0)

好的......我切换到我的“真正的”(不是VM)Linux机器,它似乎在那里工作得很好。我会做更多测试,最后我会关闭这个问题。

编辑:所以我确认它有时可以在Ubuntu VM中运行,它总是适用于我真正的Linux Mint机器。由于我不需要使用虚拟机,我不在乎为什么它不能正常工作(可能是一些虚拟虚拟机的东西),我将关闭这个问题。