глюк записи в SD
- Войдите на сайт для отправки комментариев
Ср, 05/12/2018 - 21:53
Здравствуйте уважаемые коллеги.
вот всю голову сломал...
String logstring = ""; char* log_filename ="log2.csv"; //********************************************************** dataFile = SD.open(log_filename, FILE_WRITE); if (dataFile) { logstring = "Date,Time"; dataFile.print(logstring);dataFile.flush(); Serial.print(logstring); for (byte i = 0; i <54 ; i++){ logstring = ","; logstring += i; dataFile.print(logstring);dataFile.flush(); Serial.print(logstring); } dataFile.close();
в сериал выводит
Date,Time,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53
в файл пишет
Date,Time,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42
пробовал формировать всю лог-строеу и потом ее писать одним махом, тоже недописывает, только до 51, причем, если пишутся именно какие то строки, то может оборвать строку. пробовал разбивать запись на два куска 0-27 и 27-54 , все то же самое...
вроде бы и мега не забита насмерть.
Скетч использует 35494 байт (13%) памяти устройства. Всего доступно 253952 байт.
Глобальные переменные используют 4863 байт (59%) динамической памяти, оставляя 3329 байт для локальных переменных. Максимум: 8192 байт.
может кто подскажет куда копать?
кажется зацепился.
проверил не выгрузку лога, а сам лог на SD, там все ОК.
проблема в коде выгрузки, брал откуда то готовый , на коротких строках он отрабатывал нормально , а вот на длинной затыкается в неожиданных местах.
то есть, если файл закончился раньше, чем счетчик блока, то незаполненный полностью блок пропадает.
когда лог большой, то это было незаметно ,я списывал на обрывы коннекта и глюки сети, но вот на единичной записи вылезло во-всю красоту :))
решается добавлением
перед закрытием файла.