hoschid
Goto Top

Textdatei zyklisch und automatisiert bearbeiten und versenden

Hallo Administratoren! face-smile

Ich stehe vor einem (für mich) noch großen Problem, bin aber guter Dinge, dass mir hier geholfen werden kann.

Kurz zu mir, um meinen Background zu erläutern: ich bin Elektroingenieur, allerdings kein Programmierer. Trotzdem bin ich offen für alle Vorschläge / Methoden, etwas passendes zu programmieren oder es zumindest zu versuchen. Meine Welt ist eher die Automatisierungstechnik...

Nun zu meinem Problem. Dazu werde ich etwas ausholen müssen, versuche mich aber so kurz wie möglich zu halten.

Es geht um ein Forschungsprojekt im Bereich der Luftfahrt. Das nur, um euch klar zu machen, dass ich hier viele Vorgaben und kaum bis keine Freiheiten habe.
Ziel ist es, eine Textdatei zyklisch und automatisiert zu bearbeiten und an eine Leitstelle zu senden (z. B. per FTP).

Die zu bearbeitende .txt wird durch eine .exe (habe ich selbst geschrieben) erstellt. Diese .exe liest mittels LibNoDave-Bibliothek (Stichwort Stuxnet) alle relevanten Daten aus einer Siemens SPS aus. So weit, so gut... Sagen wir mal, in dieser Datei habe später folgende Zeile:

DB1.DBW0:123,456;09.09.2015;18:24:22

Der Kunde wünsch allerdings eine ganz bestimmte Formatierung der .txt, da diese in der Leitstelle automatisiert weiter verarbeitet wird. Das bedeutet, dass ich meine Ursprungs-Textdatei erst kundenspezifisch aufbereiten muss.
Als erstes muss ein "Header" für die Textdatei generiert werden (mit Zeitstempel und Anlagen-Seriennummer,...). Danach folgt das Einlesen der Daten aus der ursprünglichen Textdatei. Nach der Bearbeitung brauche ich dann eine Zeile, die folgendermaßen aussehen könnte:

20150909:182422>Info>123,456> Temp_boiler

Als Erklärung:
Zeitstempel>Art der Meldung>Wert>Descriptor

Die Adresse "DB1.DBW0" kann natürlich mehrmals vorkommen, nur immer mit anderem Zeitstempel. Ich müsste also zuerst nach der Adresse suchen, mit dem "ältesten" Zeitstempel und anschließend die Zeile - wie oben beschrieben - bearbeiten und in die neue Textdatei einfügen -> so lange, bis die Adresse mit dem jüngsten Zeitstempel erreicht ist und anschließen mit der nächsten Adresse fortfahren, bis alles abgearbeitet ist.

Das Ganze soll z. B. alle 2 Stunden automatisch abgearbeitet werden. Anschließend geht die aufgearbeitete Textdatei zum Kunden.

Außerdem ist noch die große Frage, auf welchem System ich das ganze laufen lassen sollte. Denkbar wäre ein kleiner Hutschienen-PC (läuft dann mit WinCE oder Linux) oder XPort Pro (Linux). Muss ja nichts großes sein, da er wirklich nur dazu da wäre, um diese Textdatei zu bearbeiten...

Ihr seht, das ganze ist wirklich eine Herausforderung.

Könnt ihr mir vielleicht sagen, wie ich am geschicktesten an die Sache ran gehen sollte?! Mit welcher Software / welcher Sprache habe diese Möglichkeiten?! Wie erstelle ich eine .exe, die sich zyklisch selbst aufruft / ausführt?! Kennt ihr brauchbare Tutorials dazu?! Unter welchen Suchbegriffen kann ich mir da im Netz weitere Infos holen?! Hat jemand Erfahrung mit Hutschienen-PCs?!

Das war jetzt ganz schön viel auf einmal, aber ich würde mich sehr über eure Hilfe und Antworten freuen!

Danke schon mal an alle und noch einen schönen Feierabend.

Gruß
Hoschi

Content-ID: 282410

Url: https://administrator.de/contentid/282410

Ausgedruckt am: 24.11.2024 um 03:11 Uhr

114757
114757 09.09.2015 aktualisiert um 20:50:12 Uhr
Goto Top
Moin Hoschi,
wenn du dir eine EXE selber schreiben kannst implementiere das doch direkt mit da rein ?!

