如何在循环时自动递增Arduino Mega Board?

How to auto increment in Arduino Mega Board while loop?

请理解使用翻译器的语气很别扭

我为 Arduino Mega Board 编写了以下代码。

但是,buf_i 的值在第二个 while 循环中没有增加。

char buf[] = {0, };

if (Serial3.available()) {
    int inByte = Serial3.read();
    int nextChar = 0;
    if (inByte == 90) { //find Header 1
        nextChar = Serial3.read();
        if (nextChar == 165) { // find Header 2

            int buf_i = 0;
            int dataLen = Serial3.read(); // get Message Length

            //save data [ char buf[] ]  ---> works well!
            while (buf_i < dataLen) {
                buf[buf_i] = Serial3.read();
                buf_i++;
            }

            buf_i = 0;
            //print data to Serial ---> not work (Does not increase buf_i) 
            while (buf_i < dataLen) {
                Serial.print(" ");
                Serial.println(buf[buf_i]);
                buf_i++;
            }
        }
    }
    Serial.write(inByte);
}

这是串行监视器日志

  1. 在 Serial3 消息中 5A A5 06 83 21 00 01 00 11

  2. 在串行消息中 enter image description here

感谢您的帮助:)

您创建的缓冲区只有一个元素。如果您尝试插入多个,则行为未定义。

char buf[] = {0, };

您必须使此缓冲区足够大以容纳最大的消息。

char buf[maximum_data_length] = {0};