从串口写入SD卡

时间:2016-07-09 05:40:45

标签: c++ arduino

我正在尝试使用卡模块从我的Arduino Mega 2560中的串行端口写入SD卡。

我希望能够在txt文件中写入我在串口com中输入的内容。

#include <SPI.h>
#include <SD.h>

const int chipSelect = 4;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.print("This is a test and should be ignored");
   if (!SD.begin(chipSelect)) {
    Serial.println("\nCard failed, or not present");
    // don't do anything more:
    return;
  }
  else{
  Serial.println("\ncard initialized.");
}
}


void loop() {
  // put your main code here, to run repeatedly
File OpenFile = SD.open("test.txt", FILE_WRITE);
  if(OpenFile and Serial.available());
  {
    OpenFile.println(Serial1.read());
    OpenFile.close();
  }
}

然而,连续的&#34; -1&#34;和&#34; 1&#34;,没有&#34;,写入SD。

是的,我可以通过其他方式写入SD卡......

干杯,PoP

1 个答案:

答案 0 :(得分:0)

我注意到您正在检查Serial.available(),但使用序列号 1 来阅读:)

由于您有Mega,因此SerialSerial1不会出现错误。我说这是你的罪魁祸首!

当没有数据时,Stream读取函数将返回-1。此外,您可以减轻Arduino的负载并立即执行操作(不是每个字节打开/关闭)并清除所有可用数据(Serial.read()只读取一个字节,以防您不知道)。 / p>

void loop() {

  File OpenFile = SD.open("test.txt", FILE_WRITE);

  if(OpenFile){
    while(Serial.available()){
      OpenFile.println(Serial.read());
    }
    OpenFile.close();
  }
}

您可能想要检查SD lib是否支持默认附加或FILE_APPEND之类的标记,因为如果有更多数据可用,您将在下一个循环中覆盖该文件(串行数据不是即时的,您的代码可以在接收其余数据时循环)。