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

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

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

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

#201

Сообщение Dryundel » 20.02.2022{, 18:36}

Naladchik писал(а):
20.02.2022{, 18:12}
Ну так это же реализовано.
Или не о том?
Верно. Не о том. :)
Я же привел пример штатного дисплея. Как сделать так же.
Ну вот создал я блок дисплея. В его экземплярах входы ввода строки. Таких экземпляров много и все они имеют один адрес, одно количество строк... и т.д.
Внимание вопрос!
Как подключить второй дисплей? :smile14:
Убьюсьведьгалавойапстену.

Отправлено спустя 7 минут 47 секунд:
support, помоги! Пожалуйста.

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

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

#202

Сообщение aidar_i » 21.02.2022{, 07:02}

Naladchik писал(а):
20.02.2022{, 18:12}
Как подключить второй дисплей?
Убьюсьведьгалавойапстену.
Мне кажется, параметры помогут. Позже посмотрю.

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

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

#203

Сообщение Dryundel » 25.02.2022{, 21:15}

Dryundel писал(а):
20.02.2022{, 11:44}
Требуется сделать так, чтобы одна группа экземпляров подчинялась одним общим настройкам, а другая группа экземпляров соответственно другим. И можно было выбирать к какой группе относится экземпляр.
...
Рассуждая логически, в редакторе не хватает еще одной ступеньки иерархии, типа "Экземпляр мультиблока"
Но может кто то придумал костыль?
aidar_i, Naladchik, вероятно нормального решения пока не существует.
Господа, я нашел костыль! :smile427:
Если имеющийся в проекте такой блок сохранить в библиотеку ПБ с новым именем (достаточно изменить одну букву). Хотя и букву менять не обязательно. Нужно только для отличия. Тогда в библиотеке будут два идентичных блока. Фишка в том, что общие параметры этих клонов можно сделать разными.
Костыль? - Да.
Кривой? - еще какой кривой.
Но работает! :D

support, и все же, это не есть достойное программы FLProg решение. Я не унялся. :)
Этот костыль снимает ограничение на использование блоков один раз. А это не есть хорошо.

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

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

#204

Сообщение Dryundel » 26.02.2022{, 09:45}

support, есть предложение по вышеобозначенному вопросу.
Dryundel писал(а):
20.02.2022{, 18:44}
Ну вот создал я блок дисплея. В его экземплярах входы ввода строки. Таких экземпляров много и все они имеют один адрес, одно количество строк... и т.д.
Внимание вопрос!
Как подключить второй дисплей?
А что если добавить в редактор еще один тип параметра? Ну типа "Модификатор идентификатора мультиблока". Ведь, на сколько я понимаю, общие параметры привязываются именно к идентификатору мультиблока.
Идея конечно сырая и мне неизвестна вся логика FLProg, но предлагаю как направление к решению вопроса.

Отправлено спустя 10 минут 30 секунд:
Модификатор идентификатора - это конечно техническое название типа параметра, для понимания идеи. Рабочим названием может быть к примеру "Экземпляр мультиблока". Надо еще подумать. :)
Такое добавление не должно влиять на работу блоков созданных в предыдущих версиях.

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

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

#205

Сообщение Phazz » 26.02.2022{, 10:00}

Я это делал вводя параметр id чтобы развести блоки

Аватара пользователя
support
Супермодератор
Сообщения: 1900
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 787
Откуда: Астрахань
Имя: Сергей
Контактная информация:

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

#206

Сообщение support » 26.02.2022{, 10:29}

Dryundel писал(а):
26.02.2022{, 09:55}
support, есть предложение по вышеобозначенному вопросу.
Dryundel писал(а):
20.02.2022{, 18:44}
Ну вот создал я блок дисплея. В его экземплярах входы ввода строки. Таких экземпляров много и все они имеют один адрес, одно количество строк... и т.д.
Внимание вопрос!
Как подключить второй дисплей?
А что если добавить в редактор еще один тип параметра? Ну типа "Модификатор идентификатора мультиблока". Ведь, на сколько я понимаю, общие параметры привязываются именно к идентификатору мультиблока.
Идея конечно сырая и мне неизвестна вся логика FLProg, но предлагаю как направление к решению вопроса.

