mikrocontroller.net

Forum: Compiler & IDEs Dat-File in Programm integrieren


Autor: Max (Gast)
Datum:

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

Autor: Peter (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Klaus Wachtler (mfgkw)
Datum:

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

Autor: Max (Gast)
Datum:

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

Autor: Klaus Wachtler (mfgkw)
Datum:

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

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

Bewertung
0 lesenswert
nicht 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:
unsigned char dat_file[] = 
{
  0x20, 0x2d, 0x1b, 0x01, 0xf3
};

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.