mikrocontroller.net

Forum: Compiler & IDEs einzelnes Zeichen aus String im Flash?


Autor: Danny P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin zusammen !

Verzeiht mir die vermutlich total banale Frage, aber ich habe grad ne 
absolute Blockade im Kopf... selbst Tutorials, andere 
Programmbeispiele... ich seh den Wald vor lauter Bäumen nicht....


diesen im Flash abgelegten String

static char lut_1[] PROGMEM = 
"0102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F";

möchte ich quasi als look-up-table nutzen. Also nr-mal nach rechts und 
Zeichen lesen

char akku;
akku=pgm_read_byte(&lut_1[nr]);

anschliessend soll das Zeichen an eine Nachricht angefügt werden

volatile char nachricht[200];
strcpy(nachricht,"001100");
strcat(nachricht,akku);

das lesen eines Flash-Bytes hat bei Dimmkurven etc immer so geklappt, 
nur weils n String is kann sich die Welt doch nicht anders drehen?? :)

Denn eines ist sicher, das Byte an Stelle nr des Strings wird da nicht 
angefügt.... kann mich mal jemand mit der Nase drauf stoßen?


thx & greetz

Danny

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

Bewertung
0 lesenswert
nicht lesenswert
Danny P. schrieb:

> volatile char nachricht[200];
> strcpy(nachricht,"001100");
> strcat(nachricht,akku);

Ein einzelner char ist kein String.
Also kannst du auch nicht strcat benutzen

  char akku[2];
  akku[0] = pgm_read_byte(&lut_1[nr]);
  akku[1] = '\0';

jetzt hast du einen String, den du auch mit strcat woanders anfügen 
kannst.

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du müsstest doch bei
strcat(nachricht,akku);
eine Compiler-Warnung bekommen?  Dann geh der mal nach, die ist nicht 
ohne Grund.

Autor: Danny P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ohman.... DANKE :)

das heisst das anfügen an den String hat nicht geklappt... da war also 
der kleine Ast im Sichtfeld :)

aber fürs Verständnis...

akku=pgm_read_byte(&lut_1[nr]);

im Akku müsste doch das richtige Zeichen (bzw der ASCII Binärwert) 
stehen, oder?  Das tat er nämlich auch nicht oder ich hab mich bei der 
Überprüfung auch noch verfusselt... :)

thx & greetz
Danny

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

Bewertung
0 lesenswert
nicht lesenswert
Danny P. schrieb:

> akku=pgm_read_byte(&lut_1[nr]);
>
> im Akku müsste doch das richtige Zeichen (bzw der ASCII Binärwert)
> stehen, oder?

Ja. das ist schon korrekt.

Autor: Danny P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oki, vielen Danke nochmal :)

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.