Suche fertige Protokollengine zum Konfigurieren
-
Hallo,
ich suche eine Software / Quellcode mit dem ich Daten von einer von mir festgelegtem Quelle lade, diese dann in einer von mir festgelegten Art bearbeite und dann an ein von mir gewähltes Ziel sende.
Die Software soll individuell Konfigurierbar sein.

z.b.
Lade Daten von Schnittstelle A , bearbeite Daten (z.b. vertausche diverse Bits, Datenfelder, sonstiges), sende Daten an Schnittstelle B
Schnittstelle A und B sollen hierbei z.b. Netzwerkadressen, Spezielle Hardwarekarten, die über Treiber angesprochen werden können oder einfach Dateien sein, die lokal oder im Netz geladen werden.
Das Problem besteht nun darin, das wie bereits genannt die Schnittstellen immer anders sein können, genauso wie die Daten die darüber gesendet werden.
d.h. in einem Fall sehen die Daten so aus...
110011 und dort sollen nur Bits vertauscht werden (4 und 5) Ergebnis: 110101
oder aber folgende Daten:
aus Parameter 1: Wert A Parameter 2 Wert B wird Parameter 1: Wert B Parameter 2 Wert A
oder z.b.
234 5543 6654 wird zu 5543 234 6654
d.h. ich muss die Software so konfigurieren können, dass sie mit allen möglichen Datenpaketen klar kommt und diese auch sag ich mal von der Eingabe zur Verarbeitungs und zur Ausgabefunktion durchsenden kann
Praktisch ein universeller Datenkonverter/wandler... bei dem ich so ziemlich alles Konfigurieren kann.
Mit anderen Worten: Ich bin auf der Suche nach der eierlegenden Wollmilchsau im Bereich Datenverarbeitung.