Отправлено спустя 10 минут 30 секунд:
Модификатор идентификатора - это конечно техническое название типа параметра, для понимания идеи. Рабочим названием может быть к примеру "Экземпляр мультиблока". Надо еще подумать. :)
Такое добавление не должно влиять на работу блоков созданных в предыдущих версиях.
Такой идентификатор есть, и он называется "Идентификатор инстанса". Он уникальный для каждого экземпляра блока вытаскиваемого ра схему.
Автор программы FLProg.

Аватара пользователя
support
Супермодератор
Сообщения: 1900
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 787
Откуда: Астрахань
Имя: Сергей
Контактная информация:

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

#207

Сообщение support » 26.02.2022{, 10:33}

Dryundel писал(а):
25.02.2022{, 21:15}
Dryundel писал(а):
20.02.2022{, 11:44}
Требуется сделать так, чтобы одна группа экземпляров подчинялась одним общим настройкам, а другая группа экземпляров соответственно другим. И можно было выбирать к какой группе относится экземпляр.
...
Рассуждая логически, в редакторе не хватает еще одной ступеньки иерархии, типа "Экземпляр мультиблока"
Но может кто то придумал костыль?
aidar_i, Naladchik, вероятно нормального решения пока не существует.
Господа, я нашел костыль! :smile427:
Если имеющийся в проекте такой блок сохранить в библиотеку ПБ с новым именем (достаточно изменить одну букву). Хотя и букву менять не обязательно. Нужно только для отличия. Тогда в библиотеке будут два идентичных блока. Фишка в том, что общие параметры этих клонов можно сделать разными.
Костыль? - Да.
Кривой? - еще какой кривой.
Но работает! :D

support, и все же, это не есть достойное программы FLProg решение. Я не унялся. :)
Этот костыль снимает ограничение на использование блоков один раз. А это не есть хорошо.
Кроме того можно создавать группы блоков и для этих групп создавать собственнные наборы параметров, условий, общего кода
Автор программы FLProg.

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

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

#208

Сообщение Dryundel » 26.02.2022{, 11:00}

Phazz писал(а):
26.02.2022{, 10:00}
Я это делал вводя параметр id чтобы развести блоки
support писал(а):
26.02.2022{, 10:29}
Такой идентификатор есть, и он называется "Идентификатор инстанса". Он уникальный для каждого экземпляра блока вытаскиваемого ра схему.
support писал(а):
26.02.2022{, 10:33}
Кроме того можно создавать группы блоков и для этих групп создавать собственнные наборы параметров, условий, общего кода
Phazz, support, похоже что вы не понимаете о чем я говорю. Согласен вопрос как бы размазан в нескольких постах, хотя я описывал проблему достаточно внятно в одном из них.
Попробую еще раз.
=====================================
Вот есть ПБ, можно создавать много инстансов этого блока. Понятно, что идентификатор инстанса у каждого будет свой и путаницы не будет. У этой группы инстансов есть параметры инстансов и общий параметр (к примеру Serial0). Этот общий параметр можно настроить из любого инстанса и он поменяется сразу во всех.

Теперь я хочу создать в проекте другую группу инстансов такого же блока но она (эта новая группа) должна работать с Software Serial. Идентификаторы инстансов в этом случае не помогут, т.к. Serial является общим параметрам и подчинен идентификатору мультиблока.
И какие бы ухищрения я не использовал, не удастся в проекте заставить одну группу инстансов работать с Serial0 а другую с Software Serial, т.к. общая настройка применится ко всем инстансам.

Я приводил пример штатного блока "Дисплей". В нем можно создать "Дисплей №2" и идентифицировать инстансы по этому параметру. У дисплея 1 и 2 разные адреса, колич.строк, столбцов и прочее. Группы инстансов в данном случае подчиняются одной или другой общей настройке.
В Редакторе ПБ такого инструмента нет. А хотелось бы.

Аватара пользователя
support
Супермодератор
Сообщения: 1900
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 787
Откуда: Астрахань
Имя: Сергей
Контактная информация:

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

#209

Сообщение support » 26.02.2022{, 15:45}

Dryundel писал(а):
26.02.2022{, 11:00}
Phazz писал(а):
26.02.2022{, 10:00}
Я это делал вводя параметр id чтобы развести блоки
support писал(а):
26.02.2022{, 10:29}
Такой идентификатор есть, и он называется "Идентификатор инстанса". Он уникальный для каждого экземпляра блока вытаскиваемого ра схему.
support писал(а):
26.02.2022{, 10:33}
Кроме того можно создавать группы блоков и для этих групп создавать собственнные наборы параметров, условий, общего кода
Phazz, support, похоже что вы не понимаете о чем я говорю. Согласен вопрос как бы размазан в нескольких постах, хотя я описывал проблему достаточно внятно в одном из них.
Попробую еще раз.
=====================================
Вот есть ПБ, можно создавать много инстансов этого блока. Понятно, что идентификатор инстанса у каждого будет свой и путаницы не будет. У этой группы инстансов есть параметры инстансов и общий параметр (к примеру Serial0). Этот общий параметр можно настроить из любого инстанса и он поменяется сразу во всех.

Теперь я хочу создать в проекте другую группу инстансов такого же блока но она (эта новая группа) должна работать с Software Serial. Идентификаторы инстансов в этом случае не помогут, т.к. Serial является общим параметрам и подчинен идентификатору мультиблока.
И какие бы ухищрения я не использовал, не удастся в проекте заставить одну группу инстансов работать с Serial0 а другую с Software Serial, т.к. общая настройка применится ко всем инстансам.

Я приводил пример штатного блока "Дисплей". В нем можно создать "Дисплей №2" и идентифицировать инстансы по этому параметру. У дисплея 1 и 2 разные адреса, колич.строк, столбцов и прочее. Группы инстансов в данном случае подчиняются одной или другой общей настройке.
В Редакторе ПБ такого инструмента нет. А хотелось бы.
Да похоже сразу не понял проблемму. Теперь ясно чего наддо. Но честно говоря даже пока не предстваляю как технически это реализовать. Но буду думать......
Автор программы FLProg.

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

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

#210

Сообщение Dryundel » 26.02.2022{, 18:37}

support писал(а):
26.02.2022{, 15:45}
Да похоже сразу не понял проблемму. Теперь ясно чего наддо. Но честно говоря даже пока не предстваляю как технически это реализовать. Но буду думать......
support, как вариант:
Добавить класс параметра "Инстанс мультиблока".
Этот параметр может добавлять введенное значение к идентификатору мультиблока.
Инстанс мультиблокаПоказать
2022-02-26_183050.jpg
2022-02-26_183050.jpg (24.36 КБ) 941 просмотр

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

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

#211

Сообщение Phazz » 27.02.2022{, 11:25}

Dryundel, Если только делать это через main блок в котором конфигурируется дисплей, а данные слать уже через отдельные блоки

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

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

#212

Сообщение Dryundel » 27.02.2022{, 16:39}

Phazz писал(а):
27.02.2022{, 11:25}
Dryundel, Если только делать это через main блок в котором конфигурируется дисплей, а данные слать уже через отдельные блоки
Все эти main блоки, это пережитки. Горькое наследие базового редактора.
Да и это не поможет. Ну как с помощью main блока настроить два UART ? Как сделать так, что бы часть подчиненных блоков работала с Serial0, а другая часть с Serial Software?
Может я чего то просто не догоняю? Допускаю и такое.
Если это возможно - покажите, научите пожалуйста.

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

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

