[vz-users] shell-hack zum zaehler auslesen

Dimitrios Bogiatzoules info at bogiatzoules.de
Fri Jan 11 10:34:49 CET 2013


dl4huf said the following on 10.01.2013 23:14:
[...]
> Das Ergebiss ist aber nicht berauschend :
> 
> Ein Script mit dem Inhalt
>> ( sleep 1 ; echo -e "\x2f\x3f\x21\x0d\x0a" > /dev/ttyUSB1 ) &
>> data=$(timeout 15 cat /dev/ttyUSB1)
>> echo $data
> 
> 
> liefert :
>> root at raspberrypi:~# bash test5
>>  !.8.0(006209.3*kWh)
>> root at raspberrypi:~#
> 
> Da fehlt also etliches, warum auch immer.
> Es ist zwar hier gerade die wichtige Zeile drin, aber es gibt 2 Zähler
> und der andere hat 2 wichtige Zeilen.


Zuerst etwas Grundsätziches: das Auslesen der seriellen Schittstelle
mittels cat wird nur dann beendet wenn EOF kommen würde, was aber
natürlich nicht der Fall ist. Will man nur eine bestimmte Anzahl von
Zeichen einlesen, so muss man die Ausgabe von cat auf ein anderes
Programm umleiten, welches diese Aufgabe übernimmt.

Bei der einfachen Übernahme von Binärdaten aus der Schnittstelle kann
man Schiffbruch erleiden, da in der Regel auch zufällige Steuerzeichen
im Datenstrom vorkommen können. Sinnvollerweise wandelt man binäre Daten
in Hexadezimal mit od oder xxd:

cat /dev/ttyUSB1>/dev/null | xxd -p -u -l 300

    -l len      stop after <len> octets.
    -ps         output in postscript plain hexdump style.
    -u          use upper case hex letters.

In Deinem Fall hättest Du damit Thorbens Aussage, dass nämlich die LF am
Ende einer Zeile fehlen, erkennen können (0D = CR  und 0A = NL).


Grüße

Taki



More information about the volkszaehler-users mailing list