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
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.
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)
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.
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
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.
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 | };
|
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.