#213

Сообщение Phazz » 27.02.2022{, 16:54}

Dryundel, нужен именно serial? Или дисплей тоже подойдёт?

Отправлено спустя 1 час 18 минут 45 секунд:
Конечно не так удобно, но жить с этим можно
Вложения
Блок UART.flp
(292.32 КБ) 45 скачиваний

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

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

#214

Сообщение Phazz » 27.02.2022{, 19:39}

А вот чего действительно иногда не хватает, так это вставки кода из блока в общую функцию в мультиблоке

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

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

#215

Сообщение Dryundel » 27.02.2022{, 21:56}

Phazz писал(а):
27.02.2022{, 19:37}
Dryundel, нужен именно serial? Или дисплей тоже подойдёт?

Отправлено спустя 1 час 18 минут 45 секунд:
Конечно не так удобно, но жить с этим можно
Вроде ничего вариант. Надо помозговать над ним. Спасибо.

Отправлено спустя 4 минуты 5 секунд:
Phazz писал(а):
27.02.2022{, 19:39}
А вот чего действительно иногда не хватает, так это вставки кода из блока в общую функцию в мультиблоке
Не понял. А в чем проблема? Делаешь функцию в общем коде в самых верхних "Основных настройках" и пользуешься этой функцией из любого экземпляра мультиблокаблока.
Или я чего не понял в проблеме?

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

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

#216

Сообщение Phazz » 27.02.2022{, 22:25}

Вот у меня есть несколько блоков в мультиблоке. И каждый блок должен дописать свой кусочек кода в общую функцию. Может я просто не вижу как это сделать? Хочу перенести Gayver Portal в флпрог. А там собирается интерфейс в общей функции из которой он собирается.

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

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

#217

Сообщение Dryundel » 27.02.2022{, 22:59}

Phazz, понял проблему.
Совсем недавно решал подобную. Каждый инстанс должен был вставить в общий код кусок строки. И этот общий код должен был запуститься один раз при старте МК. Эту задачу я решил.
Нужна конкретика, что должен вставить блок в общую функцию? Конкретно какой код?

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

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

#218

Сообщение Phazz » 28.02.2022{, 07:19}

Dryundel, Хочется реализовать вот это в флпрог
https://github.com/GyverLibs/GyverPorta ... 37b2#build

Отправлено спустя 58 минут 9 секунд:
Есть один способ, не задокументированная фича. Если не зарыть скобкой общую функцию а в блоках в функциях не открывать новую а писать дальше то этот код дописывается в конце и автоматически закрывается. Но эта фича работает только с одной функцией. А иногда хочется чтобы была возможность положить код из блока в общее условие, чтобы не делать несколько проверок в коде одного и того же.

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

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

#219

Сообщение Dryundel » 28.02.2022{, 09:32}

Phazz писал(а):
28.02.2022{, 08:17}
Хочется реализовать вот это в флпрог
Не совсем понимаю как это работает, но если функция создаётся по шаблону, то почему бы не добавить аргументы к этой функции и вставлять из них нужный текст в эту функцию.
На сколько я понял, каждая функция, это страница. Типа надо создать блоки-шаблоны таких страниц, а нужный текст либо передавать аргументами либо вообще из параметров блока вставлять.
Или идея в том чтобы собирать страницу-функцию с помощью нескольких блоков? По моему это извращение.
В одном блоке можно вставлять нужные куски кода в функцию по условиям привязанным к параметрам. Один блок - одна страница-функция. Зачем в общую функцию эти куски добавлять?

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

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

#220

Сообщение AlexCrane » 28.02.2022{, 20:43}

Phazz, А если использовать такой подход
Сборка функций.flp
(264.24 КБ) 39 скачиваний
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Ответить

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