2016-03-25 3 views
1

Ich versuche, einen seriellen Geschwindigkeitstest zwischen meinem Computer und dem Arduino mit Python (Pyserial 3.0.1) zu machen. Ich habe den Arduino Duemilanove (ATmega328) über USB mit meiner Ubuntu VM verbunden. Das Gerät zeigt perfekt und ich blitzte es mit dieser einfachen Loopback-Skizze über die Arduino IDE (1.6.7):Python serielle zu arduino Geschwindigkeitstest

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

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

Mein Python-Programm sieht wie folgt aus:

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)) 

Das Problem ist, es arbeite manchmal und manchmal kommt das Python-Programm nicht zurück und ich muss Ctrl-C daraus machen. Wenn dies passiert, kann ich die arduino RX und TX LED nicht sehen.

Weiß jemand, warum das passiert?

Vielen Dank ... draufundrann

Antwort

0

Ok ... ich meine „echte“ umgeschaltet (nicht VM) Linux-Maschine und es scheint dort gut zu funktionieren. Ich werde noch ein paar Tests machen und schließlich werde ich diese Frage schließen.

EDIT: So habe ich bestätigt, dass es manchmal in der Ubuntu VM funktioniert und es funktioniert immer mit meiner echten Linux Mint Maschine. Da ich die VM nicht benutzen muss und es mir egal ist, warum es nicht wirklich funktioniert (wahrscheinlich etwas VM-Kram), werde ich diese Frage schließen.