Bei der Wetterstation unserer Vereins gab es das Problem, dass wir die Wetterdaten in Serieller Form erhalten und diese irgend eine Art und Weise an den Server übertragen mussten. Die Idee, die seriellen Daten in einer Text-Datei zu speichern und dann hochzuladen war sehr unstabil und wurde deshalb nicht weiter verfolgt. Als Lösung wurde dann „Ser2Net“ genutzt, hierbei wir der serielle Datenverkehr direkt in einen TCP-RAW-Stream umgewandelt und zur Verfügung gestellt.
Auf der Serverseite musste also nurnoch Zykisch die Daten aus diesem Stream gelesen werden. Dies ermöglichen ein paare Zeilen. Die denn Stream für x.Sekunden lesen und das empfangene dann in einer Datei speichern.
Hier das der Code
timeout 5 nc -v 89.82.89.23 1235 > tcp_raw.txt #timeout 5 = Befehl wird nach 5.Sekunden beendet #nc -v 89.82.89.23 1235 = TCP-RAW-Stream von IP:89.82.89.23 auf Port:1235 wird ausgegeben und # > tcp_raw.txt = Schreibt das ganze in eine Datei
Hier der gesamte Code der benutzt wurde. Durch weitere Schleifen wurden bestimmte Fehlerfälle versucht zu vermeiden.
#Lese per NetCat den Serial-Datenstream für 5.Sekunden #und speichere den Inhalt in einer Datei #================================================================ #Aktuelle Unix-Zeit now=$(date +%s) #Zeit in 10.Sekunden in_10=$((now+10)) # While die Prüft ob die 10.Sekunden seit Start vergangen sind while [[ $in_10 > $(date +%s) ]] do #Lösche alte Datei rm tcp_raw.txt #Führe den Befehl für 5.Sekunden aus und speichere den Inhalt in einer Datei timeout 5 nc -v 89.82.89.23 1235 > tcp_raw.txt #Weitere 6.Sekunden um garaniert nichtmehr in die While-Schleife zu laufen sleep 6 done
Im Prinzip würde
Schreibe einen Kommentar