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

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

Создаем свой блок. Вопросы, помощь знатоков.
Ardudue
Лейтенант
Сообщения: 423
Зарегистрирован: 13.04.2020{, 18:22}
Репутация: 24
Имя: Антон

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

#41

Сообщение Ardudue » 08.07.2020{, 19:08}

Naladchik писал(а):
08.07.2020{, 17:43}
Ardudue писал(а): ↑
Сегодня{, 19:30}
не кашерно

Мы легких путей не ищем?
Не просто витиеватыми тропами с Вами не пойду. :smile44:

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

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

#42

Сообщение support » 08.07.2020{, 20:22}

Ardudue писал(а):
08.07.2020{, 15:35}
support писал(а):
08.07.2020{, 12:13}
В этом случае правильнее будет заменить

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

val = 200; // в ПБ FLP сделать входом для оперативного изменения

на

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

val =<Input>;

И не парится.
ок , частный случай решен, но что делать с выходами - всё таки вручную сделать выходы и потом вручную привязывать к каждой переменной.
Вход-Выход3_702.flp
Для выхода такой вариант. Снимаем галочку и пишем имя переменной
Выход.PNG
Не забываем что для многократного использования блоков переменные всё равно надо переименовывать
Автор программы FLProg.

Ardudue
Лейтенант
Сообщения: 423
Зарегистрирован: 13.04.2020{, 18:22}
Репутация: 24
Имя: Антон

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

#43

Сообщение Ardudue » 09.07.2020{, 06:57}

support писал(а):
08.07.2020{, 20:22}
Для выхода такой вариант. Снимаем галочку и пишем имя переменной

Выход.PNG

Не забываем что для многократного использования блоков переменные всё равно над
что то по такому варианту не компилируется в IDE
Вход-Выход4_702.flp
(70.72 КБ) 45 скачиваний

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

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

#44

Сообщение support » 09.07.2020{, 08:59}

Ardudue писал(а):
09.07.2020{, 06:57}
support писал(а):
08.07.2020{, 20:22}
Для выхода такой вариант. Снимаем галочку и пишем имя переменной

Выход.PNG

Не забываем что для многократного использования блоков переменные всё равно над
что то по такому варианту не компилируется в IDE Вход-Выход4_702.flp
А кто переменные которые Вы передаете на выход декларировать будет? Вы же за основу берёте код где эти переменные объявленны.
в поле кода выхода можно написать например можно
array[5]
тогда на выход пойдёт пятое значение массива array
Автор программы FLProg.

Аватара пользователя
DrMario
Лейтенант
Сообщения: 371
Зарегистрирован: 07.11.2016{, 13:11}
Репутация: 58
Откуда: Камень-на-Оби
Имя: Евгений
Контактная информация:

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

#45

Сообщение DrMario » 09.07.2020{, 10:46}

