2016-03-25 33 views
1

我想在我的电脑和Arduino之间用python(pyserial 3.0.1)进行串行速度测试。我通过USB与我的Ubuntu VM连接了Arduino Duemilanove(ATmega328)。该器件完全显示出来,我通过阿尔杜伊诺IDE(1.6.7)用这个简单的环回草图闪蒸它:蟒蛇串行到arduino速度测试

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

回答

0

好吧......我切换到我的“真实”(未VM)的Linux机器,它似乎工作那边就好了。我会做更多的测试,最终我会解决这个问题。

编辑:所以我确认它有时在Ubuntu VM中工作,它始终与我的真正的Linux Mint机器一起工作。因为我不需要使用虚拟机,我不在乎它为什么不真正工作(可能是一些虚拟机的东西),我会关闭这个问题。