我在循环函数中有以下几行:
item = String(buffer);
Serial.println(item);
其中item是String并缓冲char数组。这完全有效,直到我在文件末尾添加一个函数(在循环函数之外):
void storeData(String item){
Serial.println("StoreData");
for (int k=0; k<11; k++){
Serial.print("*");
if(item == products[k]){
items[index] = names[k];
index++;
Serial.print("\n");
Serial.print(item);
Serial.print("\t");
Serial.print(names[k]);
}
}
}
将字符串item
与值列表进行比较,并在找到值时存储相应的名称。
当我在最后添加此代码时,即使我不调用该函数,转换的输出也会变为:
978973103 Á
9789731030418
第一个值是不正确的转换,第二个值是buffer
的值。
可能会发生什么?我已经重新启动并重新布线并从头开始重复一切。
答案 0 :(得分:1)
您可能正在耗尽2K SRAM。字符串数组可以快速使用它。
此外,我建议使用F()
函数,因为不使用RAM作为constanst。例如Serial.println(F("StoreData")
;
最新的IDE显示了预期的RAM使用率。但这是猜测。如果它甚至接近那么可能存在问题。我在代码中的特定点使用以下MemoryFree library来揭示高水位。
答案 1 :(得分:0)
由于item是字符串。我想你可以尝试使用
Serial.println(item);
而不是
Serial.print(item);
在你的storeData函数中。其他字符串也类似