我正在将SD卡连接到Arduino,然后通过串口与Visual Studio进行通信。一切都很好地独立工作,99%集体。现在,如果我在设置中编写此代码工作正常。如果我把它弹出一个函数,当从visual studio发送一个特定字符时调用它,我会在底部得到奇怪的字符。
我已经调试了代码的每一步,似乎没有任何异常,遗憾的是我不能将代码作为 1)它太长了...... 2)它是保密的...... :(
我理解没有代码我无法获得完整的解决方案,但这些角色是什么!为什么在设置中它完美地工作并且在一个函数中我得到各种随机性?
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("test.txt:");
// read from the file until there's nothing else in it:
while (myFile.available()) {
Serial.write(myFile.read());
}
// close the file:
myFile.close();
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
}
整瑳湩ⰱ⸳ࠀ⸳ࠀ - 直接从文本文件中复制
整瑳湩%E2%81%A7ⰱ%%E2%80%AC⸳ࠀ - 粘贴到谷歌时的输出
答案 0 :(得分:1)
它的arduino DUE和许多“String”包括我们用来上传到tft屏幕的4 x 2D字符串数组。我遇到了UNO的内存问题,但我认为我们可以使用DUE,因为它有更多的ram?
嗯,这是你的问题。我喜欢你用问号结束的方式。 :)拥有额外的RAM并不能保证淘气的String
会表现出来,甚至不能保证服务器具有GIGABYTES RAM。总结my Arduino forum post:
使用C字符串(即char数组)的解决方案非常有效。如果您不确定如何将String
用法转换为字符数组,请发布该代码段。你会得到很多的帮助!
String
将为您的程序大小添加至少1600字节的FLASH,并为每个String变量添加10个字节。虽然String
相当容易使用和理解,但是当程序运行时间更长和/或尺寸和复杂性增加时,它也会导致随机挂起和崩溃。这是由于堆管理例程malloc
和free
引起的dynamic memory fragmentation。
网络上其他系统专家的评论: