我有两个非常量char数组。一个是buff
,另一个是buffa
。
我通过其他Arduino的rf发送器获取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);
}
答案 0 :(得分:0)
我改变了for循环来实现这个目的;
for (i = 0, j=9; i < buflen; i++, j++) {
buff[j] = (char) buf[i]; // the received data is stored in buffer
}
这适用于我的情况,但是,它并不总是连接。 这可能是接收器的问题吗?
答案 1 :(得分:0)
你在哪里定义buflen的长度?
uint8_t buflen = VW_MAX_MESSAGE_LEN;
但您尚未定义VW_MAX_MESSAGE_LEN;
尝试以下方法: int VW_MAX_MESSAGE_LEN = 10;
如果有效,那么你知道这就是问题所在。
而不是使用sprintf,你可以试试这个创建一个名为“string1”的新字符串:
String string1(yourCharacterArray);