Arrays und Pointer
-
Ich habe folgendes Problem:
Bei meinem Programm muss ich alle Zeichen dieses Arrays EINZELN nacheinander über die serielle schnittstelle senden:
char RPI2C[] = {'#','R','P','I','2','C',' ','A',' ','0',' ','0','0',0x00};
Zum senden brauche ich einen Pointer auf ein Zeichen dieses Arrays, senden möchte ich das ganze über eine for-schleife
for (int i=0;i<13;i++) { str_ptr = &RPI2C[0]; int nBytesSent = serial.SendData(str_ptr,sizeof(str_ptr)); }
NEED HELP
-
str_ptr = &RPI2C[i];
oder
str_ptr = RPI2C+i;Will SendData wirklich die Größe des Pointers?
-
serial.SendData(const char *,int);
const char * ist pointer auf zu schreibende zeichen und int die grösse der zu schreibenden zeichen, muss dann wenn man jeweils ein zeichen schreibt auch auf 1 gesetzt werden
-
die beiden vorschläge funktionieren beide nicht...
bei
str_ptr = &RPI2C[i]
wird jeweils das ganze Feld gesendet,
bei
str_ptr = RPI2C+i
erst das ganze Feld, und bei jedem weiteren Senden das jeweils erste Zeichen nicht, als #RPI2C..., dann RPI2C... dann PI2C... usw
-
chRis`- schrieb:
char RPI2C[] = {'#','R','P','I','2','C',' ','A',' ','0',' ','0','0',0x00}; for (int i=0;i<13;i++) { str_ptr = &RPI2C[0]; int nBytesSent = serial.SendData(str_ptr,sizeof(str_ptr)); }
char RPI2C[] = "#RPI2C A 0 00"; int nBytesSent = serial.SendData(RPI2C,sizeof(RPI2C));
-
Das Problem ist, das die letzten drei Nullen Variablen sind, die übergeben werden.. so kann die einzelne 0 zw 0 und 7 liegen ( ist die i²c adresse) und acuh die letzten beiden Nullen müssen änderbar sein, da hier die Speicheradresse übergeben wird... ein Feld wie vorgeschlagen lässt sich ned über
RPI2C[9]
zb an 9ter Stelle ändern, oder irre ich?
-
chRis`- schrieb:
Das Problem ist, das die letzten drei Nullen Variablen sind,
ok.
char RPI2C[] = {'#','R','P','I','2','C',' ','A',' ','0',' ','0','0',0x00}; int nBytesSent = serial.SendData(RPI2C,sizeof(RPI2C));
es kam ja nur auf die zweite zeile statt der langen schleife an.
-
chRis`- schrieb:
die beiden vorschläge funktionieren beide nicht...
bei
str_ptr = &RPI2C[i]
wird jeweils das ganze Feld gesendet,
bei
str_ptr = RPI2C+i
erst das ganze Feld, und bei jedem weiteren Senden das jeweils erste Zeichen nicht, als #RPI2C..., dann RPI2C... dann PI2C... usw
versuch es mal mit
str_ptr = RPI2C[i]