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

Antwort per Email an