Новый редактор для создания пользовательских блоков.

Создаем свой блок. Вопросы, помощь знатоков.
anton2
Рядовой
Сообщения: 9
Зарегистрирован: 31 окт 2021, 21:27
Имя: Антон

Новый редактор для создания пользовательских блоков.

Сообщение anton2 »

ecoins писал(а): 14 фев 2023, 05:50 блоки FLProg в режиме setup() не принимают входных данных
я так понял что вопрос был именно в этом и вам ответили что это так но с определенными условиями.
вы в ответ не согласились и оскорбились на это уточнение7

к тому же айдар подтвердил проблему
aidar_i
Полковник
Сообщения: 3357
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 13 раз
Поблагодарили: 100 раз
Контактная информация:

Новый редактор для создания пользовательских блоков.

Сообщение aidar_i »

Почистил от сообщений вне темы.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2412
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 20 раз

Новый редактор для создания пользовательских блоков.

Сообщение Dryundel »

aidar_i писал(а): 16 фев 2023, 07:42 Почистил от сообщений вне темы.
Отлично. Спасибо.
Немного поправил.
Сейчас продолжим.
Я отвечу на все "каверзные" вопросы и реплики по поводу вставки параметра со входа и станет понятна вся обсурдность данной ситуации.

Отправлено спустя 1 час 8 минут 50 секунд:
Начнем
anton2 писал(а): 14 фев 2023, 23:44
ecoins писал(а): 14 фев 2023, 05:50 блоки FLProg в режиме setup() не принимают входных данных
я так понял что вопрос был именно в этом и вам ответили что это так но с определенными условиями.
вы в ответ не согласились и оскорбились на это уточнение7

к тому же айдар подтвердил проблему
.
Во первых, Айдар ничего такого не подтверждал. Он писал совсем про другое. Читайте внимательно.

Теперь по существу.
Да, вопрос был именно в этом. И утверждение это, как Вы можете заметить является категоричным относительно секции Setup. Никаких оговорок про общий код не было.
Однако и про общий код мы рассмотрим вопрос чуть дальше.
artemka19 писал(а): 14 фев 2023, 21:02 вопрос то какой был: можно ли вход в секции setup?
ответ: 50х50.
Эта реплика из удаленного сообщения. (Удалено оно по другой причине. Далее следуют оскорбления. Поэтому восстанавливать не буду)
Так вот утверждение "ответ: 50х50." Не имеет вообще смысла, потому что...
Автор программы изначально сделал запрет на использование тега входа в разделе "Общий код".
Давайте разберемся почему.
Предположим такое разрешение есть. Мы вставляем вход и этот вход появляется во всех экземплярах блока в проекте. Но значение то подаваемое на этот вход должно быть общим для всех экземпляров, потому как находится в общем коде.
Абсурд в том, что у общего значения, в этом случае появляется несколько реплик, ведь у каждого экземпляра будет свой "общий вход".

Небольшое отступление в связи с этой репликой. (она тоже из удаленного поста, но в нем много лишнего не по теме)
anton2 писал(а): 15 фев 2023, 00:12 а если нету нескольких экземпляров?
А если нету нескольких экземпляров, то и общий код не нужен. Общий, он на то и общий, что должен распространяться на все экземпляры.

Остался не закрытым вопрос, как же сделать общие настройки со входа блока.
А очень просто. Надо создать в пакете блоков "Блок настроек" и установить чекбокс "использовать один раз".
И уже в этом блоке в коде экземпляра вставлять общие настройки. А для применения этих настроек в рабочих блоках, можно например использовать тег "Идентификатор мультиблока" <MB.UUID>, если это требуется.

Вы можете сказать, что в этом случае надо будет обязательно вытаскивать "Блок настроек" раньше рабочих блоков. Иначе последовательность кода будет нарушена. Но и это не так.
В секции Setup есть разделы "Начало секции" и "Конец секции". И если правильно воспользоваться ими, то "Блок настроек" может находиться в любом месте проекта и на последовательность кода относительно рабочих блоков это не повлияет.

Надеюсь все вышесказанное достаточно внятно.
artemka19
Лейтенант
Сообщения: 540
Зарегистрирован: 03 сен 2020, 15:41
Откуда: Питер
Имя: Артем
Поблагодарили: 1 раз

Новый редактор для создания пользовательских блоков.

Сообщение artemka19 »

[ref=#ff8000]Dryundel[/ref],
берем много (100-200-300-400) элементов для веб интерфейса к примеру.

нам нужно везде одинаковый цвет выставить.

на всех 100-200-300-400.

Вот тут бы как раз и пригодился вход в сетапе.

Отправлено спустя 1 минуту 52 секунды:
сейчас это приходится ручками для каждого из 100-200-300-400 элементов делать)))

ты скажешь - используй общий параметр!

Но в этом случае мы теряем динамичность смены цвета.

*я про пользовательский веб интерфейс jeeui
(не про штатный!!!)
Аватара пользователя
Dryundel
Полковник
Сообщения: 2412
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 20 раз

Новый редактор для создания пользовательских блоков.

Сообщение Dryundel »

artemka19 писал(а): 16 фев 2023, 10:58 ты скажешь - используй общий параметр!

Но в этом случае мы теряем динамичность смены цвета.
Нет. Я скажу используй "Блок настроек". (читай выше).

Однако ваш пример не имеет ничего общего с секцией Setup. Динамика возможна только в Loop.
Если я правильно понял вашу идею.
Но и там применение "Блока настроек" может оказаться полезной для решения такой задачи.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Новый редактор для создания пользовательских блоков.

Сообщение rw6cm »

Что то я потерялся в исходном вопросе..))
Понял что [ref]JonyBest[/ref], хочет чисто для удобства, вывести параметр из настроек блока на его вход?
И это должно быть в setup?
Здесь есть нюансы.
1.Если это будут входы то обязательно кто то захочет привязать к нему выход, и завалит вопросами почему не работает )))
2.Чтобы передать стринг в констчар нужна дополнительная переменная, так как входы в блоках не имеют собственной переменной.
Стоит ли оно того???
Но здесь я понял идет идет битва за сам принцип "можно ли?"
Предложу свой вариант:
Константы входов через setup.flp
для [ref]artemka19[/ref]:
Создаем из настроек блока общую переменную, привязываем к ней вход и данные со входа можно сделать общими для всех блоков.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
Аватара пользователя
Dryundel
Полковник
Сообщения: 2412
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 20 раз

Новый редактор для создания пользовательских блоков.

Сообщение Dryundel »

rw6cm писал(а): 16 фев 2023, 13:52 2.Чтобы передать стринг в констчар нужна дополнительная переменная, так как входы в блоках не имеют собственной переменной.
Стоит ли оно того???
Ну вот есть у человека такая потребность. :) Почему бы и нет.
Однако никаким способом это пока не получилось в данном случае. Ну не хочет функция принимать ссылку типа cons char* и все тут. В простых тестах все работает, а здесь нет. Могу выложить что уже пробовали. Подключишься?

Отправлено спустя 4 минуты 41 секунду:
rw6cm писал(а): 16 фев 2023, 13:52 Но здесь я понял идет идет битва за сам принцип "можно ли?"
Нет уже никакой битвы. Все порешалось.
Да и вопроса такого изначально не стояло. [ref]JonyBest[/ref], все вставил без вопросов. Проблема в том, что вход выдает код (String("Вход")), а библиотека требует просто "Вход".
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Новый редактор для создания пользовательских блоков.

Сообщение rw6cm »

Dryundel писал(а): 16 фев 2023, 14:01 Подключишься?
пусть попробует вариант выше. в нем нет функций, на выходе const char.
Win10-64, FLProg (portable)
Аватара пользователя
Dryundel
Полковник
Сообщения: 2412
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 20 раз

Новый редактор для создания пользовательских блоков.

Сообщение Dryundel »

rw6cm писал(а): 16 фев 2023, 13:52 Предложу свой вариант:
Константы входов через setup.flp
rw6cm писал(а): 16 фев 2023, 14:07 пусть попробует вариант выше. в нем нет функций, на выходе const char.
Ну попробовать то конечно можно и нужно, на всякий случай. :)
Но подобное уже пробовали.
И да - Serial.print() прекрасно принимает ссылку const char*
А вот функция из библиотеки, которая в проекте, отказывается это делать. Хочет чисто "Privet"
Я уже в виде массива пытался ей строку подсунуть. Нефига не хочет. :no:
artemka19
Лейтенант
Сообщения: 540
Зарегистрирован: 03 сен 2020, 15:41
Откуда: Питер
Имя: Артем
Поблагодарили: 1 раз

Новый редактор для создания пользовательских блоков.

Сообщение artemka19 »

[ref=#ff8000]Dryundel[/ref],
проект есть?

Отправлено спустя 5 минут 20 секунд:
Dryundel писал(а): 16 фев 2023, 14:07 Могу выложить что уже пробовали
желательно
Аватара пользователя
Dryundel
Полковник
Сообщения: 2412
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 20 раз

Новый редактор для создания пользовательских блоков.

Сообщение Dryundel »

artemka19 писал(а): 16 фев 2023, 14:25 [ref=#ff8000]Dryundel[/ref],
проект есть?
Проект чего? Автора вопроса проект?
Здесь он. viewtopic.php?t=6485&start=320#p121196
artemka19
Лейтенант
Сообщения: 540
Зарегистрирован: 03 сен 2020, 15:41
Откуда: Питер
Имя: Артем
Поблагодарили: 1 раз

Новый редактор для создания пользовательских блоков.

Сообщение artemka19 »

JonyBest писал(а): 26 янв 2023, 21:53 Доброго времени! Подскажите как использовать вход String в редакторе, чтобы в setup в коде получилось ("Вход"), а не (String("Вход")).
Беда в том, что нужно значение типа constchar. А str.c_str() работает только в Loop
тут нет проекта)
Аватара пользователя
Dryundel
Полковник
Сообщения: 2412
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 20 раз

Новый редактор для создания пользовательских блоков.

Сообщение Dryundel »

artemka19 писал(а): 16 фев 2023, 14:36 тут нет проекта)
Не тот пост смотришь. Ищи esp32_test34.rar

