Hallo ihr lieben, ich steh etwas auf dem Schlauch und würde mich um
Hilfe freune, da ich irgendwie nichts richtiges finde.
Ich habe eine Applikation die bei bestimmten Ereignissen eine serielle
Verbindung zu einem Arduino aufbauen soll und ihm Variablen übergben
soll.
An sich klappt das auch alles ganz gut, das einzige was etwas doof ist,
ist die relativ lange Zeit (ca 2-3 Sekunden) die es braucht um die
serielle Verbindung aufzubauen.
Zuerst hatte ich das ganze über Powershell gelöst, hier war aber der
Nachteil, dass Powershell für jede Aufgabe erneut eine Verbindung
aufbauen musste.
Also meinte ein Bekannter probiers mit Python.
Gesagt getan, alles runtergeladen und installiert, klappt auch genauso
wie mit der Powershell, aber auch hier wieder relativ lange Zeit zum
Aufbau der Verbindung.
Jetzt dachte ich mir, ich mache einfach zwei Skripts.
Das eine wird direkt bei Programmstart ausgeführt und öffnet die
serielle Verbindung und das andere wird immer ausgeführt wenn die Aktion
aus meinem Programm zutrifft.
Allerdings kennt natürlich das eine Skript nicht die Variablen des
anderen und somit auch nicht die Variable für den Arduino.
Kennt jemand eine Möglichkeit eine serielle Verbindung aufzubauen die
einfach nur darauf lauert bis sie input aus einem anderen Skript
bekommt?
Eckdaten:
Arduino UNO Rev3
Windows 8.1
Python 3.x
Verbindungsaufbauskript:
import serial
import time
arduino = serial.Serial(2)
time.sleep(1) # waiting the initialization...
Ausführendes Skript:
arduino.write('1'.encode())
Die Variable Arduino kennt das ausführende Skript natürlich nicht.
Wäre dankbar über eure Hilfe.
Viele Grüße
Lorenz
Was ist das für ein Programm? Kann das nicht selbst eine Verbindung aufbauen und bereithalten?
DerBee schrieb: > das einzige was etwas doof ist, > ist die relativ lange Zeit (ca 2-3 Sekunden) die es braucht um die > serielle Verbindung aufzubauen. Da ist was anderes faul. Das liegt weder an der Tatsache daß es eine serielle Verbindung ist noch daß Du Python verwendest, noch nicht mal die Tatsache daß Du wahrscheinlich Windows verwendest kann so ein seltsames Verhalten erklären. Das sollte in jedem Falle in Sekundenbruchteilen ablaufen, so schnell daß Du ohne technische Hilfsmittel mit bloßem Auge keine Verzögerung feststellen kannst. Kann es sein daß Du in das Problem stolperst daß einige (neuere?) Arduinos bei Betätigung der DTR-Leitung einen Reset auslösen? Achte mal drauf ob die LED an Pin 13 kurz anfängt zu blinken sobald Du am PC den seriellen Port öffnest (das Blinken wäre der Arduino bootloader nach dem Reset) oder häng mal das Oszi an den Reset-Anschluss und schau was da passiert. Wenn das der Fall ist dann google mal nach der Lösung mit dem festzurren der Reset-Leitung mittels 100 Ohm nach Vcc oder einem ausreichend großen Elko. Es ist auch möglich unter Windows den com port so zu konfigurieren daß DTR nicht betätigt wird, auch mit Python sollte das theoretisch möglich sein, dann wäre keine Hardwareänderung nötig. Leider geht das aber nur unter Windows, der Linux-Treiber hat das Deaktivieren von DTR leider nicht implementiert.
Hallo und Danke für eure Antworten, hi Sven, nein das Programm kann das derzeit leider nicht, deswegen der umständliche Weg über Skripte oder Batchfiles. Hallo Bernd, daran könnte es natürlich auch liegen. Ich werde das nachher gleich mal beobachten und den Reset mal unterbinden. Danke schonmal für den vielversprechenden Tipp ich melde mich sobald ich es ausprobiert habe. Viele Grüße Lorenz
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.