Ansonsten kannst du das mit einem Bash-Skript abfackeln, das kann dann, wenn du willst, auf jeder noch so kleinen Linux-Kiste laufen:

Das könnte dann nach deiner etwas knappen etwas unpräzisen Beschreibung so aussehen.
(Wo die "Info" und der "Descriptor" für die Zeile herkommt war nicht ganz klar, und deshalb im Skript durch statischen Text ersetzt.)
#!/bin/bash
search='DB1\.DBW0'  
datei='./eingabe.txt'  
outfile='./ausgabe.txt'  
header="TimeStamp: $(date --rfc-3339=seconds) / Seriennummer: XXXXXXXXX"  
echo "$header" >"$outfile"  
grep "$search" "$datei" | awk -F'[:;]' '{print substr($3,7,4)substr($3,4,2)substr($2,0,2)":"$4$5$6">Info>"$2">Descriptor"}' | sort -t: -nk1,2 >>"$outfile"  
Wie erstelle ich eine .exe, die sich zyklisch selbst aufruft / ausführt?!
Unter Linux : Stichwort cron
Ihr seht, das ganze ist wirklich eine Herausforderung.
Kommt auf den Betrachter an face-smile

Das gewünschte geht natürlich alternativ auch mit Perl/python/c++ je nachdem was der User am besten beherrscht. Das ist dann Geschmackssache. geeignet sind alle Programmiersprachen dafür wenn sie auf der gewünschten Hardware lauffähig sind.

Gruß jodel32
TsukiSan
TsukiSan 10.09.2015 um 00:27:18 Uhr
Goto Top
Hallo HoschiD,

besteht nicht die Moeglichkeit deinerseits, die Logdatei gleich in dem gewuenschten Format anzulegen?
Du hast geschrieben,dass die .txt Datei mit einem von dir erstelltem Programm angelegt wird.
Die zu bearbeitende .txt wird durch eine .exe (habe ich selbst geschrieben) erstellt.
Das wuerde die Sache doch von Anfang an erleichtern.

Gruss

Tsuki
HoschiD
HoschiD 13.09.2015 um 19:52:30 Uhr
Goto Top
Hallo Jodel32!

Vielen Dank für deine Antwort!
Mit Cron werde ich mich auf jeden Fall mal beschäftigen. Was ich bisher dazu gelesen habe, klingt jedenfalls schon mal vielversprechend.
Ich habe mich jetzt auch mal daran gegeben, die Textdatei tatsächlich direkt mit meinem Programm zu erstellen. Habe ich auch mit C++ geschrieben und funktioniert bisher ganz gut. Aber auch vielen Dank für deinen Tipp mit dem Bash-Skript. Wie die endgültige Lösung aussehen wird, weiß ich zwar noch nicht, aber ich werde euch hier auf dem Laufenden halten.
Hast du auch eine gute Lösung parat, wie die fertige Textdatei anschließend zum Kunden bekomme?! Der Kunde meinte per FTP oder RSYNC. Habe ich allerdings keine Erfahrungen mit. FTP-Server kenne ich zwar, allerdings weiß ich nicht, wie ich meine Datei automatisch dahin bekommen könnte...

Nochmal vielen Dank und viele Grüße
Hoschi
HoschiD
HoschiD 13.09.2015 um 19:54:28 Uhr
Goto Top
Hallo TsukiSan!

Auch dir vielen Dank für deinen Denkanstoß!
Wie ich gerade auf Jodel32's Post geantwortet habe, habe ich die Idee dann auch mal aufgegriffen und werde da dran bleiben. Sieht bisher vielversprechend aus.

Gruß
Hoschi
114757
114757 13.09.2015 aktualisiert um 23:35:57 Uhr
Goto Top
Zitat von @HoschiD:
Hast du auch eine gute Lösung parat, wie die fertige Textdatei anschließend zum Kunden bekomme?! Der Kunde meinte per FTP oder RSYNC.
Da gibt's ne Menge Möglichkeiten,
http://superuser.com/questions/323214/how-to-upload-one-file-by-ftp-fro ...
ich würde aber lieber auf eine verschlüsselte Variante wie z.B. via SCP zurückgreifen.