Hallo Leute,
ich möchte ein Dataplugin für DIAdem 9.1 und höher entwickelt, dessen Dateiformat ein wenig an DIAdem DAT erinnert, d.h. aus einer Headerdatei (ASCII) und einer variablen Anzahl von Binärblöcken besteht. Zusätzliches Problem: der Header steht in einem Startverzeichnis und die Binärdateien als immer gleichnamige Gruppen von Dateien in jeweils eigenen Unterverzeichnissen. Die Kanäle eines Unterverzeichnisses sollen mit den Daten der anderen Unterverzeichnisse verkettet werden. Die Leider habe ich kein Beispiel gefunden, das so eine Kombination von ASCII Headern und Binärdaten behandelt.
Das Format sieht in etwa so aus:
Header:
<kanaele>
<kanal>
name=binaer1.x 'Dateiname der Binärdatei
faktor=0.1 'Faktor zur Umrechnung der Binärdaten
offset=2 'Offset zur Umrechnung der Binärdaten
bytes=2 'Anzahl der Bytes der Werte im Binärdatensatz (Zeitstempel immer 8Bytes)
</kanal>
<kanal>
name=binaer2.x
faktor=0.4
offset=-10
bytes=4
</kanal>
...
</kanaele>
die Binärdateien enthalten in einer Folge abwechselnd Werte und deren (absoluten) Zeitstempel und sehen etwa so aus (jedes Zeichen steht für ein Byte. w steht für Werte, z für Zeitstempel):
binaer1.x:
wwzzzzzzzzwwzzzzzzzzwwzzzzzzzzwwzzzzzzzzwwzzzzzzzzwwzzzzzzzz
binaer2.x
wwwwzzzzzzzzwwwwzzzzzzzzwwwwzzzzzzzzwwwwzzzzzzzzwwwwzzzzzzzz
Verzeichnisstruktur/ Dateien darin
<Wurzel> /Header.asc
|
- <Daten1> /binaer1.x, binaer2.x
|
- <Daten2 > /binaer1.x, binaer2.x
zur Verkettung:
An "binaer1.x" aus <Daten1> wird "binaer1.x" aus <Daten2> angehängt. Daran wird "binaer1.x" aus <Daten3> angehängt werden usw.
Mein Ansatz ist der, dem Plugin den Namen der Headerdatei mitzugeben.
Anschließend wird der Inhalt der Headerdatei in eine Objektstruktur übergeben und eine Liste der Unterverzeichnisse erstellt.
Jetzt werden über alle Kanäle der Objektstruktur die Verzeichnisse durchsucht, und gefundene Binärdateien (mit gleichem Namen) aneinandergehängt.
meine Fragen:
- wie erzeugt man die Fileobjekte für Header und Binärdateien und führt sie zu einer Kanalstruktur zusammen (in der Beispielen wird alles aus einer einzigen Datei abgeleitet, hier wird ja aus dem Header der Dateilname für den Kanal erst abgeleitet)?
- wie verkettet man Kanalfragmente aus mehreren Binärdateien zu einem resultierendem Kanal?
Danke für alle Tips und Beispiele
Gruß
Udo