写入 SD 卡时来自 Arduino 的奇怪字符

Strange characters coming from Arduino when writing to SD card

我正在将 SD 卡连接到 Arduino,然后 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⸳ࠀ -- 粘贴到google

时的输出

Its the arduino DUE and yes lots of "String" including 4 x 2D string arrays we are using to upload to a tft screen. I ran into memory issues with the UNO but thought we would be ok with the DUE as its got considerably more ram?

嗯,这是你的问题。我喜欢你用问号结束的方式。 :) 拥有额外的 RAM 并不能保证顽皮的 String 会正常工作,即使在具有千兆字节 RAM 的服务器上也是如此。总结 my Arduino forum post:

不要使用 String™

使用 C 字符串(即 char 数组)的解决方案非常有效。如果您不确定如何将 String 用法转换为字符数组,请 post 代码段。您将得到很多的帮助!

String 将为您的程序大小添加至少 1600 字节的 FLASH 和每个字符串变量 10 字节。尽管 String 相当易于使用和理解,但随着程序运行时间的延长 and/or 的大小和复杂性的增加,它也会导致随机挂起和崩溃。这是由于 dynamic memory fragmentation 由堆管理例程 mallocfree.

引起的

网上其他地方系统专家的评论: