#1 2016-01-03 21:46:19

Иван
Учасник
Зареєстрований: 2015-11-10
Повідомлень: 6

Функция Sd.open("file_name",FILE_WRITE);

Помогите пожалуйста с проблемой. Суть ее такова есть задача: хочу чтоб каждые сутки писался на карту отдельный файл c именем даты.Чтобы легче было обрабатывать большой объем данных. Библиотека RTC.h  и SD.h ...там есть функция time.gettime() и переменные time.seconds, time.minutes и т д Пытался вместо первого аргумента вставить time.gettime("d_m_Y") - ошибки нет но файл не пишется. А вот с переменными выдает ошибку -
" invalid conversion from 'uint8_t {aka unsigned char}' to 'const char*' [-fpermissive]"

Неактивний

#2 2016-01-03 22:04:21

Йожэг
Учасник
Зареєстрований: 2015-12-30
Повідомлень: 97

Re: Функция Sd.open("file_name",FILE_WRITE);

Создаёт ли файл этот код? --

  File dataFile = SD.open("datalog.txt", FILE_WRITE);
  if (dataFile) {
    dataFile.println("Hello, world!");
    dataFile.close();
  }

Что покажет монитор порта? --

  Serial.println(time.gettime("d_m_Y"));

Неактивний

#3 2016-01-03 23:52:16

Иван
Учасник
Зареєстрований: 2015-11-10
Повідомлень: 6

Re: Функция Sd.open("file_name",FILE_WRITE);

Все дело в том что скетч без  сериал соеденения.С LCD монитором (автономный регистратор). А Ваш код сделает следующее - создаст файл с именем datalog.txt
а  dataFile.println("Hello, world!");напишет в нем привет мир. А хотелось бы что бы программа сама писала имя файла которое равно текущей дате. Я думаю что нужно как то расшифровать переменные  time.day , time.month, time. year и перевести их в текст, склеять в имя, а потом этот текст, вставить в первый аргумент. Только вот не силен пока в примудростях таких (если вообще это возможно)

Остання редакція Иван (2016-01-04 17:14:52)

Неактивний

#4 2016-01-04 00:09:09

Йожэг
Учасник
Зареєстрований: 2015-12-30
Повідомлень: 97

Re: Функция Sd.open("file_name",FILE_WRITE);

Можно сделать всё. Или почти всё. Но без возможности отладки написание кода становится мукой. Я так понимаю, что Ардуино принято дебажить через Serial monitor. Для начала можно узнать, что выдаёт time.gettime("d_m_Y").

Неактивний

#5 2016-01-04 00:49:04

Иван
Учасник
Зареєстрований: 2015-11-10
Повідомлень: 6

Re: Функция Sd.open("file_name",FILE_WRITE);

Всем спс
Нашел здесь http://arduino.ru/forum/programmirovani … ssiva-char (последний ответ дал результат)


       if(time.seconds == 34)           
                                     {
                                       String filename1 = String(time.day)+String("_")+String(time.month)+String("_")+String(time.year)+".txt";
                                       char filename[filename1.length()+1];                                                                                         
                                       filename1.toCharArray(filename,sizeof(filename));                                                                         
                                       myFile = SD.open(filename, FILE_WRITE);
                                      }

Остання редакція Иван (2016-01-04 00:54:27)

Неактивний

#6 2016-01-05 00:37:35

Студент
Гість

Re: Функция Sd.open("file_name",FILE_WRITE);

// получение имени файла для текущего дня при использовании библиотеки RTClib.h.
String get_file_name()
{
     String filename1;
     dt = RTC.now();
     filename1+=String(dt.year()-2000,DEC);
     if(dt.month()<10)
       filename1+="-0"+String(dt.month(),DEC);
     else
       filename1+="-"+String(dt.month(),DEC);
     if(dt.day()<10)
       filename1+="-0"+String(dt.day(),DEC);
     else
       filename1+="-"+String(dt.day(),DEC);
     //filename1+="-"+String(dt.hour(),DEC);
     //filename1+="-"+String(dt.minute(),DEC);
     //filename1+="-"+String(dt.second(),DEC);
     filename1+=".txt";
     return filename1;

}

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму