собрать имя файла из массива char.
- Войдите на сайт для отправки комментариев
Чт, 28/03/2013 - 21:44
здравствуйте, возникло затруднение -- есть ds1307, считываю данные в char массив. элементы массива -- день, месяц, год. хочу создать файл с именем файла день_месяц_год. как это сделать? библиотека `sd.h` ругается на то, что имя файла должно быть либо char либо uint8_t. то есть мне надо собрать массив в одну строку?
Вам надо показать код и лог ошибки.
sprintf - C++ Reference
пример
sprintf | Liudr's Blog
P.S. Вмысле да, только вам нужно не "собрать строку", а "сформировать строку из числовых данных (конвертировав их в строку)", а поможет вам в этом - ссылки выше
Вообщем будет что-то типа
в сериале вижу:
У вас, видимо, уже закончилась память. Пробуйте оптимизировать код. Выкидывайте лишние куски, делайте свою реализацию "умных" функций (типа sprintf, и всех других, особенно тех, что работают со строками).
угу.. вспоминаются свои подобные замечания ;) (сейчас придет leshak и на аналогиях в очередной раз расскажет ;))
речь об "оперативной" памяти
понял о чем вы, попробую оптимизировать.
ага, лишнее повыкидывал, теперь спотыкается конкретно на создании файла, в переменной нужное название.
ага, лишнее повыкидывал, теперь спотыкается конкретно на создании файла, в переменной нужное название.
Прийдется ждать пока прийдет пользовать с ником ВольфМессинг, может он сможет помочь
Во первых попробуйте руками сдеть
fnm="29_03_2013_09_20_48.log"
и посмотрите создатся ли, возможно совсем и не в формировании дело, а именно в работе с SD
Во вторых, вы там выше пытались в папку data забандюрить. Не знаю, может уже и умеет SD библиотека работать с папками, но раньше - не умела.
Кстаи то же самое относилось и к именам файлов. Старый добрый 8.3 только разрешался (не более 8-ми букв имя файла, не более 3-х расширение).
Да и в loop() бескоенчное открытие одного и того же файла - както странно (скорее всего не в нем причина, но все же).
дело в 8 символах. даже в описании к библиотеке стоит такое ограничение.
Ну значит либо "урезать аппетиты", либо искать либу более продвинутую.
-->дело в 8 символах.
Не только. В void setup() - нет функции инита SD карты - "SD.begin(SS_PIN);" Насчет папкок, библиотека умеет их создавать и удалять. Можно по ним сортировку сделать.
Я поступал иначе.
Формировал строку из значений ДДММГГГГ.log и затем переформировывал все это в массив filename
String filename1 = String(now.date())+String(now.month())+String(now.year())+".log";
char filename[filename1.length()+1];
filename1.toCharArray(filename,sizeof(filename));
File dataFile = SD.open(filename, FILE_WRITE);