Hallo,
ich versuche für meine Wetterstation einen Schneehöhenmesser zu bauen. Mittels Ultraschall wird die Höhe ermittelt und über die Serielle Schnittstelle übertragen. Bei jedem Ausführen eines Scriptes soll eine Zeitmarke und der Wert in eine Datei geschrieben werden.
Mein Problem ist jedoch das empfangen unter Unslung.
wird mit
|
Source code
|
1
|
echo "G" >> /dev/ttyUSB0
|
ein G an den Mikrocontroller übertragen so anwortet dieser nach ca. 500ms mit dem Wert (in ASCII-Zeichen).
Bsp.: 030.6 und einem Linefeed. Also immer sechs Char Werte.
Zu Testzwecken hab ich dieses kleine Script "test.sh" ausprobiert:
(Übertragung ist 9600baud 8N1)

|
Source code
|
1
2
3
4
5
6
7
8
9
10
11
|
#!/bin/sh
stty 9600 cs8 -parenb -crtscts -clocal -cstopb -echo -F /dev/ttyUSB0
echo "G" >> /dev/ttyUSB0
while [ "$LINE" != 10 ]
do
read LINE < /dev/ttyUSB0
echo $LINE
done
|
Hier ist allerdings schon mein erstes Problem. Das Script wird nie beendet, ich muss es jedesmal mit STRG-C beenden und bei jeder zweiten Abfrage von test.sh wird die führende 0 nicht angezeigt.
|
Source code
|
1
2
3
4
5
6
|
root@Webserver2:/> ./test.sh
10.1
root@Webserver2:/> ./test.sh
010.1
root@Webserver2:/> ./test.sh
10.1
|
Ziel soll es später sein, dass beim ausführen des Scriptes ein "Timestamp" und der Wert in eine Datei angehängt wird.
|
Source code
|
1
2
3
|
20091213120000 060.2
20091213121000 060.4
...
|
Ich hoffe mir kann jemand dabei helfen damit es funktioniert.