写到SD卡时,来自Arduino的奇怪角色

时间:2017-04-19 17:54:42

标签: arduino serial-port sd-card

我正在将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⸳ࠀ - 粘贴到谷歌时的输出

1 个答案:

答案 0 :(得分:1)

  

它的arduino DUE和许多“String”包括我们用来上传到tft屏幕的4 x 2D字符串数组。我遇到了UNO的内存问题,但我认为我们可以使用DUE,因为它有更多的ram?

嗯,这是你的问题。我喜欢你用问号结束的方式。 :)拥有额外的RAM并不能保证淘气的String会表现出来,甚至不能保证服务器具有GIGABYTES RAM。总结my Arduino forum post

不要使用String™

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

String将为您的程序大小添加至少1600字节的FLASH,并为每个String变量添加10个字节。虽然String相当容易使用和理解,但是当程序运行时间更长和/或尺寸和复杂性增加时,它也会导致随机挂起和崩溃。这是由于堆管理例程mallocfree引起的dynamic memory fragmentation

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