Arrays Arduino整数数组始终为索引0返回值3
我写这个草图是为了给speakjet声音处理器发送代码。它将存储128到254之间任意数量的三位数整数。我将它们输入串行监视器,并在每次输入后按enter键。它存储在一个数组中,输入900后,数组中存储的值被发送到speakjet,并读回串行监视器。我遇到的问题是,数组每次都会为索引0返回一个值3。我不知道这是为什么 这是代码Arrays Arduino整数数组始终为索引0返回值3,arrays,arduino,Arrays,Arduino,我写这个草图是为了给speakjet声音处理器发送代码。它将存储128到254之间任意数量的三位数整数。我将它们输入串行监视器,并在每次输入后按enter键。它存储在一个数组中,输入900后,数组中存储的值被发送到speakjet,并读回串行监视器。我遇到的问题是,数组每次都会为索引0返回一个值3。我不知道这是为什么 这是代码 int in=0; int code; int phrase[] {}; int x=0; String stack=""; void set
int in=0;
int code;
int phrase[] {};
int x=0;
String stack="";
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
Serial.println("Ready");
}
void loop() {
while (Serial.available()>0) {
int inbyte = Serial.read();
if (in<=2);
{
stack += (char)inbyte;
in++;
//Serial.println(stack);
//Serial.println(in);
}
if (in==3) {
if (stack == "900") {
for(int i=0;i<x;i++) {
Serial1.write(phrase[i]);
Serial.println(i);
Serial.println(phrase[i]);
Serial.println();
}
stack="";
x = 0;
in = 0;
Serial.println("Ready");
} else {
phrase[x]=0;
int code = stack.toInt();
if (code < 128) {
code = 253;
}
phrase[x]=code;
Serial.println(x);
Serial.println(phrase[x]);
x++;
in=0;
Serial.write(code);
Serial.println();
stack = "";
}
}
}
}
谢谢你在这件事上的建议或帮助
Brewer.首先,我注意到,在重新格式化代码时,您在这里输入了一个错误:
if (in<=2); // <-- if the condition is true, it does nothing
{
// this block of code always gets executed
stack += (char)inbyte;
in++;
}
因为它没有分配内存来存储某些东西
我想仅这两个错误就可以解释程序中一些未定义的行为。考虑到这些基本的东西是完全错误的,我没有分析你的算法本身的有效性,因为它已经晚了,我要睡觉了- 谢谢,我把数组大小从零改为30,问题就解决了
int phrase[] {};