gpt4 book ai didi

c++ - 将数组内容打印到序列号,给出意外的值

转载 作者:行者123 更新时间:2023-11-28 05:56:18 24 4
gpt4 key购买 nike

我正在尝试通过串行发送数组内容。这是代码:

    #include <PCM.h>
const unsigned char sample[] PROGMEM = {
126, 127, 128, 128, 128, 128, 128, 127, 128, 128, 128, 129, 129, 128, 127, 128, 128, 127, 126, 127, 128, 129, 128, 127, 126, 127, 128, 128, 126, 126, 127, 127, 127, 127, 127, 127, 126, 127, 129, 130, 129, 128, 126, 126, 126, 126, 127, 129, 130, 129, 127, 127, 127, 127, 128, 128, 128, 128, 127, 127, 127, 127, 127, 127, 128, 130, 131, 129, 127, 126, 126, 126, 127, 127, 128, 128, 128, 128, 127, 128, 128, 127, 127};

void setup()
{
Serial.begin(115200);

delay(3000);
for (int i=0; i<sizeof(sample); i++)
{
delay(100);
Serial.println(sample[i]);
}
}

void loop()
{
}

当我开始监视串行端口时,它给出了非预期的输出,而不是数组中的原始值。这是第一个代码“with Println”的输出:

0
0
6
0
0
0
1
0
0
6
6
6
6
6
6
6
0
0
135
0
0
6
0
0
1
3
0
6
171
0
0
0
0
0
0
0
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
2
6
1
4
45
0
0
6
0
6
0
248
254

这是“写”的输出: i could not paste the output of "write", i captured it as jpg

但是,当我这样做时,我得到了我想要的值,但是我会失去 FOR 循环,

 #include <PCM.h>

const unsigned char sample[] PROGMEM = {
126, 127, 128, 128, 128, 128, 128, 127, 128, 128, 128, 129, 129, 128, 127, 128, 128, 127, 126, 127, 128, 129, 128, 127, 126, 127, 128};
void setup()
{
Serial.begin(115200);
delay(3000);
//for (int i=0; i<sizeof(sample); i++)
// {
delay(100);
Serial.println(sample[0]);
Serial.println(sample[1]);
Serial.println(sample[2]);
Serial.println(sample[3]);
Serial.println(sample[4]);
// }
}
void loop()
{
}

问题是什么?我想不通。任何帮助将不胜感激。

注意:对于数组中的前 5 个值,两个代码应该给出相同的结果,但事实并非如此,第二个代码给出“126 127 128 128 128”,这很好,但第一个代码不会,它有唯一的区别是使用变量“i”而不是一一列出数组的所有内容。

提前谢谢你,

最佳答案

我将内存类型从程序内存“PROGMEM”更改为普通内存或动态内存,这段代码中的一切都很好,我可以轻松地使用“for”循环进行迭代,没有任何问题。

开发人员应该了解如何使用“for 或 while”或程序内存“PROGMEM”中的任何循环指令进行迭代,而不仅仅是动态内存(或者向我们展示如何存在 ^_^)

谢谢,

关于c++ - 将数组内容打印到序列号,给出意外的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34102455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com