av писал(а):
08.07.2020{, 16:32}
Да уж... похоже новый редактор не для всех :smile37: .Новички и кто не в ладах с кодом можно даже и не дергаться в этом направлении. Жаль... :(
Согласен!
На днях сел за изучение, но после часа впустую потраченного времени бросил эту затею. Жду подробную справку по редактору.

Аватара пользователя
slavas
Лейтенант
Сообщения: 595
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 1
Откуда: Санкт-Петербург

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

#46

Сообщение slavas » 09.07.2020{, 17:10}

Согласен, новый редактор неожиданно сложный на первый взгляд. Даже пугает сначала но стоит его осваивать вещь нужная. Но всё же хотелось бы попросить Автора написать хэлп поскорее и главное максимально подробно расписать каждую строчку редактора, а то надоело методом научного тыка. Хотя этот метод является самым прогрессивным методом изучения предмета.

Ardudue
Лейтенант
Сообщения: 423
Зарегистрирован: 13.04.2020{, 18:22}
Репутация: 24
Имя: Антон

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

#47

Сообщение Ardudue » 10.07.2020{, 05:41}

support писал(а):
09.07.2020{, 08:59}
А кто переменные которые Вы передаете на выход декларировать будет? Вы же за основу берёте код где эти переменные объявленны.
Это вот тот случай, когда в старой версии входы и выходы декларируются автоматом.
Поэтому при создании в ПБ по привычке декларации выкосил.
А в новый версии надо декларировать вручную – получилась коллизия.

Ardudue
Лейтенант
Сообщения: 423
Зарегистрирован: 13.04.2020{, 18:22}
Репутация: 24
Имя: Антон

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

#48

Сообщение Ardudue » 14.07.2020{, 16:56}

support, в редакторе ПБ отсутствует кнопка "Удалить блок" и не активная кнопка "Удалить папку". Папку можно только добавить. FLP703

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

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

#49

Сообщение support » 21.07.2020{, 18:06}

av писал(а):
21.07.2020{, 16:07}
support, Попытался создать универсальный мультиблок для трех типов TFT дисплеев на основе библиотек от Adafruit. В принципе немного разобрался как это делается, но при просмотре кода вижу что не все гладко с декларированием переменных. Объясню суть проблемы. Создал для теста блок вывода текста на дисплей. Из одного созданного блока можно выбрать тип блока Статический, Динамический, Полустатический текст. Допустим добавляем в проект один блок и в настройках выбираем тип блока (Статический: у блока только всего два входа En, IN все остальное управление координаты, цвет, размер текста находятся внутри блока).Добавляю еще этот же блок и выбираем тип Динамический у которого все управление на входах. Далее открываю просмотрщик кода и вижу, что декларация переменных для двух блоков совпадает (нет добавления уникального цифрового индентефикатора). Параметры и код блока создавал в разделах "... каждого инстанса" и по сути задекларированые переменные так же объявлены в коде каждого инстанса должны вроде получить уникальный индентефикатор. Может я что не так понял или нет такой возможности из одного блока выбирать каким он будет Статическим, Динамическим и т.д. и использовать его много раз в проекте. Пожалуйста если у вас есть время разъясните возможно ли так создавать блок.

Вот набросок блока:TFT_text_(Code).ubi
Я как раз сегодня планирую написать страницу хелпа, где этот вопрос раскрывается. В этой теме viewtopic.php?f=39&t=6577 сказанно как посмотреть текущее состояние хелпа. Завтра утром думаю уже сможете посмотреть.
Автор программы FLProg.

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

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

#50

Сообщение support » 21.07.2020{, 19:54}

av писал(а):
21.07.2020{, 18:53}
support, да я эту тему видел и уже прочитал на яндекс диске. Вопрос уже не актуален вроде разобрался, в редакторе оказывается есть кнопка добавления уникального идентификатора. Уважаемый Сергей в новом редакторе капец как нужны подсказки при наведении мыши на кнопки это позволит даже на подсознательном уровне допетрить что к чему :yes: .
После написания хелпа, и согласования терминологии с пользователями (для того я и сделал тему посвящённую хелпу ), я всем кнопкам сделаю всплывающие подсказки. В хелпе я уже даю временные названия кнопкам. Если всех устроит и всем будет понятно - перенесу их в программу.Ну и кроме того на всех окошках будет кнопочка "Помощь", которая будет сразу открывать соответствующую страничку хелпа.
Постараюсь сделать это всё быстрее, но.... у меня и основная работа есть)))).
Автор программы FLProg.

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

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

#51

Сообщение support » 21.07.2020{, 23:43}

av писал(а):
21.07.2020{, 21:05}
support, а есть ли возможность в новом редакторе использовать одновременно два условия для одной секции кода. Например: для написания кода для рисования прямоугольника нужны два условия исходя из параметра "Статический" (в зависимости от этого параметра блок будет с входами управления или без них) и "Выбор фигуры прямоугольника" ( Прямоуг., Прямоуг.скругленный, Прямоуг.закрашенный ). Не знаю как решить эту задачку. Может кто из форумчан уже освоил редактор подскажите пожалуйста.
Создайте необходимые условия , например статический закрашенный, статический прямоугольный, не статический закрашенный, и так далее.
Это как говорится решение в лоб. Наверное не самое лучшее.
Второе решение - разбить код на мелкие части, например часть отвечающую за статиченость, и часть отвечающую за форму. И уже рулит этими частями.
В общем надо смотреть код, как лучше сделать.
Автор программы FLProg.

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

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

#52

Сообщение support » 22.07.2020{, 02:44}

av писал(а):
22.07.2020{, 02:08}
support писал(а):
21.07.2020{, 23:43}
Второе решение - разбить код на мелкие части, например часть отвечающую за статиченость, и часть отвечающую за форму. И уже рулит этими частями.
Такое решение подразумевает создание большого количества входов и параметров под каждый блок. Придумывать к ним имена замучаешся. Допустим для 4 блоков, чтобы создать входы для одной координаты по оси Х нужно 4 имени (Хп, Хс, Хз, Хсз). А их входов координаты Х для всех блоков понадобится не меньше 20 не говоря уже об остальных входах Y, высота, ширина, радиус закругления да ещё плюс столько же параметров для статических блоков. Плохо что нет добавления уникальных идентификаторов для параметров и входов. Вбил одну букву "Х" и добавляй ID к ней столько сколько нужно входов или параметров. Вообщем я в тупике.
Не совсем понял а при чём здесь входы? Мы же говорим про условия! Вообще опишите задачу поподробнее.
Автор программы FLProg.

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

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

#53

Сообщение support » 22.07.2020{, 05:51}

av писал(а):
22.07.2020{, 04:52}
support писал(а):
22.07.2020{, 02:44}
Не совсем понял а при чём здесь входы? Мы же говорим про условия! Вообще опишите задачу поподробнее.
Решил сделать в новом редакторе мультиблоки под TFT дисплеи на библиотеках от Adafruit для трех разных дисплеев благо библиотеки и команды у них одинаковые. По этому объединяю их в одну сборку блоков. С текстом разобрался. На очереди графические блоки. Начал создание одного блока для всех видов прямоугольников их 4 вида. Для удобства использования в проектах разделил их на две группы (Статические и Динамические). Статические занимают мало места на поле платы проекта и все их параметры находятся в настройках блока, что очень удобно один раз настроил и забыл. Динамические же имеют входы для управления параметрами которые могут изменяться в процессе выполнения программы (допустим графическое меню). Задача состоит в том чтобы в дереве блоков для дисплея не плодить кучу блоков, а создать один и в его настройках выбирать "Тип блока"- Статический или Динамический. Далее производить "Выбор фигуры"-Прямоугольник, Прямоугольник залитый, Прямоугольник с скругленными углами и т. д. Всего получается восемь возможных конфигураций исходя из двух параметров статические 4 и динамические 4. Как создать условия при которых будет компилироваться каждая конфигурация я разобрался. Но вот при создании входов(для динамики) и параметров(для статики) получается очень громоздко. Нужно прописать много имен входов и параметров и чтобы они не были одинаковыми.
Вот пример для параметров:Показать
Новый редактор.png
И это только параметры для 4 статических конфигураций, столько же будет входов для 4 динамических конфигураций. А на очереди графика круга, треугольника. Получится очень громоздко. Возможно я не правильно создаю параметры и входы, но другого варианта я не знаю. Если разбивать на множество блоков, то все равно нужно создавать много параметров и входов для каждого блока. В старом редакторе было попроще в плане создания входов и параметров так как им присваивались дополнительные айди при добавлении блока повторно. Вот попытался написать подробней возможно сумбурно/скомкано, как могу извините.
Для начала я бы всё таки Вам посоветовал не делать общий блок "Фигура" а всё таки сделать три блока "Круг", "Прямоугольник", "Треугольник" и так далее. Универсальный блок можно сделать, но это действительно будет громозко и честно говоря неудобно.
Давайте теперь рассмотрим как сделать например круг.
Создаем параметры:
Задание центра - Boolean - Значения -" константа"-"вход"
Центр X_Par - Inttger - если истинно условие -( Задание центра =" константа").
Центр Y_Par - Inttger - если истинно условие -( Задание центра =" константа").
Задание Радиуса - Boolean - Значения -" константа"-"вход"
Радиус_Par - Inttger - если истинно условие -( Задание Радиуса =" константа").
Задание цвета- Boolean - Значения -" константа"-"вход"
Цвет_Par - Inttger - если истинно условие -( Задание цвета =" константа").

Теперь входа
Центр X - Inttger - если ложно условие -( Задание центра =" константа").
Центр Y - Inttger - если ложно условие -( Задание центра =" константа").
Радиус - Inttger - если ложно условие -( Задание Радиуса =" константа").
Цвет - Inttger - если ложно условие -( Задание цвета =" константа").

Теперь код
Я так понимаю что функция отрисовки выглядит где то так

lcd.paintCicle(x,y,r,Color);

В коде каждого инстанса в секции Declare в конце объявляем массив.
int Array_<INST.UUID>[4];

