Официальный сайт компании Arduino по адресу arduino.cc
Возьму 30 мин консультацию по программированию
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пт, 17/04/2020 - 02:15
Приветствую, друзья!
ESP8266. MQTT. Скопипэстил рабочий скетч. Немного доработал, все работает. Несколько моментов в коде непонятны (напр Callback как таковой). Хочется досконально разобраться, в связи с чем и ищу доброжелательного грамотного форумчанина.
пс Без петросянщины за 5000$ в час
"Досконально разобраться" и "30 минут" это не слишком совместимые понятия.
Приветствую, друзья!
ESP8266. MQTT. Скопипэстил рабочий скетч. Немного доработал, все работает. Несколько моментов в коде непонятны (напр Callback как таковой). Хочется досконально разобраться, в связи с чем и ищу доброжелательного грамотного форумчанина.
пс Без петросянщины за 5000$ в час
А интернет не помог не тему коллбэка ? Не мудрите, конкретнее пишите, что вам нужно. Может это вообще будет бесплатно. Совет например...
Да не только насчет колбека.Досконально разобраться всего с 3-5 не до конца понятными строчками кода. Интернет помог частично - могу сыпать запомненными терминами, готовыми ответами, а полного понимания нет, но очень хочется. :) Я накопил и выписал на бумажку непонятные вещи. Пока 4 вопросика :) Поэтому и хочется 30-60 минуточек в качестве очного диалога. Чтобы побыстрее двигаться дальше. Это как в играх - можно нудно качаться полгода забесплатно, а можно взять премиум и начать получать удовольствие :)
Пока 4 вопросика :) Поэтому и хочется 30-60 минуточек в качестве очного диалога. Чтобы побыстрее двигаться дальше.
нереально это. За 30 минут чтения книги можжно узнать раза в 3 больше, чем за полчаса болтовни.
Если вы уже сформулировали вопросы - вот как сформулировали, там в гугль и забивайте. Вероятность получить ответ весьма велика...
да пиши ты свои вопросы тут, не стесняйся. Мы гнобим тех, кто "20 языков на профессорском уровне" знает. А тех, кто честно говорит - "не понял", мы не обижаем! ;))
Так шо за вопросы? Задавай здесь, если ответы не помогут - тогда уже можно будет переходить на следующий этап.
По поводу коллбэка: представь, есть тёмная комната, в которой внутри что-то происходит. Есть верёвочка, которую закинули в окошко, на другом конце верёвочки - колокольчик. Как только кому-то внутри комнаты надо обозначить что-то - он дёргает за твою верёвочку, и колокольчик звенит.
Давая такую верёвочку в тёмную комнату - ты получаешь звон колокольчика, при этом тебе неважно, что творится в комнате, тебе важно, что колокольчик будет звонить. Колокольчик прозвенел два раза - в комнате перекур, три раза - в комнате обед, один раз - там клеят обои.
Так вот, верёвочка - это коллбэк, а звон колокольчика - переданные в него параметры.
Как я понял, огромный плюс колбека в том, что одна функция передает результаты во вторую. Причем вторая не тратит время на ожидание, и запускается только тогда, когда ей передают результат. Если пишу код сам, то понимаю, что и зачем хочу сделать. А вот чужой посложнее. Если стоят коменты, или функция названа бла бла callback, то вопросов не возникает. А вот если нет, я не пойму - где просто функция с несколькими аргументами, а где callback. И ступор. Пока для понимания пытаюсь так. Именно пытаюсь. Сделать функцию мигания светодиодом. Специально именно на delay побольше, бех millis, чтобы программа останавливалась. Вторая функция - что-то написать в порт. В этом случае ведь разумно применить колбэк? То есть мигаем диодом и тормозим, а по выполнении запускаем вторую печать в порт.
Wrongbee13 - вы это вообще спрашиваете или применительно только к WebClient на ESP8266?
Если вопрос про PubSubClient.h - то определить калбек очень просто - им может стать любая ваша процедура, адрес которой вы передадите методу setCallback()
Но почему-то мне кажется, что вы думаете , что коллбек - это такой особый тип функций, доступный в ардуино или ЕСП8266 - тогда вы ошибаетесь, по умолчанию такого мезанизма нет, вы его должны написать сами
Коллбэк - это всего лишь инструмент. И можно обойтись и без него, в принципе. Просто там, где это архитектурно оправдано, механизм обратных вызовов - очень удобен. В некоторых языках программирования (например, JavaScript) - там всё на коллбэках замешано, и без них - паровозик просто не поедет.
Что касается вашего примера - неудачный пример, там коллбэк не нужен. Коллбэк чаще применяют для асинхронных вызовов, например: вы передали указатель на вашу функцию в метод класса, который что-то там получает из сети. И как только он получит данные - он вызовет ваш коллбэк. Когда это будет - неизвестно: через секунду, через минуту, через час. Но это - будет.
Это, на мой взгляд, совершенно оправданный use case использования механизма коллбэков. Конечно, их можно применять так, как душа пожелает, например:
Уважаемый ТС - идите в песочницу и скажите "скопирастил скетч, и хочу сделать то-то, но не получается". После обычных "обратись к создателю" пойдут нормальные комментарии (если у Вас хватит терпения). На онлайн согласятся или мошенники (они потребуют деньги вперед) или безбашенные. Ведь Вы всегда можете сказать, что было дано недостаточно информации...
Друзья, спасибо! Действительно код был, где PubSubClient. Но мне настолько понравилась красота реализации, что захотелось копнуть поглубже и взять себе в арсенал