Forum: Mikrocontroller und Digitale Elektronik Datei unbekannten Formates


von Eder (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe mit einem C-ähnlichen Programm mit FWrite eine Datei erzeugt
wo 20 Messwerte drinnen stehen sollen. Jetzt wollte ich  mit einemC-
Programm den Inhalrt auslesen und habe lauter kryptische zeichnen
bekommen. Ich habe die Datei angehängt. Weiß von Euch jemand wie man
die Datei aufmachen kann und damit die Messwertenoch unverändert
drinnenstehen oder gibts ein C- Programm welches irgendwelche Zahlen
nicht in den ASCII- Code umwandelt

Vielen Dank für Eure hilfe

lg

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist ein recht einfaches Binärformat, wie dieser Hexdump zeigt:
00000000 09 23 04 C3 22 FB 04 C3 D2 FD 05 C3 06 CB 00 C3
00000010 9E 74 09 C3 4C E4 01 C3 67 A7 02 C3 39 B4 08 C3
00000020 9B E4 02 C3 2C C2 05 C3 27 1A 04 C3 95 1D 00 C3
00000030 98 80 0A C3 F2 00 02 C3 C8 B5 FE C2 78 89 08 C3
00000040 6F 49 00 C3 10 E3 06 C3 9C DD FF C2 A1 03 08 C3

Anscheinend ist jeder der Werte ein 32-Bit-Floating-Point-Wert, Du
musst die Werte nur in dieser Form einlesen.

Hier mal die ersten drei Werte:

-132.13
-132.98
-133.99

Haut das hin?

von Eder (Gast)


Lesenswert?

Ja das haut hin -Super!!!!
Ich bräuchte noch ein C- Programm, welches mir die werte in *.cvs-
format ausgibt. Ist das möglich und gibts da so ein Programm.

Vielen Dank
lg
Eder

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist nicht schwer.

Datei aufmachen

  FILE* datei;
  float wert;

  datei = fopen("dateiname", "r");

  if (!datei)
  {
    // Fehlerbehandlung
  }

float-Werte in Schleife aus Datei lesen:

  while (fread(&wert, sizeof (float), 1, datei) == sizeof (float))
  {
    // wert wie auch immer ausgeben
    printf("Wert %f\n", wert);
  }

Datei schließen

  fclose(datei);

von Eder (Gast)


Lesenswert?

Hallo ,

Noch eine kurze Frage: ich hab jetzt den Code geschrieben und
zwar:#include <stdio.h>
#include <stdlib.h>

 FILE* dateimesswerte;
 float wert;



int main(void)
{
  dateimesswerte = fopen("F:\\Messwert1", "r");
  if (!dateimesswerte)
  {
    printf("Fehler im System");
  }

/* float-Werte in Schleife aus Datei lesen:*/

  while (fread(&wert, sizeof (float), 1, dateimesswerte) == sizeof
(float))
  {
    // wert wie auch immer ausgeben
    printf("Wert: %f\n", wert);
  }
  fclose(dateimesswerte);
}

Ich compilier das Programm mit Dev-C++ und führe dann die .exe Datei im
Command- Fenster aus aber es wird nichts ausgegeben.
Hättest du noch einen tipp was Falsch ist.
vielen Dank!!!!!

lg

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

"nichts ausgegeben" => landet das Programm denn in der
Fehlerbehandlung (Deine Textmeldung "Fehler im System") ?
Bau dir mal vor, in und nach der While_Schleife noch ein paar printf()
rein damit du siehst was da passiert

von Eder (Gast)


Lesenswert?

Hallo,

Ich habe keine Fehlermeldung bzw. es wird nicht "Fehler im System"
ausgegeben. Es wird das .exe Programm ausgegeben aber es wird nichts
ausgegeben aber in der auszugebenden Datei müßte was sein.
Was kanns da haben?
Vielen Dank für Eure Hilfe.

lg

von Rolf Magnus (Gast)


Lesenswert?

> dateimesswerte = fopen("F:\\Messwert1", "r");

Sollte das am Ende nicht "rb" sein?

von Eder (Gast)


Lesenswert?

hallo,
Ich habs geschafft und möchte mich sehr herzlich bei euch bedanken für
die sehr sehr konstruktiven beiträge. Das ist wirklich ein super Forum.

Vielen dank

lg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.