Verketten von zwei nicht-Konstanten char-arrays in Arduino
Habe ich zwei nicht-Konstante char-arrays. Man ist buff
und andere buffa
.
Ich bekomme Werte in buffa
via rf transmitter von anderen Arduino und ich möchte anfügen dieser Daten in der Daten in buff
.
Dann sende ich alle Daten auf den anderen Arduino. Also ich will nicht senden zwei verschiedene char arrays
. Ich möchte Ihnen allen auf einmal nur ein array.
Versuchte ich sprintf()
aber es funktioniert nicht.
char buffa[144];
char buff[1000];
void loop() {
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
sprintf(buff,"<status>\n");
if (vw_get_message(buf, &buflen)) { //check to see if anything has been received
int i;
for (i = 0; i < buflen; i++) {
buffa[i] = (char) buf[i]; //the received data is stored in buffer
}
}
distance1 = getDistance(initPin1, echoPin1);
sendData(3, distance1);
sprintf(buff, "%s", buffa);
delay(5000);
const char *msg0 = buff;
vw_send((uint8_t *)msg0, strlen(msg0)); //Send control character
vw_wait_tx();
Serial.print(msg0);
}
- Ich habe die for-Schleife um dies zu erreichen, wie diese; for (i = 0, j=9; i < buflen; i++, j++) { buff[j] = (char) buf[i]; }
Du musst angemeldet sein, um einen Kommentar abzugeben.
Änderte ich die for-Schleife um dies zu erreichen, wie diese;
Diese funktioniert in meinem Fall Jedoch, ist Es nicht immer verkettet.
Könnte es sein, das problem des Empfängers?
Wo sind Sie definieren die Länge buflen? Sie haben
Aber Sie haben nicht definiert VW_MAX_MESSAGE_LEN;
Versuchen Sie so etwas wie:
int VW_MAX_MESSAGE_LEN = 10;
Wenn das funktioniert, dann wissen Sie, dass ist das problem.
Anstelle von sprintf, könnten Sie versuchen, dieses legt eine neue Zeichenfolge namens "string1":