Hi H. schrieb:
> for (byte i = 0; i < *radio.DataLen; i++)
> cmd[i] = ((char) radio.Data[i]);
> lcd.print ((char) radio.Data[i]);
>
> cmd[i] = '\0';
Is zwar schon etwas her, aber ...
Was genau willst Du denn da machen?
1 | // Willst Du hier die Daten aus "radio.Data[i]" in "cmd[i]" kopieren?
|
2 | for (byte i = 0; i < *radio.DataLen; i++)
|
3 | {
|
4 | cmd[i] = ((char) radio.Data[i]);
|
5 | }
|
6 |
|
7 | // Warum gibst Du dann "radio.Data[i]" aus, wozu dann das kopieren in "cmd[i]"? Wenn Du die Laufvariable i angibst landest Du auch im nirgendwo, da sie nach dem hochlaufen in der for-Schleife jetzt am Ende des Arrays steht. Das kann also gar nicht klappen :-)
|
8 | lcd.print ((char) radio.Data[i]);
|
9 |
|
10 | // Wenn Du hier das String Ende setzt, was Grundsätzlich nicht falsch ist, warum machst Du dann mit cmd[i] nichts mehr?
|
11 | cmd[i] = '\0';
|
12 |
|
13 |
|
14 | // Du kannst auch einfach "cmd[i] = 0" schreiben.
|
logischer fände ich sowas:
1 | for (byte i = 0; i < *radio.DataLen; i++)
|
2 | {
|
3 | cmd[i] = ((char) radio.Data[i]);
|
4 | }
|
5 | cmd[i] = 0;
|
6 |
|
7 | // Ein Array ist bereits ein Pointer auf das erste Element
|
8 | lcd.print ((char) cmd);
|
9 |
|
10 | // Du kannst auch schreiben:
|
11 | lcd.print ((char) &cmd[0]);
|
12 |
|
13 | // ob der cast auf (char) nötig ist kann ich Dir nicht sagen, das musst Du testen.
|
Mein code ist aber nur eine Grundlage, ich denke nicht das es so auf
anhieb klappen wird.
Warum kopierst Du überhaupt um? Wenn Du einen String sendest sollte der
doch auch eine 0-Terminierung haben. Kannst Du dann nicht sofort
"radio.Data" ausgeben?
Gruß
Florian