В коде каждого инстанса в секции Loop в месте вставки блока создаем несколько элементов кода.


код1 - если истинно условие -( Задание центра =" константа").
Array_<INST.UUID>[0] =<Центр X_Par>;
Array_<INST.UUID>[1] =<Центр Y_Par>;

код2 - если ложно условие -( Задание центра =" константа").
Array_<INST.UUID>[0] =<Центр X>;
Array_<INST.UUID>[1] =<Центр Y>;

код3 - если истинно условие -( Задание Радиуса =" константа")..
Array_<INST.UUID>[2] =<Радиус_Par>;

код4 - если ложно условие -( Задание Радиуса =" константа").).
Array_<INST.UUID>[2] =<Радиус>;

код5 - если истинно условие -( Задание цвета =" константа")..
Array_<INST.UUID>[3] =<Цвет_Par>;

код6 - если ложно условие -( Задание цвета =" константа").).
Array_<INST.UUID>[3] =<Цвет>;

код 7 - нет условия

lcd.paintCicle(Array_<INST.UUID>[0],Array_<INST.UUID>[1],Array_<INST.UUID>[2],Array_<INST.UUID>[3]);


Ну и получится настраиваемый круг. Так же с другими фигурами Только меняем названия и количество входов
Автор программы FLProg.

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

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

#54

Сообщение support » 22.07.2020{, 06:52}

av писал(а):
22.07.2020{, 06:11}
support, спасибо за подсказку ! Попробую сделать по вашему шаблону. А потом сравню какой из вариантов более предпочтительней и удобней.
Немного не успел закончить ответ. У меня кончилась ночная смена, и я торопился на автобус.
Продолжим.
Предыдущий вариант не очень оптималел но нагляден. В нем для каждого экземпляра блока создается отдельный массив, что занимает лишнюю в принципе память.
Немного оптимизируем.
В секции Declare каждого инстанса ничего писать не будем. А перенесём объявление массива в конец секции Declare Общего коды (на самом верху дерева редактора)
Поскольку этот код вставляется один раз, то идентификатор инстанса всавлять не надо (да и там его невозможно вставить).
Выглядеть это будет где то так

int Array_MyBlock_12343[10];

Почему 10 элементов - а что бы хватило на все типы блоков. В процессе создания блоков количество элементов уточнится


Соответственно код элементов блоков изменится

код1 - если истинно условие -( Задание центра =" константа").
Array_MyBlock_12343[0] =<Центр X_Par>;
Array_MyBlock_12343[1] =<Центр Y_Par>;

код2 - если ложно условие -( Задание центра =" константа").
Array_MyBlock_12343[0] =<Центр X>;
Array_MyBlock_12343[1] =<Центр Y>;

код3 - если истинно условие -( Задание Радиуса =" константа")..
Array_MyBlock_12343[2] =<Радиус_Par>;

код4 - если ложно условие -( Задание Радиуса =" константа").).
Array_MyBlock_12343[2] =<Радиус>;

код5 - если истинно условие -( Задание цвета =" константа")..
Array_MyBlock_12343[3] =<Цвет_Par>;

код6 - если ложно условие -( Задание цвета =" константа").).
Array_MyBlock_12343[3] =<Цвет>;

код 7 - нет условия

lcd.paintCicle(Array_MyBlock_12343[0],Array_MyBlock_12343[1],Array_MyBlock_12343[2],Array_MyBlock_12343[3]);

То есть мы использовали массив как временное хранилище значений, и тут же использовали их.
В остальных блоках так же используем этот же массив.


Этот вариант более экономичен в отношении памяти.

Есть ещё более красивый но ещё менее наглядный вариант. Не используем никаких массивов вообще! Нигде его не объявляем
Код будет выглядеть тогда так

код 0 - нет условия
lcd.paintCicle(

код1 - если истинно условие -( Задание центра =" константа").
<Центр X_Par>, <Центр Y_Par>,

код2 - если ложно условие -( Задание центра =" константа").
<Центр X>, <Центр Y>,

код3 - если истинно условие -( Задание Радиуса =" константа")..
<Радиус_Par>,

код4 - если ложно условие -( Задание Радиуса =" константа").).
<Радиус>,

код5 - если истинно условие -( Задание цвета =" константа")..
<Цвет_Par>

код6 - если ложно условие -( Задание цвета =" константа").).
<Цвет>

