Thomas schrieb:
> gibt es die Möglichkeit den Inhalt einer Variable welche im Flash
> gespeichert werden soll aus einer Datei einzulesen?
>
> Es handelt sich bei dem File um ein einfaches Konfigurations-XML-File.
>
> Dieses wird sich zur Laufzeit nicht ändern. Kann also fest beim
> Compilieren in den Code eingehen. Ich möchte einfach weg von:
Natürlich gibt es das.
Dem #include ist es ja egal, was in dem File steht, das includiert wird.
Ein #include zieht einfach nur den Inhalt der angegebenen Datei an die
Stelle im Code rein, in der der #include steht
configData.inc
**************
1 | "<?xml version='1.0'?>"
|
2 | "<file>"
|
3 | " <controler name='B'>"
|
4 | " <states>"
|
5 | " <b>"
|
6 | " <L>0</L>"
|
7 | " <M>1</M>"
|
8 | " <S>0</S>"
|
9 | " </b>"
|
10 | " </states>"
|
11 | " </controler>"
|
12 | "</file>"
|
1 | #include <avr/pgmspace.h>
|
2 |
|
3 | PROGMEM char xml[] =
|
4 | {
|
5 | #include "configData.inc"
|
6 | };
|
> Der Inhalt soll möglichst in einer extra XML Datei abgelegt werden, um
> das Hinzufügen der vielen Anführungszeichen zu vermeiden
Das ist ein Problem.
Denn ein #include entbindet dich ja nicht davon, dass sich in Summe
gültiges C ergeben muss. Ersetzt du im Kopf die Zeile mit dem #include
mit dem Inhalt der Datei, dann muss da wieder was richtiges rauskommen.
Allerdings brauchst du die Anführungszeichen nicht per Hand machen. Dazu
schreibt man sich auf dem PC ein kleines Hilfsprogramm, welches in einer
Datei Zeile für Zeile liest, die " ergänzt. D.h. Du hast dann 2 externe
Files
Einmal die Version, wie sie aus deinem Konfigurierprogramm kommt (oder
woher auch immer). Die ist im Original, also ohne "
Mit Hilfe deines kleines Hilfswerkzeugs erzeugst du daraus die Version
mit den "
Letztere wird dann vom #include beim compilieren in den Code
reingezogen.
Noch den ganzen XML-Pimp Schritt samt Abhängigkeiten ins makefile
eingetragen und du kannst komfortabel deine Konfigurationen aus dem
Programm exportieren, mit dem du sie erstellst.
Merke: Wir sind Programmierer. Wir sind faul, deshalb sind wir
Programmierer geworden. Ehe wir etwas mit der Hand machen (wie zb
dämlich in jede Zeile einer Datei " einfügen), schreiben wir uns lieber
ein Programm dafür bzw. benutzen zb einen Stream Editor, der das macht.