我有两个非常量字符数组。一个是buff
,另一个是buffa
。我通过其他Arduino的射频发射器获取buffa
值,我想将这些数据附加到buff
内部的数据中。然后我会将所有数据发送到其他Arduino。所以我不想发送两个不同的char arrays
.我想将它们作为一个数组一次发送。
我试过sprintf()
但它不起作用。
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);
}
我更改了 for 循环以实现此目的;
for (i = 0, j=9; i < buflen; i++, j++) {
buff[j] = (char) buf[i]; // the received data is stored in buffer
}
这在我的情况下有效,但是,它并不总是连接起来。会不会是接收器的问题?
你在哪里定义buflen的长度?你有
uint8_t buflen = VW_MAX_MESSAGE_LEN;
但是你还没有定义VW_MAX_MESSAGE_LEN;
尝试类似操作:int VW_MAX_MESSAGE_LEN = 10;
如果这有效,那么你就知道这就是问题所在。
而不是使用 sprintf,你可以尝试这样做,它创建一个名为"string1"的新字符串:
String string1(yourCharacterArray);