Ошибка при использовании модуля SD-карты: нет соответствующей функции для вызова

Этот код — всего лишь тестовый код для записи файла на SD-карту с использованием модуля SD-карты. Когда я запускаю код, я получаю это сообщение об ошибке и не уверен, что сделать, чтобы исправить код: no matching function for call to'SDLib::SDClass::exists(SDLib::File&)'.

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

int cs = 10; 

File myTest;  

void setup()
{
  //
  char myTestName[] = "MyTest.txt";  

  // Открываем последовательную связь и ждем открытия порта:
  Serial.begin(9600);
  while (!Serial) {

  }
  Serial.println("Initializing SD card...");
  Serial.println();

  pinMode(cs, OUTPUT);
  pinMode(SS, OUTPUT);
  if (!SD.begin(cs)) {
    Serial.println("SD did not initiliaze");   
    while (1) ;
  }
  Serial.println("SD initialized.");

  if (! SD.exists(myTest)){
     myTest = SD.open(myTestName, FILE_WRITE); 

     myTest.println("My 1st Line of Data");
     myTest.flush(); 
  }
  else{
    myTest = SD.open(myTestName, FILE_WRITE); 
    myTest.println("Another Line of Data"); 
    myTest.flush();

  }

  Serial.println("Done Writing");

}

void loop()
{

}

, 👍1


1 ответ


Лучший ответ:

0

Функция определяется как

// Методы определения существования запрошенного пути к файлу.
boolean exists(char *filepath);

Источник: https://github.com/adafruit/SD/blob/master/SD.h#L90

Вы вызываете его с объектом File, а не с именем файла. Вы, вероятно, перепутали имена переменных:

File myTest;  

void setup()
{
  //
  char myTestName[] = "MyTest.txt";  

  //[...]
  if (! SD.exists(myTest)){
     myTest = SD.open(myTestName, FILE_WRITE); 
     myTest.println("My 1st Line of Data");
     myTest.flush(); 
  }
//.. 

Просто замените myTest на myTestName в вызове SD.exists().

,