Официальный сайт компании Arduino по адресу arduino.cc
SD_h как записать фаил в создаваемую папку
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Здравствуйте! Возникла идея вести логи полученных с датчиков значений и упорядочивать из в папках средствами ардуино. идея в следующем: 1) я каждые 5 секунд считываю значение датчика, набираю массив 12 значений и вычисляю среднеарифметическое. 2) создаю (или открываю папку с именем текущей даты - год, месяц, день) 3) создаю в папке фаил лога минут и записываю туда полученное среднеарифметическое. 4) по прошествии часа создаю в папке часовой лог и записываю туда среднеарифметическое от минутного лога 5) тоже самое с суточными показаниями
в итоге в папке с текущем днем должно получится 3 файла : минутные значения за сутки, часовые значения за сутки и суточные значения(с этим пока не определился возможно буду создавать папку месяца)
в общем вопрос, поскольку мой код File logFile = SD.open( DATA_DIR / filename1, FILE_WRITE ); ,где DATA_DIR - имя папки, filename1 - имя файла. выдает ошибку: no match for 'operator/' (operand types are 'String' and 'String') , а примеры из скетча SD→listfiles я не понимаю как у себя применить, прошу помощи в примере рабочего куска кода.
самое разумное что я нашел это по этому адресу arduino-diy (.) com/arduino-SD-karta
чтобы люди не играли в Настрадамусов и Ванг вот код.
-----------------------
З.Ы. да, я понимаю что это быдлокод и всё там через подвыподверт, но пока так. причесывать буду потом и разносить по разным вкладкам. З.Ы.Ы как оформить код раскрывающимся катом - не знаю. и да, я надёргал куски кода из примеров и создавал под них отдельные функции. Поэтому такая каша.
И Вам не хворать.
Научитесь правильно вставлять.... хотя-бы программу. Очень сложно говорить о строках, когда у них нет нумера.
да, не сразу разобрался, как это делать. строка 411
исправил. спасибо. в первом сообщении внести исправления не могу.
по существу вопроса есть что нибудь?
http://arduino.ru/forum/programmirovanie/ne-smog-naiti-opisaniemanual-po-biblioteke-sd-pomogite#comment-300168
сообщение 4) В примерах создают файл в корне карты. А как создать файл в подкаталоге?
сообщение 8) в мануале написано так: "directory/filename.txt"
предпологаестя создать директорию и в ней фаил и в него записать значения.
AndyPanda - начните с того, что выкиньте из кода все, что не относится к Sdкарте - OLED дисплей, RTC, датчики температуры. Оставьте коротенький код, в котором все, что вы будете делать - создавать каталоги на карточке и писать туда файлы.
80% за то, что на таком коротком коде вы сами найдете ошибку. А не найдете - приносите этот код сюда, посмотрим все вместе
Если что - это вовсе не глум, свои программы отлаживаю именно так.
AndyPanda - начните с того, что выкиньте из кода все, что не относится к Sdкарте
Слона надо кушать по частям.
AndyPanda - начните с того, что выкиньте из кода все, что не относится к Sdкарте - OLED дисплей, RTC, датчики температуры. Оставьте коротенький код, в котором все, что вы будете делать - создавать каталоги на карточке и писать туда файлы.
80% за то, что на таком коротком коде вы сами найдете ошибку. А не найдете - приносите этот код сюда, посмотрим все вместе
Если что - это вовсе не глум, свои программы отлаживаю именно так.
С одной стороны я это всё понимаю, что сложно разбираться с каждым уникумом индивидуально
С другой все упражнения в остроумии от некоторых товарищей показывают, что они приходят посоревноваться в этом остроумии и при этом, скорее всего ничего не знают по теме.
С третей, я в самом начале написал, прямым текстом что у меня не получается создать папку, а в ней фаил лога и попросил кусок рабочего кода (и тут или я неправильно сформулировал что маловероятно или чтецы слеповаты и без понимания)
если что, лишнее повыкидывал, но мне надо создавать имена основываясь на дате с часов (да и до этого код работал нормально. в корень зиписывалось правильно)
ошибка в строке 186
Про строку 186 Вам уже писали в #3. В этой строке у вас написана бредятина. С точки зрения компилятора С++, конструкция
DATA_DIR / filename1
означает поделить значение переменной DATA_DIR на значение переменной filename1. Компилятор не в курсе, как выполнять деление для строк - о чем вам и сообщает ошибкой
А готовый код новичкам тут давать не принято. Либо додумайте сами по наводящим вопросам, либо ищите счастья где-то еще.
Вот, спрашивается, какой смысл отвечать на вопросы, если ТС все равно не читает ответы?
и попросил кусок рабочего кода
Вот, спрашивается, какой смысл отвечать на вопросы, если ТС все равно не читает ответы?
ТС читает ответы. и понимает, что вопрос о бестактности закапывается легко вот этим сообщением http://arduino.ru/forum/programmirovanie/2-datchika-dht22-i-odna-funktsi...
так же, ТС изучил вот этот коммент http://arduino.ru/forum/programmirovanie/ne-smog-naiti-opisaniemanual-po...
и не нашел там функции: "зайти в папку и проводить все операции находясь в ней".
в общим по итогу, вывод напрашивается следующий: отвечающие не понимают что ответить, но показать свою маститость (на олдскульность и знания увы не тянете) пальцы чешутся.
вопрос можно закрывать. в ру сегменте подобных примеров нет. модератор, сноси тему нечего засорять маститый форум.
А зачем именно в "ру сегменте", если есть среди стандартных примеров к стандартной библиотеке SD?
Тут как бы обсуждать нечего, поэтому и примеров нет.
Реально наркоман какой-то! ;))
Родное сердце! Ты разницу между а/в и "а/в" понимаешь??? Кавычек вокруг "папка/файл" у тебя нет!
Мля, ты реально тупой? Или на препаратах?
вопрос можно закрывать. в ру сегменте подобных примеров нет. модератор, сноси тему нечего засорять маститый форум.
ну закрывать так закрывать, ты думаешь мы тебя уговаривать будем? :)
как жаль, что я это давно попробовал и это не работает.
кстати, там кто-то говорил, про компилятор. так вот, конструкция в кавычках - это строка (или набор символов, я то в этом не силен в отличии от маститых ).
соответственно, если директория записывается в переменную и имя файла записывается в переменную, то (барабанная дробь...) это не заработает.
...то (барабанная дробь...) это не заработает.
Вы имеете хоть малейшее представление о языке, на котором пытаетесь писать?
Или наивно полагаете, что если немного беспорядочно постучать пальцами по клавиатуре, то (барабанная дробь!) выйдет именно то, что Вам нужно?
вопрос можно закрывать. в ру сегменте подобных примеров нет. модератор, сноси тему нечего засорять маститый форум.
ну закрывать так закрывать, ты думаешь мы тебя уговаривать будем? :)
меня уговаривать не надо. я сделаю попроще. или посмотрю, как это реализовано при компиляции FLProg.
а вы так и останетесь тут с осознанием собственной важности, но без знаний и примеров.
...то (барабанная дробь...) это не заработает.
Вы имеете хоть малейшее представление о языке, на котором пытаетесь писать?
Или наивно полагаете, что если немного беспорядочно постучать пальцами по клавиатуре, то (барабанная дробь!) выйдет именно то, что Вам нужно?
превратили во флуд, так превратили.
File logFile = SD.open( DATA_DIR / filename1 , FILE_WRITE );
DATA_DIR, filename1 - строковые переменные
File logFile = SD.open( " DATA_DIR / filename1 " , FILE_WRITE ); - кавычки здесь (сдеся, тута как вам понятнее) превращают две переменные в набор символов и данная конструкция не заработает.
Но это пажалуй для пояснение маститому wdrakula
File logFile = SD.open( " DATA_DIR / filename1 " , FILE_WRITE ); - кавычки здесь (сдеся, тута как вам понятнее) превращают две переменные в набор символов и данная конструкция не заработает.
реально тупой :)
Сколько платишь, чтоб я тебе прям в этой строчке расставил кавычки правильно?
А зачем именно в "ру сегменте", если есть среди стандартных примеров к стандартной библиотеке SD?
Тут как бы обсуждать нечего, поэтому и примеров нет.
ну так, ради проформы, где здесь пример записи файлов внутри папки?
Examples
на ListFiles пожалуйста указывать там работа только с чтением
ну так, ради проформы, где здесь пример записи файлов внутри папки?
а зачем он нужен?
Там в описании есть строчка
"The file names passed to the SD library functions can include paths separated by forward-slashes, /, e.g. "directory/filename.txt"."
- которой более чем достаточно, чтоб понять, как писать файлы не текущую, а во вложенные директории
Тут как бы обсуждать нечего, поэтому и примеров нет.
AndyPanda - очевидно, что причина всего этого цирка с конями - вы не знаете элементарнейших операций на Си, таких как сложение, умножение, деление... Потому и помощь вам не в кассу и примеры не помогают.
Примеры в описании библиотеки не рассччитаны на уровень детского сада. Если где-то обьяснено, что функция принимает, например, число 2 - никто не станет давать отдельных примеров на число 3 или 44 :)))
За то время, что вы тут канючите и обижаетесь - нормальный человек давно бы уже нашел и прочитал операции со строками.
Адьос
если у тебя строки в переменных, то вот так Var1+Var2 они не складываюся, внезапно.
File logFile = SD.open( " DATA_DIR / filename1 " , FILE_WRITE ); - кавычки здесь (сдеся, тута как вам понятнее) превращают две переменные в набор символов и данная конструкция не заработает.
реально тупой :)
Сколько платишь, чтоб я тебе прям в этой строчке расставил кавычки правильно?
рублей 200. если это заработает с переменными
на ListFiles пожалуйста указывать там работа только с чтением
если у тебя строки в переменных, то вот так Var1+Var2 они не складываюся, внезапно.
мимо. я не пытаюсь делать математические операции со строковыми переменными
А что Вы пытаетесь?
на ListFiles пожалуйста указывать там работа только с чтением
если нечего сказать, то докопайся до грамАтности.
если из примеров ничего не подходит, но надо хоть как-то защитить свои слова: "если есть среди стандартных примеров к стандартной библиотеке SD" - переходи да близкие темы(итераций может быть много), может там оппонент не разбирается. надежда умирает последней не так ли?
А что Вы пытаетесь?
вон там, повыше, ушедший с гордо поднятой головой b707 кидал цитату "The file names passed to the SD library functions can include paths separated by forward-slashes, /, e.g. "directory/filename.txt""
так же по ссылке https://www.arduino.cc/en/Reference/SDopen
есть схожая надпись "
Syntax
SD.open(filepath)
SD.open(filepath, mode)
Parameters
filename: the name the file to open, which can include directories (delimited by forward slashes, /) - char *
"
но с примерами что плохо, возможно и я там чего-то не вижу, собственно поэтому и написал сюда.
ладно, налайкивайте тут друг другу и дальше, маститые. Про то как я тут канючил и обижался почаще себе повторяйте.
AndyPanda - вы реально таки думаете, что хоть кто-то из разговаривающих с вами не знает ответа? :)))
ну так что, платите за решение? Или болтовня одна?
Иначе, я вижу, эта тема будет вечной. Поскольку сами вы ни на что не способны.
Еще что забавно - пример как сделать путь к каталогу - у вас ДАЖЕ ЕСТЬ В ВАШЕМ СКЕТЧЕ!!! А раз вы все равно тупите - похоже этот код вы списали от первойдо последней буквы и понимаете в нем не больше, чем неграмотный в японских иероглифах
если нечего сказать, то докопайся до грамАтности.
Зашел ты не очень
Тебе грамотные (реально!) люди указывают на конкретные твои ошибки в базовых операциях со встроенными типами. Все остальные проблемы вторичны. Идея "кодирования" микроконтроллеров путем сбора кусочков чужого говнокода примеров изначально обречена на провал, если ты не в состоянии ПОНЯТЬ, что ты используешь.
Это твой путь, но без усвоения букваря ты Набокова обратно на английский не переведешь
Да ты, батенька, верно, феерический кретин, я угадал?
никаких сомнений. Ему не просто подсказали - его считай подвели к решению. Стоит, смотрит в упор, спрашивает "Где?"
С такого даже стыдно денег брать.
Деда, ты кстати не прав про сложение. Там как раз оно. В описании написано про char*. а по факту - посмотри в код ТС - у него все каталоги и имена файлов - стринги :) Либа переваривает и то и то.
Если там String, то таки да, я не прав, '+' там работает. А '/' - нет.
Тебе грамотные (реально!) люди указывают на конкретные твои ошибки...
Ну и, как обычно, воинствующее невежество сочетается с альтернативной одаренностью: 707-й уже писал, что подходящий пример имеется даже в коде, который разместил сам ТС, только ему (ТС) об этом невдомек.
...то (барабанная дробь...) это не заработает.
Вы имеете хоть малейшее представление о языке, на котором пытаетесь писать?
Или наивно полагаете, что если немного беспорядочно постучать пальцами по клавиатуре, то (барабанная дробь!) выйдет именно то, что Вам нужно?
превратили во флуд, так превратили.
File logFile = SD.open( DATA_DIR / filename1 , FILE_WRITE );
DATA_DIR, filename1 - строковые переменные
File logFile = SD.open( " DATA_DIR / filename1 " , FILE_WRITE ); - кавычки здесь (сдеся, тута как вам понятнее) превращают две переменные в набор символов и данная конструкция не заработает.
Но это пажалуй для пояснение маститому wdrakula
Реально совсем тупой. ;))
" DATA_DIR / filename1 " - ЭТО ЧТО????? ;)))))
Дробь. Неправильная. В числителе каталог, в знаменателе файл. Чего пристали к челу?! Просто String - зло. AndyPanda, перениши все без String и будет счастье.
Дробь. Неправильная. В числителе каталог, в знаменателе файл. Чего пристали к челу?! Просто String - зло. AndyPanda, перениши все без String и будет счастье.
спасибо. но не помогло. не работает не так
ни так
В числителе каталог, в знаменателе файл.
вроде и так у меня и есть "каталог / имя файла"
без одинарных кавычек "\" на такой слеш ругается
Панда, про дробь был глум :)
нельзя быть таким идиотом...
вот, держи, и не благодари
Б707! Ночь добрых дел! ;)) Ну и нафига? Это как вылечить пациента, который кормил второе поколение врачей! ;)) Над этим можно было ещё глумиться и глумиться.
не терплю клинических дебилов... бесят они меня :)
Пусть забирает свою строчку и проваливает.
А мне кажется, что это - жирный тролль. Ну не может человек быть настолько тупым.
Так что теперь делаем ставки: получит ли b707 200 рублей.
А мне кажется, что это - жирный тролль. Ну не может человек быть настолько тупым.
Так что теперь делаем ставки: получит ли b707 200 рублей.
на сбер могу кинуть. в принципе доковылял сам, но формально верный ответ был на час (или около того) раньше чем я справился сам.
а на счет тупых.... насколько же всё должно быть серо в ИРЛ, чтобы радоваться чужому незнанию.
в принципе доковылял сам,
Не, ну, понятное дело...
Почему-то все (если не совсем все, то подавляющее большинство) пишут, что "доковыляли сами". Причем после нескольких десятков постов, в которых с разных сторон и с разной степенью подробности указывается, что нужно сделать.
но формально верный ответ был на час (или около того) раньше чем я справился сам.
Совсем около того - 3 дня.
а на счет тупых.... насколько же всё должно быть серо в ИРЛ, чтобы радоваться чужому незнанию.
Тупой и незнающий - это совершенно разные вещи. Незнающий - не имеющий информации, а тупой - не умеющий работать с имеющейся информацией.