PS
Блин я вижу форум немного по другому. И ссылки на конкретные посты другие получаются.
Не задумывался над этим. Какой то баг форума.

Отправлено спустя 1 час 6 минут 1 секунду:
artemka19 писал(а): 16 фев 2023, 14:31 [ref=#ff8000]Dryundel[/ref],
проект есть?

Отправлено спустя 5 минут 20 секунд:
Dryundel писал(а): 16 фев 2023, 14:07 Могу выложить что уже пробовали
желательно
.
Итак, задача в следующем:
Вход блока создает в скетче следующий код String("Privet")
Однако функция используемой библиотеки принимает только формат const char в виде "Privet"

Требуется из входного String("Privet") сделать "Privet"

Предпринималось следующее:

1.

Код: Выделить всё

void setup() {
    String tempString = <Вход>;   //В скетче будет    String tempString = (String("Privet"));
    const char *charString = tempString.c_str();
    device.setName(charString);
   } 
.
2.

Код: Выделить всё

void setup()
{
    String str = <Вход>; //В скетче будет    String str = (String("Privet"));
    char buf[20];
    str.toCharArray(buf , str.length()+1);
    device.setName(buf);
}
В обоих вариантах, если отослать такую переменную в Serial, то все работает
Типа так

Код: Выделить всё

setName(const char* name)
{
    Serial.println(name);
}
.
В библиотеке функция выглядит так и принимать все кроме "Privet" отказывается.

Код: Выделить всё

void HADevice::setName(const char* name)
{
    _serializer->set(AHATOFSTR(HANameProperty), name);
}
.
Библиотека здесь https://github.com/dawidchyrzynski/ardu ... -assistant
Проект автора вопроса [ref]JonyBest[/ref], двумя страницами ранее. Скачать проект esp32_test34.rar

Отправлено спустя 2 минуты 41 секунду:
Корифеи С++, подключайтесь ! :smile236:
artemka19
Лейтенант
Сообщения: 540
Зарегистрирован: 03 сен 2020, 15:41
Откуда: Питер
Имя: Артем
Поблагодарили: 1 раз

Новый редактор для создания пользовательских блоков.

Сообщение artemka19 »

JonyBest
Сержант
Сообщения: 269
Зарегистрирован: 18 ноя 2015, 22:42
Откуда: Близко к Ставрополю
Имя: Евгений
Поблагодарили: 2 раза

Новый редактор для создания пользовательских блоков.

Сообщение JonyBest »

rw6cm писал(а): 16 фев 2023, 13:52 Предложу свой вариант:
Константы входов через setup.flp
Извините, только добрался до компьютера.
Этот вариант рабочий. Всё отрабатывает как надо.
Единственный минус этого варианта, как мне кажется, теряется смысл входа. Проще тогда сразу работать с переменной...
Последний раз редактировалось JonyBest 16 фев 2023, 20:30, всего редактировалось 1 раз.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2412
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 20 раз

Новый редактор для создания пользовательских блоков.

Сообщение Dryundel »

JonyBest писал(а): 16 фев 2023, 19:26 Этот вариант рабочий. Всё отрабатывает как надо.
[ref=#ff8000]rw6cm[/ref], снимаю шляпу! Изображение
aidar_i
Полковник
Сообщения: 3357
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 13 раз
Поблагодарили: 100 раз
Контактная информация:

Новый редактор для создания пользовательских блоков.

Сообщение aidar_i »

В новом редакторе в списке параметров есть Массив, который дает возможность легко работать с массивом, создаваемым штатными блоками из редактора ПБ. Но нет Структуры, что облегчило бы работу штатных структур с ПБ. Столкнулся при создании ПБ ESP_NOW. При наличии его, можно было бы легко создавать входы и выходы для ПБ из штатного блока в нужном количестве. Штатный блок сам дает имя структуре и переменным , а не те которые вы указываете.
Аватара пользователя
Phazz
Полковник
Сообщения: 3114
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 231 раз
Поблагодарили: 110 раз

Новый редактор для создания пользовательских блоков.

Сообщение Phazz »

Согласен, структуры иногда бы очень пригодились.
vlad1451
Сержант
Сообщения: 184
Зарегистрирован: 06 сен 2019, 19:23
Имя: Владимир
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Новый редактор для создания пользовательских блоков.

Сообщение vlad1451 »

Начал изучать новый редактор, столкнулся с проблемой. Создаю мультиблок из нескольких блоков. Несколько блоков имеют одинаковые по названиям параметры. Чтобы не плодить названия типа цвет_1, цвет_2, цвет_3 и т.д, можно как то параметры привязать к конкретным блокам? Или всё же придётся делать разные названия?
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

Новый редактор для создания пользовательских блоков.

Сообщение AlexCrane »

[ref]vlad1451[/ref], Добавь к переменной UIID (идентификатор экземпляра). Есть кнопка такая в редакторе
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Ответить

Вернуться в «Разработка пользовательских блоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей