尝试为我的 Arduino Uno 编写一些代码时,我有一个奇怪的串行输出。
我有这个原型代码:
MyClass myclass;
void setup()
{
Serial.Begin(9600);
Serial.println("Starting...");
}
void loop()
{
int status = myclass.DoWork();
Serial.println("Status: " + status);
}
class MyClass
{
int DoWork()
{
Serial.println("Doing some work...");
return 1;
}
}
现在,当它运行时,我得到以下输出:
开始...
做一些工作...
属性:1
所以奇怪的部分是“状态:1”缺少前几个字符。这是因为我在对象中不正确地使用串行还是什么?
我注意到当我引用另一个也使用类似 MyClass 的串行库时,我得到了其他奇怪的输出行为......所以我认为我做错了什么。
编辑:最后这实际上是一个内存问题。我包含的一个库非常大,它正在消耗可用内存。我通过添加更多调试语句发现了这一点,并发现损坏根据字符串长度和位置转移。通过使用 F() 函数,我将字符串移动到闪存中(例如,我现在运行 Serial.println(F("Starting...")); 它纠正了奇怪的输出。