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

时间:2015-01-13 11:22:27

标签: arrays char arduino concatenation rfcomm

我有两个非常量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);

}

2 个答案:

答案 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);