Forum: Compiler & IDEs Dat-File in Programm integrieren


von Max (Gast)


Lesenswert?

Hallo,

für ein Update eines Gerätes musste bisher immer ein Dat-File geöffnet 
werden.
Nun will ich in das Update-Programm das Dat-File fest einbinden, weiß 
aber nicht wie ich es bewerkstelligen soll.

Mit "unsigned char dat_file[] = {"daten"}; " funktioniert es nicht, da 
in den Daten alle Werte von 0x00 bis 0xff vorkommen können, somit auch 
ein " , das den String beendet.

Das Dat-File ist etwa 56kbyte groß.

Kann mir jemand weiterhelfen?

Danke und Grüße
Max

von Peter (Gast)


Lesenswert?

Max schrieb:
> Mit "unsigned char dat_file[] = {"daten"}; " funktioniert es nicht, da
> in den Daten alle Werte von 0x00 bis 0xff vorkommen können, somit auch
> ein " , das den String beendet.

wann der String enden legst du selber fest, du darfst halt keine String 
funktionen nutzen.

von Karl H. (kbuchegg)


Lesenswert?

Max schrieb:

>
> Mit "unsigned char dat_file[] = {"daten"}; " funktioniert es nicht, da
> in den Daten alle Werte von 0x00 bis 0xff vorkommen können, somit auch
> ein " , das den String beendet.

Dann solltest du das ganze auch nicht als String behandeln, wenn du 
keinen String hast. In C hilft es ungemein, wenn man die richtige 
Datentypen bzw. Datentypsichtweise hat.

> Nun will ich in das Update-Programm das Dat-File fest einbinden, weiß
> aber nicht wie ich es bewerkstelligen soll.

Ist das ein Binärfile?

Mit einem Tool aus dem Binärfile eine ASCII - Hexrepräsentierung machen, 
auf ein File schreiben und die dann mittels #include in den C-Source 
Code reinziehen.

(PS. solche Tools heissen  bin2ascii oder bin2text oder so ähnlich. 
Einfach mal danach googeln)

von Klaus W. (mfgkw)


Lesenswert?

Evtl. brauchst du etwas in dieser Art (gibt es noch mehr, das ist
halt meine Version):
http://www.wachtler.de/#bin2c
Kurzanleitung am Anfang des Quelltextes.

von Max (Gast)


Lesenswert?

Hllo,

danke für die Antworten.
Stimmt. Dann muss ich das binär-file in ein ascii-file umwandeln und 
dieses als h-Datei einbinden. Zur Ausgabe wandle ich es wieder in binär 
zurück.

Danke Max

von Klaus W. (mfgkw)


Lesenswert?

Max schrieb:
> Zur Ausgabe wandle ich es wieder in binär
> zurück.

?

Mit dem #include liegen die Daten binär, Byte für Byte, in deinem Array.
Wenn du also z.B. mit fwrite() das ganze Feld wieder in eine Datei
schiebst, kommt dabei eine exakte Kopie der Originaldatei raus.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Max schrieb:
> Dann muss ich das binär-file in ein ascii-file umwandeln und
> dieses als h-Datei einbinden.

Wenn Du damit einen Hexdump meinst, dann ist das OK.

Also:
1
unsigned char dat_file[] = 
2
{
3
  0x20, 0x2d, 0x1b, 0x01, 0xf3
4
};

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?


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.