如何在循环时自动递增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);
}
这是串行监视器日志
在 Serial3 消息中
5A A5 06 83 21 00 01 00 11
在串行消息中
enter image description here
感谢您的帮助:)
您创建的缓冲区只有一个元素。如果您尝试插入多个,则行为未定义。
char buf[] = {0, };
您必须使此缓冲区足够大以容纳最大的消息。
char buf[maximum_data_length] = {0};
请理解使用翻译器的语气很别扭
我为 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);
}
这是串行监视器日志
在 Serial3 消息中 5A A5 06 83 21 00 01 00 11
在串行消息中 enter image description here
感谢您的帮助:)
您创建的缓冲区只有一个元素。如果您尝试插入多个,则行为未定义。
char buf[] = {0, };
您必须使此缓冲区足够大以容纳最大的消息。
char buf[maximum_data_length] = {0};