在 Arduino 中连接两个非常量字符数组



我有两个非常量字符数组。一个是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);

相关内容

  • 没有找到相关文章

最新更新