SD.open()返回true但不创建文件

时间:2017-12-06 00:19:18

标签: arduino

我正面临着SD卡和Arduino的特定问题。我想创建一个在SD卡上创建新文件的功能,用于不同的一天。现在,我正在使用整数模拟日历。我知道问题已经讨论过,但我似乎无法找到类似讨论的问题。

代码:

#include <stdlib.h> // included for floatToString 
#include <math.h> 
#include <SPI.h>
#include <SD.h>

int year = 2014;
int month = 11;
int day = 4;

char dateTitle[20]; //= "0000000000.txt";

void printDateTitle(char* dateTitle, int Y, int M, int D){
  //char dateTitle[20];
  sprintf(dateTitle, "%4d-%02d-%02d.txt", Y, M, D);
  return;
}

const int chipSelect = 4;

void setup() {
  //printDateTitle(dateTitle, year, month, day);
  Serial.begin(9600);
  while (!Serial) {
    ;
  }
  Serial.print("Initializing SD card...");
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    while (1);
  }
  Serial.println("card initialized.");
}

void loop() {
  Serial.print(dateTitle);
  delay(1000);
  File dataFile = SD.open(dateTitle, FILE_WRITE);
  if (dataFile){
    dataFile.println("something");
    dataFile.close();
    Serial.print(day);
    Serial.println("something");
    delay(1000);
  } else 
    Serial.println("Error");
}

在代码中,我有一个函数void printDateTitle,它将日历中的输入格式化为字符串,我想将其用作文件的标题。

而且,当我在void loop()中使用printDateTitle(dateTitle, year, month, day);定义一个函数时,我在输出中得到一个“错误”,意思是SD.open = false。

问题是即使SD.open返回true,它也不会在SD卡上创建文件。 .txt包含在char数组中。我也用过资本.TXT。

我很感激有关这个问题的所有建议。

作为参考,我在Arduino IDE中使用Arduino Uno和Micro SD card Adapter

1 个答案:

答案 0 :(得分:2)

Arduino SD Library文档声明它使用“文件的短8.3名称”。因此,只有名称为8个字符,文件扩展名为3的文件才有效。例如:12345678.txt有效,123456789.txt无效。

你的日期字符串(2014-11-04.txt)很长,因为它有10个字符而不是8个字符。

还要确保已将SD卡格式化为FAT16或FAT32文件系统。