Hi, ich versuche hier gerade in eie Programmablaufsteuerung, die als Array im Flash abgelegt ist, einen Kommentar einzufügen. Bin bis jetzt aber nicht gerade erfolgreich. const uint8_t pgmProgrammablauf[] PROGMEM = { 0x4, 0x0, 0x80, 0x20, 0x0, 0x2, 0x0, 0x0, //Kommentar "Hallo Welt", 0x4, 0xf, 0x80, 0x20, 0x0, 0x2, 0x0, 0x0, }; Kann mir jemand sagen ob es überhaupt möglich ist einen String in ein Array dieser Art einzufügen, oder gibt es eine andere Lösung für dieses Problem? z.B. String einzeln erzeugen und einen Zeiger in das oben dargestellte Array einfügen.??? Bin für jeden Vorschlag dankbar!
//---------------------------------------------------------------------- ------------------- //Texte aus dem Flash Speicher auslesen 2 void Textausgabe(void) { unsigned char myByte = 1; unsigned char i = 0; while(1) { myByte = pgm_read_byte(&Text1[i]); if('\0' == myByte){return;} PORTB = i+1; //nur zum testen PORTD = myByte; //nur zum testen i++; } } //---------------------------------------------------------------------- ------------------- //---------------------------------------------------------------------- -------------------- // Diese Texte werden im Flash gespeichert und von dort gelesen. unsigned char Text1[] PROGMEM = "text1"; unsigned char Text2[] PROGMEM = "ELECTRONIC"; const prog_char Text3[] = "text3"; //---------------------------------------------------------------------- ------------------- so in etwa habe ich es gelöst. es muß aber auch noch andere lösungen geben var mybite enthält dann immer einen buchstaben vom text
const char pgmProgrammablauf[] PROGMEM = { 0x4, 0x0, 0x80, 0x20, 0x0, 0x2, 0x0, 0x0, //Kommentar 'H','a','l','l','o',' ','W','e','l','t', 0x4, 0xf, 0x80, 0x20, 0x0, 0x2, 0x0, 0x0, }; uint8 befehl=(uint8 )pgmProgrammablauf[i];
Hi, Die Lösung von Jorge habe ich auch schon getestet, aber da ich in dem Array sehr viele Schritte des Programmablaufs mit den dazugehörigen, auch etwas längeren, Kommentaren abspeichern will währe diese Lösung zu Umständlich. Da ich die Strings schon in das Array der Programmablaufsteuerung einfügen muss, damit ich die Zugehörigkeit des Strings zu dem jeweiligen Programmschritt erkennen kann, kann ich die Lösung von "ich" leider auch nicht anwenden. Gibt es denn eine Möglichkeit den Zeiger auf einen String in das oben Gezeigte Array einzufügen? Danke für die Tips!
Zwei unterschiedliche Datenytpen in einem Array geht nur über ein typedef. So ganz ins unreine gedacht etwa so:
1 | typedef struct |
2 | {
|
3 | uint8_t uint; |
4 | PGM_P Kommentar; |
5 | } uint_mit_Kommentar; |
6 | |
7 | char Kommentar_zu_Programmschritt_17[] PROGMEM = "Hallo Welt"; |
8 | |
9 | const uint_mit_Kommentar pgmProgrammablauf[] PROGMEM = |
10 | {
|
11 | {0x4, NULL}, {0x0, NULL} , {17, Kommentar_zu_Programmschritt_17} |
12 | };
|
ohne Gewähr Oliver
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.