код 7 - нет условия
);

Естевственно никаких переносов строк в элементах кода быть не должно.
Автор программы FLProg.

Ardudue
Лейтенант
Сообщения: 423
Зарегистрирован: 13.04.2020{, 18:22}
Репутация: 24
Имя: Антон

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

#55

Сообщение Ardudue » 22.07.2020{, 18:58}

от экспериментов userBlocks.sixx превысил 250 мег и прога начала тормозить. Можно былобы почистить, но кнопка удалить блок отсутствует.

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

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

#56

Сообщение aidar_i » 22.07.2020{, 19:42}

Как отсутствует? Я удалял.

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

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

#57

Сообщение support » 22.07.2020{, 19:46}

Ardudue писал(а):
22.07.2020{, 18:58}
от экспериментов userBlocks.sixx превысил 250 мег и прога начала тормозить. Можно былобы почистить, но кнопка удалить блок отсутствует.
Как это отсутствует?
Снимок1111.PNG
Снимок1111.PNG (23.56 КБ) 1885 просмотров
Автор программы FLProg.

Ardudue
Лейтенант
Сообщения: 423
Зарегистрирован: 13.04.2020{, 18:22}
Репутация: 24
Имя: Антон

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

#58

Сообщение Ardudue » 23.07.2020{, 06:20}

aidar_i писал(а):
22.07.2020{, 19:42}
Как отсутствует? Я удалял.
support писал(а):
22.07.2020{, 19:46}
Как это отсутствует?
у меня вот так и папку с блоками на могу удалить неактивна.
Запустил на разных компах се одинаково.
Версия703 портативная.
FLP703ПБ.png
FLP703ПБ.png (23.8 КБ) 1817 просмотров
Отправлено спустя 9 минут 59 секунд:
аааа нашелся удалитель, по умолчанию прячется , надо раздвинуть окно.
FLP703ПБ2.png
FLP703ПБ2.png (18.21 КБ) 1813 просмотров
в 631 он стоит сразу после кнопки редактировать
FLP631ПБ2.png
FLP631ПБ2.png (9.45 КБ) 1800 просмотров
Но папку все равно не могу удалять неактивен значок в FLP703

Отправлено спустя 1 час 40 минут 23 секунды:
Расковырял, ПАПКА в которой создается набор блоков это оказывается теперь выглядит как папка, но надо удалять как блок.
FLP703ПБ3.png
FLP703ПБ3.png (15.42 КБ) 1790 просмотров
Отправлено спустя 10 минут 6 секунд:
support, окно редактора блоков запоминает размер отредактированного блока.
Если создаю новый блок то окно опять по умолчанию узкое.
Всякий раз как создаю новый блок приходится растягивать окно -для тестирования вообще некашерно.
Можно сделать что бы размер окна запоминала программа для всех вновь открываемых окон ПБ тот который установил пользователь ?

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

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

#59

Сообщение rw6cm » 23.07.2020{, 10:29}

support,
Пример проекта с использованием "Тестовые блоки коде"
В проекте используется всего один блок "круг". Объем кода в скетче чуть больше 2кб. Размер проекта 2,7Мб :smile37:
Понимаю внутри блока лежит библиотека...
Ставлю в проект еще блоки "прямоугольник, точка, текст, линия". В скетче добавилось буквально 3 не большие строчки кода.
Размер проекта 7,1Мб :shok: :shok: :shok: Что это за монстры? ))
П\с Даже просто 5 блоков "круг" в проекте имеют почти такой же объем 7Мб.
Win10-64, FLProg (portable)

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

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

#60

Сообщение support » 23.07.2020{, 20:59}

rw6cm писал(а):
23.07.2020{, 10:29}
support,
Пример проекта с использованием "Тестовые блоки коде"
В проекте используется всего один блок "круг". Объем кода в скетче чуть больше 2кб. Размер проекта 2,7Мб :smile37:
Понимаю внутри блока лежит библиотека...
Ставлю в проект еще блоки "прямоугольник, точка, текст, линия". В скетче добавилось буквально 3 не большие строчки кода.
Размер проекта 7,1Мб :shok: :shok: :shok: Что это за монстры? ))
П\с Даже просто 5 блоков "круг" в проекте имеют почти такой же объем 7Мб.
Нашёл косяк - исправил. В следующей версии будет OK
Автор программы FLProg.

Ответить

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