Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Arduino整数数组始终为索引0返回值3_Arrays_Arduino - Fatal编程技术网

Arrays Arduino整数数组始终为索引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

我写这个草图是为了给speakjet声音处理器发送代码。它将存储128到254之间任意数量的三位数整数。我将它们输入串行监视器,并在每次输入后按enter键。它存储在一个数组中,输入900后,数组中存储的值被发送到speakjet,并读回串行监视器。我遇到的问题是,数组每次都会为索引0返回一个值3。我不知道这是为什么

这是代码

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[] {};