Hallo Community,
Ich arbeite an einem Projekt, bei dem ich auf meinem Rechner ein python-server-skript laufen lasse, das auf den Output eines Arduino-Duemilanove-Board reagiert. Das Programm auf dem Arduino und das Python-Skript laufen beide einwandfrei. Allerdings habe ich ein wirklich kritisches (und verdammt seltsames) Problem mit der seriellen Schnittstelle: Zunächst waren die Ergebnisse unzuverlässig. Heißt, mal hatte ich akkuraten Datentransfer, dann wieder einen arg verstümmelten. Derzeit kommen überhaupt keine Daten mehr beim Python-Skript an, obwohl es sich mit dem seriellen Schnittstelle verbindet. Wenn ich allerdings (und das ist das eigentlich seltsame) zunächst die Arduino-IDE (open-source-prog für die Arbeit mit einem Arduino) starte, funktioniert die Verbindung einwandfrei. Und zwar mittels der IDE selbst, aber auch -nachdem ich die IDE wieder geschlossen habe- mit meinem Skript. Bitte schaut euch folgenden Post an, den ich bereits im Arduino-Forum gepostet habe, und der die Problematik detailiert beschreibt: http://arduino.cc/forum/index.php/topic,91291.0.html
Es gibt also irgendetwas, was das Arduino-IDE mit der Verbindung macht, was mein Skript nicht kann, wovon es aber schließlich profitiert, selbst wenn die Arduino-IDE nicht mehr läuft.
Die Verbindung funktioniert mittels eines Konverters von Seriell auf USB. Folgende Treiber sind hierfür zuständig: usbserial, ftdi_sio. Beim booten (oder einstecken des Boards) wird das Board als serieller USB-Port erkannt und das device /dev/ttyUSB0 erzeugt. Ebenso wie es sein soll. Ich habe keine Ahnung, wo das Problem liegt; ob man vielleicht beim Aufbau einer Verbindung mit einer seriellen Schnittstelle besondere Dinge zu beachten hat. Bei allem was ich im Netz gefunden habe, wird die Verbindung stets mit den allereinfachsten Schritten via pyserial hergestellt. Kein Hinweis auf die Notwendigkeit spezieller Konfigurationen. Nun weiß ich wirklich nicht weiter. Es wäre einfach großartig, wenn mir hier jemand helfen könnte. Was immer ihr an Code oder Log-Einträgen braucht, werde ich euch gerne hier posten. Die Programme selbst sind in verkürzter Fassung schon im oben verlinkten Post zu sehen. (Allerdings laufen die Programme selbst im Grunde wunderbar, wenn nur der Datentransfer funktioniert. Beispielsweise habe ich das gleiche Problem, wenn ich die Verbindung in einer Python-Console herstelle (via pyserial oder einfach als Datei geöffnet). Ein weiteres Python-Skript http://lemonodor.com/archives/2008/02/arduino_serial.html, das nicht auf pyserial aufzusetzen scheint, bringt ebenfalls keine Abhilfe...)
Also besten Dank für jedwede Hilfe!!!