对超载'println(char [4], int)'的调用不明确



我有两个Arduinos,我想让它们通过TX/RX进行通信。Arduino 一个作为发送器,Arduino 2作为接收器。但是我对接收器代码有问题并收到此错误:

重载的 'println(char [4], int)' 的调用是不明确的

谁能帮我?谢谢。

这是我的接收代码:

char str[4];
void setup(){
Serial.begin(9600);
Serial.begin(9600);
}
void loop() {
int i=0;
if (Serial.available()){
delay(100); //allows all serial sent to be received together
while(Serial.available() && i<4){
str[i++] = Serial.read();
}
str[i++]='';
}
if(i>0){
Serial.println(str, 4);
}
}

为什么设置中有两个Serial.begin(9600)? 在 while 循环之后,ivar 等于4。数组中str最大索引是str[3](0-3),因此您正在访问不存在的4th索引。你应该删除该str[i++] = '',如果你想进行通信,你应该做如下的事情:

if (i > 0) {
for (int j=0; j<4; j++) {
Serial.print(str[j]);
}
Serial.println("");
}

最新更新