Textdatei zyklisch und automatisiert bearbeiten und versenden
Hallo Administratoren!
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 282410
Url: https://administrator.de/contentid/282410
Ausgedruckt am: 24.11.2024 um 03:11 Uhr
5 Kommentare
Neuester Kommentar
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.)
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
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 cronIhr seht, das ganze ist wirklich eine Herausforderung.
Kommt auf den Betrachter an 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
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.
Gruss
Tsuki
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
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,Hast du auch eine gute Lösung parat, wie die fertige Textdatei anschließend zum Kunden bekomme?! Der Kunde meinte per FTP oder RSYNC.
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.