Hat jemand sowas in der Art schon mal gesehen? oder vielleicht sogar entwickelt?? In C++??
mfg UFO
p.s. Bei Fragen steh ich gerne bereit.
-
Mein Vorschlag: Nimm dir einen iostream und schreib ein Programm drumherum, das seinen Inhalt liest, interpretiert und wieder zurückschreibt.
-
Äh.
Factories und Interfaces?
Ist selbst ganz schnell geschrieben.
3 Abstrakte Klassen ("Interfaces") für die 3 Teile (Source, Transform, Sink) und Factories die die speziellen Implementierungen (FileSource, TcpIpSource, ...) erstellen können. Jeder Implementierung gibst du dabei einen Namen (einfach ein String).
Dann kannst du in irgendein Configfile ca. sowas schreiben:[op1] source=FileSource source-param="c:\blah.txt" transform=XTransform transform-param="1, 200, x" sink=TcpIpSink sink-param="xyz.foo.com, 200"Du kannst natürlich auch benannte Parameter verwenden um Source/Transform/Sink zu konfigurieren, oder irgendwas ganz anderes machen um die verschiedenen Kombinationen zusammenzubauen.
-
Also deine Problembeschreibung ist unzureichend. Datenkonvertieren kann vieles heißen. Kommt mir fast so vor, als ob da ein EAI-System helfen könnte. Aber wie gesagt, das ist nur, was ich aus deinen unzureichenden Infos errate.
-
Das ganze muss über XML zu konfigurieren sein... d.h. in der XML File steht drin, welches Ein/Verarbeitungs/Ausgabemodul er laden soll. Zusätzlich sollen Infos wie IP Adressen, falls die Quelle das Ziel eine Netzwerkadresse sein soll... Portnummern usw in der XML File stehen.
dann noch die Information welche Module er hintereinander schalten soll..
Eingabe Verarbeitung Ausgabe
z.b. Modul 1 dann Modul 5 und dann Modul 8Beispiel XML File:
(hab ich mir mal kurz überlegt...)<?xml version="1.0" encoding="UTF-8"?> <record> <module> <modul id="1"> <datei>eingabe.so</datei> <parameter anzahl="3"> <p1>15</p1> <p2>3</p2> <p3>0x37F</p3> </parameter> </modul> <modul id="2"> <datei>eingabe.so</datei> <parameter anzahl="3"> <p1>15</p1> <p2>2</p2> <p3>0x32A</p3> </parameter> </modul> <modul id="3"> <datei>frometh.so</datei> <parameter anzahl="2"> <p1>100.130.20.40</p1> <p2>34878</p2> </parameter> </modul> <modul id="4"> <datei>EthtoStr.so</datei> <parameter anzahl="0"> </parameter> </modul> <modul id="5"> <datei>convert.so</datei> <parameter anzahl="0"> </parameter> </modul> <modul id="6"> <datei>ausgabe.so</datei> <parameter anzahl="3"> <p1>15</p1> <p2>4</p2> <p3>0x36F</p3> </parameter> </modul> <modul id="7"> <datei>toeth.so</datei> <parameter anzahl="2"> <p1>100.3.2.5</p1> <p2>1056</p2> </parameter> </modul> <modul id="8"> <datei>toeth.so</datei> <parameter anzahl="2"> <p1>100.3.2.7</p1> <p2>1053</p2> </parameter> </modul> <modul id="9"> <datei>ausstr.so</datei> <parameter anzahl="2"> <p1>Com1</p1> <p2>0x3F</p2> </parameter> </modul> </module> <ablaufe> <ablauf id="1"> <input> 1 </input> <work> 5 </work> <output>8 </output> </ablauf> <ablauf id="2"> <input> 3 </input> <work> 4 </work> <output>9 </output> </ablauf> <ablauf id="3"> <input> 1 </input> <work> 2 </work> <output>3 </output> </ablauf> </ablaufe> </record>Bei Programmstart soll er die Xml File komplett lesen, und die Werte (Attribute) usw abspeichern
Als auslese Tool hätte ich TinyXml nutzen wollen.
Ist es in Tinyxml möglich eine Datenstruktur zu erstellen die beliebig viele Module einlesen kann... bzw auch anhand des Attributs bei Parameter jeweils die Zahl an Parametern erstellt die belegt werden sollen...Nun soll er die Module wie in <ablaufe> laden (er soll die .so Files dynamisch als Shared Objects reinladen) und dann jeweils die Daten die an Eingabe anliegen durch den Converter jagen.
im ersten Fall lesen der Daten von Schnittstelle in Modul 1 (Schnittstellenkarte xy, Adresse 15, Sub 3, Port 0x37F) , schicke die Daten an Modul 5. Modul 5 bearbeitet die Daten. Modul 5 schickt die Daten weiter an Modul 8. Modul 8 schickt die Daten an die Schnittstelle weiter (Ip 100.3.2.7, Port:1053)im nächsten Fall soll dann von Modul 3 (ip 100.130.20.40) Daten geladen in Modul 4 verarbeitet und in Modul 9 (Com1 Schnittstelle. Adresse 0x3F) gesendet werden
Es handelt sich somit immer um andere Daten... d.h. auch die Übergabe zwischen den Modulen stellt ein Problem dar... (Idee: Bytestream / Bitstream)
Ich habe noch keine Module... meine Aufgabe ist es nur das Framework mit zum Laden der Module und den Datenaustausch zwischen den Modulen zu ermöglichen...
d.h. das Framework muss so ausgelegt sein, das es mit allen möglichen Daten hantieren kann.Ich hoffe das endlich mal jemand checkt, was ich für ein Programm erstellen will... mittlerweile habe ich genug Infos gegeben.
So schwer kann das doch net sein....
mfg UFO
-
Ich hoffe das endlich mal jemand checkt, was ich für ein Programm erstellen will... mittlerweile habe ich genug Infos gegeben.
Ich habe es schon lange gecheckt.
Nur du bist anscheinend zu doof meine Antwort zu verstehen...