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


von Danny P. (Gast)


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

von Karl H. (kbuchegg)


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

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

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

von Hc Z. (mizch)


Lesenswert?

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

von Danny P. (Gast)


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

von Karl H. (kbuchegg)


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.

von Danny P. (Gast)


Lesenswert?

oki, vielen Danke nochmal :)

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
Noch kein Account? Hier anmelden.