www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Datei unbekannten Formates


Autor: Eder (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Eder (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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);

Autor: Eder (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wegstaben Verbuchsler (wegstabenverbuchsler)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Eder (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> dateimesswerte = fopen("F:\\Messwert1", "r");

Sollte das am Ende nicht "rb" sein?

Autor: Eder (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.