Sie sind nicht angemeldet.

Anzeigen

**Wir werden in den kommenden Tagen einen Umzug auf einen neuen Server durchführen. Im Rahmen dieser Maßnahme wird das Forum ca. 1 Stunde nicht erreichbar sein.** nslu2-info.de ist ein privates Projekt von mir, welches jeden Monat aus eigener Tasche finanziert wird. Mit einer freiwilligen Spende wird der Erhalt und der weitere Ausbau dieses Forums unterstützt. Um mich beim Erhalt des Forums zu unterstützen, kannst Du entweder via Flattr oder Paypal spenden. Ich bedanke mich schon jetzt bei allen Unterstützern.

Lieber Besucher, herzlich willkommen bei: Die NSLU2 Community****wenns ums speichern und streamen geht****. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Linux-Beginner

unregistriert

1

13.12.2009, 11:47

Daten von Serieller Schnittstelle in eine Datei schreiben

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

Quellcode

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)

Quellcode

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.

Quellcode

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.

Quellcode

1
2
3
20091213120000 060.2
20091213121000 060.4
...

Ich hoffe mir kann jemand dabei helfen damit es funktioniert.

Anzeigen

Linux-Beginner

unregistriert

2

13.12.2009, 19:16

Hat sich erledigt, eine längere Wartezeit vom µC vor dem Senden hat den gewünschten Erfolg gebracht.
Manchmal hab ich einfach ein Brett vor dem Kopf. :wacko:

Quellcode

1
2
3
4
5
6
7
8
9
#!/bin/bash

Datum=$(date +%Y%m%d%H%M)
stty 9600 cs8 -parenb -crtscts -clocal -cstopb -echo -F /dev/ttyUSB0

echo "G" >> /dev/ttyUSB0
read LINE < /dev/ttyUSB0
echo $Datum $LINE >> /history/snow.txt
echo $Datum $LINE

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Linux-Beginner« (13.12.2009, 20:14)


Anzeigen

Social Bookmarks