помогите создать библиотеку
- Войдите на сайт для отправки комментариев
Вс, 27/10/2019 - 22:44
Добрый всем день!
Есть скейч рабочий который возвращает время и дату основываясь на данных сайта. Создал 2-а файла библиотеки, но не работает ошибка: no matching function for call to 'ClassDateTime::ClassDateTime(const char [11], const char [21])'
Вставьте скетч по правилам форума для начала
Простите сейчас попробую, сразу не разобрался как
Что по вашему происходит в строке 5 первого листинга (использование библиотеки)
Прости но я ещё полный 0 делал копипастом с примеров библиотек
пример брал https://alexgyver.ru/lessons/library-writing/ в строк а 5 используется класс библиотеки
весь день ушел а толку ноль, помоги плиз создать библиотек и как ею воспользоваться?
В общем помогаю - в 5 строке первого листинга ты пытаешься создать экземпляр класса с указанием двух параметров. Такого конструктора не существует в описании твоего класса, вот компилятор и ругается.
это: ClassDateTime StringDateTime(ssid, pass);
Замени на это: ClassDateTime sDateTime;
А это: Serial.println(sDateTime.StringDateTime );
На это: Serial.println(sDateTime.StringDateTime (ssid, pass));
Хоть немного читай что копипастишь. )) Вникать перед сном лень, но это первое что заметил. Должно заработать. Хотя не факт, гайвера тут не любят.
Спасибо, а кто такой гайвер?
в классе и в конструкторе я добавлял StringDateTime(String ssid, String pass); почему нельзя сначала передать все параметры а потом обратиться для получения выходного параметра?
... а кто такой гайвер?
пост 6 прочтите ссылку и поймете, а не любят из-за того, что неразумные копипастят его "творения" и вместо того, чтобы учиться - орут ПАМАГИТЕ вот их всех и отправляют к АВТОРУ.... справедливости нужно отметить, что к тому самому автору есть законные претензии по его творениям... как-то так.
Передать можно, для этого и существует конструктор класса. Но у тебя в классе он отсутсвует (не описан).
Почитай про классы, конструкторы классов, деструкторы классов, экземпляры класса.
ADD. вот занимательный "свежачек" попробуйте помочь такому "хотельщику"...
Спасибо, буду дальше мучиться, нашел недостающую } поправил но увы...
весь день ушел а толку ноль, помоги плиз создать библиотек и как ею воспользоваться?
уважаемый, нафига с таким уровнем знаний (нулевым) браться за создание своей библиотеки? Сначала программировать научитесь
уважаемый, нафига с таким уровнем знаний (нулевым) браться за создание своей библиотеки? Сначала программировать научитесь
[/quote]
Вы если помочь можите помогите плиз а если нет проходите мимо. А оченивать чей либо опыт нечего. Или форум нужен чтобы п...и мериться чей код круче типа
Знаете, код достаточно безграмотный (хотя бы вот это).
и я бы не стал делать из него библиотеку.
Но, если Вы хотите, Вам лучше обратиться к его автору - https://community.alexgyver.ru/ Он скорее поможет, чем здесь.
bee73,
Для esp8266 в sdk есть ntp клиент и обертка для его использования в cores/esp8266/time.cpp
Подскажите, почему нет доверия к тому что есть в sdk, не работает или свой код всегда лучше?
Подскажите, почему нет доверия к тому что есть в sdk, не работает или свой код всегда лучше?
Так ТС же объяснил
Прости но я ещё полный 0 делал копипастом с примеров библиотек
При этом, нашёл у кого копипастить :)
от вы все тут твари бездушные, человек, хоть и полный 0, а уже БИБЛИОТЕКУ скопипастить задумал, и ощасливить нас.
от вы все тут твари бездушные, человек ...
https://www.youtube.com/watch?v=RVSWXIquUPA
Добрый день! сам скетч рабочий, да я скопипастил скейч и оставил в нем все необходимое, для цели получения времени и даты.
Нужно было сделать библиотеку, дабы уменьшить объем кода в будущем скейче. Простые библиотеки я создавал когда тренировался (без вложенных функций) а вот с большой библиотекой не получилось, поэтому и обратился к вам за помощью.... цель была передать в библиотеку данные сети а получить строку с временем и датой
Иногда код выходит из под контроля, при наличии исходников отлаживать вызовы хоть как-то возможно, а тут проприетарный кусок кода в собранном виде.
Может он ведет себя неадекватно, вот и спрашивал про это.
bee73, я Вам уже всё сказал в #16. И про рабочий скетч, и про то, к кому Вам лучше обратиться. Вы читаете, что Вам пишут?
читал...
уважаемый (?) lee73 - вы видимо не в курсе, что в аддоне Ардуино для ЕСП уже есть готовая библиотека NTPClient
Весь запрос времени - это несколько строчек вместо фигни, что вы понаписали
спасибо конечно, да я не в курсе но смысл был в том, чтобы не выводить в монитор порта время а получить его для скейча в виде строки для дальнейшего использования, к примеру раз в сутки проабдейтить время на RTS DS1307
Да я конечно понимаю, что многие из вас тут гуру в с++ в ардуино, но ведь и вы наверняка с чего то начинали спрашивали совета. Мне всегда казалось что форумы для этого и существуют, чтобы спросить совета, помощи, от тех кому это не трудно. Перед тем как сюда обратиться я перепробовал создание многих библиотек с примеров в инете и с данного сайта http://arduino.ru/Hacking/LibraryTutorial, трудностей не возникало, но к сожалению не нашел примера использования в библиотеки несколько функций и возврата значений....
спасибо конечно, да я не в курсе но смысл был в том, чтобы не выводить в монитор порта время а получить его для скейча в виде строки
а поменять формат готового времени - это такая серьезная задача, что надо отдельную библиотеку писать? поправить в скетче формат в две-три строчки - без либы никак?
Вы никак не поймете, почему над вами смеются - да потому что в каждой вашей строчке сквозит, что вы программировать неделю назад начали. А уже за библиотеку схватились. Это как недоучив буквы, браться вывески рисовать. А потом народ ходит по улице и видит надпись "Ножь и вилька" и ухохатывается...
Перед тем как сюда обратиться я перепробовал создание многих библиотек с примеров в инете и с данного сайта http://arduino.ru/Hacking/LibraryTutorial, трудностей не возникало, но к сожалению не нашел примера использования в библиотеки несколько функций и возврата значений....
не нужно вам создавать библиотеки. Научитесь программировать, освойтесь с функциями, передачей парметров, типами значений и ссылками и указателями. Потом пройдите классы...
Через год-другой, может быть, дойдете до библиотек. А сейчас у вас вместо библиотеки получится полный шлак. Таких библиотек, которые интересны только автору и от кода которых тошнит - и так в инете навалом.
Вы по своему правы, но вы же знаете для чего нужны библиотеки и функции , как часть чтобы минимизировать основной код, вот и мне не хотелось всю эту портянку в основной код впихивать, хотя как писал выше сам код рабочий трудности с библиотекой возникли.
Да как вариант все можно было вместо библиотеки вывести в функцию к которой обратиться по прерываю или в определенное время с DS1307
мне не хотелось всю эту портянку в основной код впихивать
А и не надо. Можно по разным файлам распихать свои мега-полезные функции и подключать их по мере необходимости. Первые страницы любой книжки по языку Си.
Библиотека не минимизирунт основной код. Иногда наоборот, раздувает из за попытки объять необятное. Если под основным кодом понимать загружаемую в МК программу, а не текст, который на экране. Иногда гораздо полезнее видеть содержимое. А уж сколько раз встречался совет изменить что то в библиотеке.
мне не хотелось всю эту портянку в основной код впихивать
А и не надо. Можно по разным файлам распихать свои мега-полезные функции и подключать их по мере необходимости. Первые страницы любой книжки по языку Си.
можно и не читая книжки, прямо в IDE, создаёшь, можно даже вторым файлом ino - тогда подключать не надо )))
b707 - Ваш скейч позволяет только время и день недели получить, у данной библиотеки https://github.com/arduino-libraries/NTPClient/blob/master/keywords.txt нет метода даты, может посоветуете аналогичную с датой?
Да чо вы все накинулись. ТС даже не знал где исходник «по заимствовал», таких направлять надо, а не гнобить... А недочеты очевидные с опытом исправить можно...
Там есть метод
Получайте секунды переводите в struct tm и форматируйте как угодно.
П.С. Этот метод будет возвращать секунды уже пересчитывая с прошедшими millis
т.е. если вызвать его ещё раз через минуту, он вернет уже другое, актуальное значение.
вот тут https://randomnerdtutorials.com/esp32-ntp-client-date-time-arduino-ide/ вроде похожа на прежний вариант, кто знает как качество библиотеки?
вот тут https://randomnerdtutorials.com/esp32-ntp-client-date-time-arduino-ide/ вроде похожа на прежний вариант, кто знает как качество библиотеки?
bee73 - какое "качество библиотеки" вас интересует? Все NTP сервера выдают текущее время в виде одного единственного числа - в секундах с 1 января 1970г.
Ни один сервер не выдает вам дату или месяц. час или год. Только секунды. Это значение называется EpochTime. Все прочие часы годы и месяцы вы можете получить из этих секунд путем несложных вычислений.
Update - посмотрел эту библиотеку - в ней тоже нет методов для числа, месяца и года - есть только для уже заранее форматированной даты. Но все что нужно, можно подсмотреть в коде и написать самому
вот тут https://randomnerdtutorials.com/esp32-ntp-client-date-time-arduino-ide/ вроде похожа на прежний вариант, кто знает как качество библиотеки?
bee73 - какое "качество библиотеки" вас интересует? Все NTP сервера выдают текущее время в виде одного единственного числа - в секундах с 1 января 1970г.
Ни один сервер не выдает вам дату или месяц. час или год. Только секунды. Это значение называется EpochTime. Все прочие часы годы и месяцы вы можете получить из этих секунд путем несложных вычислений.
Update - посмотрел эту библиотеку - в ней тоже нет методов для числа, месяца и года - есть только для уже заранее форматированной даты. Но все что нужно, можно подсмотреть в коде и написать самому
NTP может иметь разную точность, даже 1 (Одну) микросекунду )))
Странный вопрос о качестве...
4-года назад, автор этой библиотеки сделал форк от оригинальной той самой arduino-libraries/NTPClient.
Добавил метод getFormattedDate, что видимо и принесло ему 30 звезд.
Судя по датам коммитов, забросил библиотеку 2 года назад, а arduino-libraries/NTPClient переодически допиливается.
Пилить продолжают, это или так хреново, что заплатки только успевают ставить, или наоборот, проект представляет какой-то интерес и продолжает развиваться. Лучше конечно второе чем первое.
4-года назад, автор этой библиотеки сделал форк от оригинальной той самой arduino-libraries/NTPClient.
Добавил метод getFormattedDate, что видимо и принесло ему 30 звезд.
Надо, наверно, тоже форкануть и добавить еще методы getDate() getMonth() и getYear() - такая библиотека, судя по интересу ТС - соберет все звезды Гитхаба :)
Получайте секунды переводите в struct tm и форматируйте как угодно.
Вас не затруднит показать как это сделать? секунды перевести в struct tm
struct tm *localtime(const time_t *_timer);
аргумент - указатель на time_t (time_t это такой тип данных, фактически это long, подробнее в types.h), содержащий количество секунд, прошедших с 00:00:00 01/01/1970
Локалтайм стандартный, есть в ман-ах, там-же (на той-же странице) и struct tm
Спасибо. Правильно ли я вас понял. для struct tm нужна библиотека types.h?
Спасибо. Правильно ли я вас понял. для struct tm нужна библиотека types.h?
lee73 - что вы фигней страдаете? - я ж вам подсказл, посмотрите в коде библиотеки NTPClient, как из EpochTime вычислить день месяц и год и скопируйте себе в скетч. Там реально математика на уровне пятого класса
спасибо я уже скопипастил и услышал тут все лестное :) решил идти путем проб и ошибок шаг за шагом, пусть не библиотека а функция у меня получиться с подачей вашего кода, вот только с датой разберусь, тему структоур покурил но так и не понял как они применяются вот и спросил совета, и видимо нужна библиотека types.h
в types.h определен тип данных time_t, он используется в функции locаltime, а struct tm как и функция locаltime объявлены в другом заголовочном файле time.h, который тоже у вас есть.
может немного с запозданием, рекомендую заглянуть по этой ссылке Unix-время
Спасибо. Правильно ли я вас понял. для struct tm нужна библиотека types.h?
Нужна time.h
Она у Вас есть (в поставке IDE) и в самом файле всё подробно описано.
Скажите где узнать, что передать на печать после структуры, не смог найти содержимое types.h
ругается tm_day понятно что такой переменной нет...