Aufbau Binärdatei herausfinden



  • Hallo zusammen,

    ich habe Messwerte eines Messgerätes in einer Binärdatei vorliegen. Diese Datei wurde von einer vom Gerätehersteller mitgelieferten Software erstellt und kann mit Hilfe dieser auch verarbeitet werden. Da die Software allerdings nur in Verbindung mit dem Gerät arbeitet und sich dieses bei uns im Labor befindet, kann ich nicht zu Hause die Messwerte einsehen, um zB Protokoll zu schreiben.

    Ich habe eine Beispieldatei mal hier hochgeladen: www.workupload.com/file/5a6AvR7

    Beim Öffnen in einem Editor kann man einen grundlegenden Aufbau erkennen. Hier ein Ausschnitt:

    ffffff
    @L7‰A`å ?{®Gázt?                  ffffff
    @œÄ °rh¡?{®Gázt?                  ffffff@ìQ¸…ë¡?ü©ñÒMbp?                  333333@;ßO—n¢?{®Gázt?                  š™™™™™@‹lçû©ñ¢?ü©ñÒMb€?                  333333@Ûù~j¼t£?yé&1¬Œ?                  ÍÌÌÌÌÌ@+‡ÙÎ÷£?ü©ñÒMb?                        @{®Gáz¤?;ßO—n’?                  ffffff@Ë¡E¶óý¤?;ßO—n’?                        @/Ý$¥?;ßO—n’?                        @j¼t“¦?Ûù~j¼t“?                  š™™™™™@ºI+‡¦?Zd;ßO—?                  š™™™™™@
    ×£p=
    §?X9´Èv¾Ÿ?                  š™™™™™@Zd;ßO§?{®Gáz¤?                  ffffff @ªñÒMb¨?{®Gáz¤?                        !@ú~j¼t“¨?ºI+‡¦?                        "@J+‡©?
    ×£p=
    §?                        #@š™™™™™©?é&1¬ª?                        $@é&1¬ª?Tã¥›Ä °?                        %@9´Èv¾Ÿª?“V-²?                  ÍÌÌÌÌÌ%@‰A`åÐ"«?333333³?                  ffffff&@ÙÎ÷S㥫?+‡ÙÎ÷³?                  333333'@)\Âõ(¬?sh‘í|?µ?                  333333(@yé&1¬¬?ªñÒMb¸?                  333333)@Év¾Ÿ/­?‘í|?5^º?                        *@V-²­?ÙÎ÷S㥻?                        +@h‘í|?5®?q=
    ×£p½?                  š™™™™™+@¸…ëQ¸®?X9´Èv¾?                  333333,@¬Zd;¯?X9´Èv¾¿?                        -@X9´Èv¾¯?øS㥛ÄÀ?                        .@Tã¥›Ä °?;ßO—nÂ?                  š™™™™™.@ü©ñÒMb°?;ßO—nÂ?                  333333/@¤p=
    ×£°?‹lçû©ñÂ?                  ÍÌÌÌÌÌ/@L7‰A`å°?ßO—nÃ?                  š™™™™0@ôýÔxé&±?‡ÙÎ÷SÃ?                       €0@œÄ °rh±?+‡ÙÎ÷Ã?                  ÍÌÌÌÌÌ0@D‹lçû©±?{®GázÄ?                  š™™™™1@ìQ¸…ë±?/Ý$Å?                  š™™™™™1@“V-²?bX9´ÈÆ?
    

    (wird aufgrund erkannter Steuerzeichen nicht korrekt angezeigt)

    Bei den Daten sollte es sich rein um Zahlen handeln (Drehmoment-Zuordnung zur Zeit).
    Immer wieder kommen ? und @ vor. Sind dies vllt Trennzeichen?

    @+‡Ùη?¢E¶óýÔÐ?
    

    Das @ leitet meist einen Block ein und das ? schließt einen Block mit 7Byte ab. Dieses Schema ist eigen ausnahmslos vorhanden. Man könnte jetzt meinen 7Byte+Fragezeichen = 64bit.

    Kann mir vllt jemand helfen, wie ich evtl an die Daten kommen kann? Ich wäre sehr dankbar dafür.

    Viele Grüße Dominic



  • Ich würde eher einen Hex-Editor mit etwas Unterstützung verwenden, hier wurde eine Liste zusammengestellt:
    http://superuser.com/questions/45193/hex-editor-to-translate-read-doubles

    Dann wirst du ja wahrscheinlich auch die Werte kennen, die da so ungefähr in der Datei stehen müssten und dich dann entlanghangeln...



  • Hallo Dominic,

    ich habe mir die Datei mal angesehen und bin zu folgender Einschätzung gekommen. Natürlich alles nur eine Vermutung - man kann da beliebig viel hinein interpretieren.

    Im Groben hat die Datei eine Kopf von 124Byte und dann kommen Datensätze a 42Byte. Die Anzahl der Datensätze steht ab Position 116 im Kopf - in dem konkreten Fall sind es 4781.
    Jeder Datensatz besteht aus mindestens 3 double-Werten, 16 0'en (könnten auch 2 double sein) und 2 Byte, die entweder 00 00 oder 01 00 sind.
    Ich interpretiere die der Einfachheit halber mal als uint16 .

    Im Kopf selber steht ab Position 6 noch 8 Byte ASCII-Code (hier ="00000012") und ab Position 52 noch zwei double (hier 0.378116 0.386)
    mit einem Zwischenraum von 8 Byte, die nicht =0 sind, aber wo ich mir keinen Reim daraus machen kann.

    Druckt man das alles in lesbarer Form aus, so sieht es etwa so aus:

    ASCII: 00000012
    Pos: 52
    0.378116 0.386 
    Pos: 116
    Anzahl: 4781
    Pos: 124
         0      0      0 
         0  0.001  0.003 
         0  0.002  0.003 
         0  0.003  0.004 
         0  0.004  0.004 
         0  0.005  0.003 
         0  0.006  0.003 
       0.1  0.007  0.005 
       0.2  0.008   0.01 
       0.3  0.009  0.016 
       0.4   0.01   0.02 
    ...
    2802.5  4.775      0 [1] 
    2802.5  4.776      0 [1] 
    2802.5  4.777      0 [1] 
    2802.5  4.778      0 [1] 
    2802.5  4.779      0 [1] 
    2802.5   4.78      0 [1] 
    Pos: 200926
    

    Die Positionsangaben geben jeweils die Position in der Datei an. Lesen kann man das im Prinzip mit einem ibinstream. Wenn Du mehr Info haben möchtest, so musst Du Dich nochmal melden.

    :xmas2: Werner


Anmelden zum Antworten