Hallo, nachdem ich mal „ein wenig“ gedebugged habe (Oszillographen in den Keller schlüren, testen, andere Schaltung mit TTL-Ausgang an das Erweiterungsboard anschliessen, ratlos aus der Wäsche gucken, …) habe ich schonmal einen Fehler gefunden:
Der serielle Port vom Raspi ist kaputt! Mit einem anderen Raspi werden die Daten problemlos gelesen. Gnargh. Trotzdem habe ich noch ein paar Schwierigkeiten: Wenn ich mit echo die Initialisierungssequenz schicke und parallel mit minicom „lausche“ kommen alle Daten vollkommen richtig und heile an. Mit dem vzlogger wird nichts gelesen - auch nicht mit der passenden Initialisierungssequenz. Bei meinem Script werden die Daten abgehackt, und zwar bei folgender Schleife: until [[ $EOL -eq 1 ]]; do read -t8 LINE < /dev/ttyAMA0 EOL=$? echo $LINE [[ "$LINE" =~ ^1.*8.*0.*([0-9]{6}\.[0-9])\*kWh\) ]] && BEZUG="${BASH_REMATCH[1]}" [[ "$LINE" =~ ^2.*8.*0.*([0-9]{6}\.[0-9])\*kWh\) ]] && EINSPEISUNG="${BASH_REMATCH[1]}" done Während ich bei folgendem Programmteil alles ohne Probleme auslesen kann: while read -t8 LINE do echo $LINE [[ "$LINE" =~ ^1.*8.*0.*([0-9]{6}\.[0-9])\*kWh\) ]] && BEZUG="${BASH_REMATCH[1]}" [[ "$LINE" =~ ^2.*8.*0.*([0-9]{6}\.[0-9])\*kWh\) ]] && EINSPEISUNG="${BASH_REMATCH[1]}" done < /dev/ttyAMA0 Kann mir jemand vielleicht erklären, warum das eine funktioniert und das andere nicht?! (Ich hatte das bei meinen Script mit $EOL implementiert, dass das Lesen abgebrochen wird, sobald alle notwendigen Daten vorhanden sind, damit das Script ein bisschen schneller läuft) Gruss, Olli