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

Появился в версии 7.

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

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

#301

Сообщение anton2 » 14.02.2023{, 23:43}

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

к тому же айдар подтвердил проблему

aidar_i
Полковник
Сообщения: 3122
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#302

Сообщение aidar_i » 16.02.2023{, 07:42}

Почистил от сообщений вне темы.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#303

Сообщение Dryundel » 16.02.2023{, 08:58}

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

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

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

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

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

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

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

Надеюсь все вышесказанное достаточно внятно.

artemka19
Лейтенант
Сообщения: 540
Зарегистрирован: 03.09.2020{, 15:41}
Репутация: 216
Откуда: Питер
Имя: Артем

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

#304

Сообщение artemka19 » 16.02.2023{, 10:57}

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

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

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

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

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

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

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

*я про пользовательский веб интерфейс jeeui
(не про штатный!!!)

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#305

Сообщение Dryundel » 16.02.2023{, 11:04}

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

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

Однако ваш пример не имеет ничего общего с секцией Setup. Динамика возможна только в Loop.
Если я правильно понял вашу идею.
Но и там применение "Блока настроек" может оказаться полезной для решения такой задачи.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

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

#306

Сообщение rw6cm » 16.02.2023{, 13:52}

Что то я потерялся в исходном вопросе..))
Понял что JonyBest, хочет чисто для удобства, вывести параметр из настроек блока на его вход?
И это должно быть в setup?
Здесь есть нюансы.
1.Если это будут входы то обязательно кто то захочет привязать к нему выход, и завалит вопросами почему не работает )))
2.Чтобы передать стринг в констчар нужна дополнительная переменная, так как входы в блоках не имеют собственной переменной.
Стоит ли оно того???
Но здесь я понял идет идет битва за сам принцип "можно ли?"
Предложу свой вариант:
Константы входов через setup.flp
(398.14 КБ) 32 скачивания
для artemka19:
Создаем из настроек блока общую переменную, привязываем к ней вход и данные со входа можно сделать общими для всех блоков.
Win10-64, FLProg (portable)

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#307

Сообщение Dryundel » 16.02.2023{, 14:01}

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

Отправлено спустя 4 минуты 41 секунду:
rw6cm писал(а):
16.02.2023{, 13:52}
Но здесь я понял идет идет битва за сам принцип "можно ли?"
Нет уже никакой битвы. Все порешалось.
Да и вопроса такого изначально не стояло. JonyBest, все вставил без вопросов. Проблема в том, что вход выдает код (String("Вход")), а библиотека требует просто "Вход".

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

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

#308

Сообщение rw6cm » 16.02.2023{, 14:07}

Dryundel писал(а):
16.02.2023{, 14:01}
Подключишься?
пусть попробует вариант выше. в нем нет функций, на выходе const char.
Win10-64, FLProg (portable)

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#309

Сообщение Dryundel » 16.02.2023{, 14:25}

rw6cm писал(а):
16.02.2023{, 13:52}
Предложу свой вариант:
Константы входов через setup.flp
rw6cm писал(а):
16.02.2023{, 14:07}
пусть попробует вариант выше. в нем нет функций, на выходе const char.
Ну попробовать то конечно можно и нужно, на всякий случай. :)
Но подобное уже пробовали.
И да - Serial.print() прекрасно принимает ссылку const char*
А вот функция из библиотеки, которая в проекте, отказывается это делать. Хочет чисто "Privet"
Я уже в виде массива пытался ей строку подсунуть. Нефига не хочет. :no:

artemka19
Лейтенант
Сообщения: 540
Зарегистрирован: 03.09.2020{, 15:41}
Репутация: 216
Откуда: Питер
Имя: Артем

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

#310

Сообщение artemka19 » 16.02.2023{, 14:25}

Dryundel,
проект есть?

Отправлено спустя 5 минут 20 секунд:
Dryundel писал(а):
16.02.2023{, 14:07}
Могу выложить что уже пробовали
желательно

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#311

Сообщение Dryundel » 16.02.2023{, 14:32}

artemka19 писал(а):
16.02.2023{, 14:25}
Dryundel,
проект есть?
Проект чего? Автора вопроса проект?
Здесь он. viewtopic.php?t=6485&start=320#p121196

artemka19
Лейтенант
Сообщения: 540
Зарегистрирован: 03.09.2020{, 15:41}
Репутация: 216
Откуда: Питер
Имя: Артем

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

#312

Сообщение artemka19 » 16.02.2023{, 14:36}

JonyBest писал(а):
26.01.2023{, 21:53}
Доброго времени! Подскажите как использовать вход String в редакторе, чтобы в setup в коде получилось ("Вход"), а не (String("Вход")).
Беда в том, что нужно значение типа constchar. А str.c_str() работает только в Loop
тут нет проекта)

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#313

Сообщение Dryundel » 16.02.2023{, 14:40}

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

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

Отправлено спустя 1 час 6 минут 1 секунду:
artemka19 писал(а):
16.02.2023{, 14:31}
Dryundel,
проект есть?

Отправлено спустя 5 минут 20 секунд:
Dryundel писал(а):
16.02.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
Проект автора вопроса JonyBest, двумя страницами ранее. Скачать проект esp32_test34.rar

Отправлено спустя 2 минуты 41 секунду:
Корифеи С++, подключайтесь ! :smile236:

artemka19
Лейтенант
Сообщения: 540
Зарегистрирован: 03.09.2020{, 15:41}
Репутация: 216
Откуда: Питер
Имя: Артем

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

#314

Сообщение artemka19 » 16.02.2023{, 16:09}


JonyBest
Сержант
Сообщения: 269
Зарегистрирован: 18.11.2015{, 22:42}
Репутация: 89
Откуда: Близко к Ставрополю
Имя: Евгений

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

#315

Сообщение JonyBest » 16.02.2023{, 19:26}

rw6cm писал(а):
16.02.2023{, 13:52}
Предложу свой вариант:
Константы входов через setup.flp
Извините, только добрался до компьютера.
Этот вариант рабочий. Всё отрабатывает как надо.
Единственный минус этого варианта, как мне кажется, теряется смысл входа. Проще тогда сразу работать с переменной...
Последний раз редактировалось JonyBest 16.02.2023{, 20:30}, всего редактировалось 1 раз.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#316

Сообщение Dryundel » 16.02.2023{, 20:03}

JonyBest писал(а):
16.02.2023{, 19:26}
Этот вариант рабочий. Всё отрабатывает как надо.
rw6cm, снимаю шляпу! Изображение

aidar_i
Полковник
Сообщения: 3122
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#317

Сообщение aidar_i » 19.05.2023{, 17:52}

В новом редакторе в списке параметров есть Массив, который дает возможность легко работать с массивом, создаваемым штатными блоками из редактора ПБ. Но нет Структуры, что облегчило бы работу штатных структур с ПБ. Столкнулся при создании ПБ ESP_NOW. При наличии его, можно было бы легко создавать входы и выходы для ПБ из штатного блока в нужном количестве. Штатный блок сам дает имя структуре и переменным , а не те которые вы указываете.

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

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

#318

Сообщение Phazz » 19.05.2023{, 18:22}

Согласен, структуры иногда бы очень пригодились.

vlad1451
Сержант
Сообщения: 133
Зарегистрирован: 06.09.2019{, 19:23}
Репутация: 7
Имя: Владимир

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

#319

Сообщение vlad1451 » 28.07.2023{, 12:54}

Начал изучать новый редактор, столкнулся с проблемой. Создаю мультиблок из нескольких блоков. Несколько блоков имеют одинаковые по названиям параметры. Чтобы не плодить названия типа цвет_1, цвет_2, цвет_3 и т.д, можно как то параметры привязать к конкретным блокам? Или всё же придётся делать разные названия?

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

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

#320

Сообщение AlexCrane » 28.07.2023{, 14:09}

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

Ответить

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