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.