Уважаемые пользователи! Наш сайт и форум содержится на средства полученные от рекламы. Если вы хотите и дальше продолжать общаться, скачивать, и т.п. пожалуйста отключите блокировку рекламы для нашего сайта/форума. Можно и покликать по рекламным ссылкам, так будут больше выплаты. Спасибо за понимание!

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

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

Создаем свой блок. Вопросы, помощь знатоков.
av
Майор
Сообщения: 1103
Зарегистрирован: 25.09.2017{, 13:25}
Репутация: 79
Имя: Алексей

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

#61

Сообщение av » 22.07.2020{, 06:11}

support, спасибо за подсказку ! Попробую сделать по вашему шаблону. А потом сравню какой из вариантов более предпочтительней и удобней.

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

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

#62

Сообщение 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
Сержант
Сообщения: 110
Зарегистрирован: 13.04.2020{, 18:22}
Репутация: 1
Имя: Антон

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

#63

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

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

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

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

#64

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

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

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

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

#65

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

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

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

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

#66

Сообщение 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 КБ) 970 просмотров
Отправлено спустя 9 минут 59 секунд:
аааа нашелся удалитель, по умолчанию прячется , надо раздвинуть окно.
FLP703ПБ2.png
FLP703ПБ2.png (18.21 КБ) 966 просмотров
в 631 он стоит сразу после кнопки редактировать
FLP631ПБ2.png
FLP631ПБ2.png (9.45 КБ) 953 просмотра
Но папку все равно не могу удалять неактивен значок в FLP703

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

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

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

#67

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

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

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

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

#68

Сообщение 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.

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

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

#69

Сообщение aidar_i » 27.07.2020{, 19:59}

support, можно сделать, чтобы название блока (инстанса) менялось по условию? Мне нравится делать один блок и по условию менять его. Хотелось бы, чтобы менялось и название блока.
Пример viewtopic.php?f=71&t=6595#p91917

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

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

#70

Сообщение Ardudue » 29.07.2020{, 18:52}

support, создал ПБ, при компиляции вылет программы
error_FLP703_PB.log
(32.23 КБ) 5 скачиваний
Рация на Ардуино UNO и NRF24L01.flp
(103.81 КБ) 9 скачиваний

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

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

#71

Сообщение support » 29.07.2020{, 22:56}

Ardudue писал(а):
29.07.2020{, 18:52}
support, создал ПБ, при компиляции вылет программы
error_FLP703_PB.log
Рация на Ардуино UNO и NRF24L01.flp
Исправил.
Что бы сейчас заработало, уберите в блоке вот это
Снимок12345.PNG
.
Потому что вместо этого тэга вставляется значение полученное со входа (В новом редакторе для входа НЕ СОЗДАЮТСЯ ПЕРЕМЕННЫЕ) и получается следующее. В Вашей схеме:

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

RF24 radio(10, 9);
RF24V Sound(radio,0);
boolean flag = 0;
#include <SPI.h>
#include <RF24.h>
#include <RF24V.h>
(0) = 0;
(0) = 0;
void setup()
А чуть изменим схему, и получим ещё интереснее
6.PNG
6.PNG (3.88 КБ) 623 просмотра

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

RF24 radio(10, 9);
RF24V Sound(radio,0);
boolean flag = 0;
#include <SPI.h>
#include <RF24.h>
#include <RF24V.h>
(((1) && (1))) = 0;
(((1) && (1))) = 0;
void setup()
Отправлено спустя 22 минуты 54 секунды:
Ardudue писал(а):
29.07.2020{, 18:52}
support, создал ПБ, при компиляции вылет программы
error_FLP703_PB.log
Рация на Ардуино UNO и NRF24L01.flp
Немного поправил Ваш блок. Так будет правильнее и красивее.

Отправлено спустя 57 секунд:
Основной код не трогал, так как не разбирался в нём. И я думаю ещё надо подгрузить библиотеки в блок
Вложения
walkie-talkie_(Code)_1.ubi
(87.69 КБ) 9 скачиваний
Автор программы FLProg.

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

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

#72

Сообщение aidar_i » 30.07.2020{, 00:17}

Закончил создание блока здесь.
Чтобы освоить новый редактор, все засунул в один блок, и типы контроллера, и режимы работ, создаваемые и удаляемые входы, выходы и тп.
Да, возможности редактора большие. Время тоже занимает немало. Посмотрите блок, параметры поизменяйте, интересно будет :)

Gordon0007
Рядовой
Сообщения: 82
Зарегистрирован: 19.04.2018{, 13:37}
Репутация: 12
Откуда: Набережные челны
Имя: Павел

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

#73

Сообщение Gordon0007 » 30.07.2020{, 13:26}

Добрый день
Хочу узнать, есть ли возможность видеть сколько занято в ЕЕПРОМ, если используешь его в ПБ?
Если нет то есть ли возможность это реализовать?
Например мне нужно записывать массив в ЕЕПРОМ или название ЕЕПРОМ назначить как переменную. Библиотека это позволяет, но функционал не раскрыт в стандартных блоках (хотя очень бы хотелось). "Есть конечно более простое решение, это добавить это в стандартные блоки, но я понимаю что у Автора нет времени на это"

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

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

#74

Сообщение Ardudue » 30.07.2020{, 14:16}

support писал(а):
29.07.2020{, 23:20}
Потому что вместо этого тэга вставляется значение полученное со входа (В новом редакторе для входа НЕ СОЗДАЮТСЯ ПЕРЕМЕННЫЕ) и получается следующее. В Вашей схеме:

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

RF24 radio(10, 9);
RF24V Sound(radio,0);
boolean flag = 0;
#include <SPI.h>
#include <RF24.h>
#include <RF24V.h>
(0) = 0;
(0) = 0;
void setup()

А чуть изменим схему, и получим ещё интереснее
вот это и хотел увидеть в коде ради интереса :smile38: но при вызове IDE получал вылеты.
блок только набросок , в выходные будет пару часов вычищу.
И вот что то #include раскладывает не по фэншую
У автора скетча так:

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

#include <RF24.h>   
#include <SPI.h>
#include <RF24V.h>
RF24 radio(7,8);    
RF24V Sound(radio,0);
boolean flag = 0;
boolean V_Up = 0;
boolean V_Down = 0;
Программа делает так: всегда сверху ставит #include <SPI.h>

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

#include <SPI.h>
#include <RF24.h>
#include <RF24V.h>
RF24 radio(7, 8);
RF24V Sound(radio,0);
boolean flag = 0;
boolean V_Up = 0;
boolean V_Down = 0;

av
Майор
Сообщения: 1103
Зарегистрирован: 25.09.2017{, 13:25}
Репутация: 79
Имя: Алексей

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

#75

Сообщение av » 30.07.2020{, 15:52}

Ardudue писал(а):
30.07.2020{, 14:16}
И вот что то #include раскладывает не по фэншую
так есть же несколько секций декларации начало и конец. Если нужно чтобы было первым ставьте в начальную секцию.

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

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

#76

Сообщение Ardudue » 30.07.2020{, 17:39}

av писал(а):
30.07.2020{, 15:52}
так есть же несколько секций декларации начало и конец. Если нужно чтобы было первым ставьте в начальную секцию.
именно так и делаю, FLP всегда сверху ставит #include <SPI.h>

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

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

#77

Сообщение rw6cm » 30.07.2020{, 18:37}

Ardudue писал(а):
30.07.2020{, 17:39}
именно так и делаю, FLP всегда сверху ставит #include <SPI.h>
Почитайте Хелп "Элемент кода" а именно: Чек бокс«Запретить компилятору видеть #Include»
Win10-64, FLProg (portable)

av
Майор
Сообщения: 1103
Зарегистрирован: 25.09.2017{, 13:25}
Репутация: 79
Имя: Алексей

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

#78

Сообщение av » 30.07.2020{, 19:58}

Ardudue писал(а):
30.07.2020{, 17:39}
именно так и делаю, FLP всегда сверху ставит #include <SPI.h>
Странно..., а у меня наоборот #include <SPI.h>никак не хотел ставиться первым вместо него залазило первым #include <Adafruit ILI9341.h>. И пока не разделил по секциям начало/конец не получалось подключить библиотеку SPI первой.

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

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

#79

Сообщение Ardudue » 31.07.2020{, 07:42}

rw6cm писал(а):
30.07.2020{, 18:37}
Почитайте Хелп "Элемент кода" а именно: Чек бокс«Запретить компилятору видеть #Include»
уже обсуждали с автором
support писал(а):
15.05.2020{, 11:17}
Для того что бы было по феншую, есть части кода Declare - в начале секции и в конце. Так вот инклюды пишутся в начале секции, а создание инстанса - в конце. С галочкой "Запретить видеть...." надо быть осторожнее, Ведь если компилятор не видит Include то он и не проверяет наличие библиотеки, и не выгружает её из блока. У меня есть мысли как поправить эту ситуацию, если получится - отпишусь.

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

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

#80

Сообщение rw6cm » 31.07.2020{, 07:49}

Ardudue писал(а):
31.07.2020{, 07:42}
уже обсуждали с автором
не пойму тогда Вашу иронию.
Не пристегивайте к блоку библиотеки, и пользуйтесь этой опцией.

Отправлено спустя 33 минуты 51 секунду:
support,
Ardudue писал(а):
31.07.2020{, 07:42}
support писал(а): ↑
15.05.2020{11:17}
С галочкой "Запретить видеть...." надо быть осторожнее, Ведь если компилятор не видит Include то он и не проверяет наличие библиотеки, и не выгружает её из блока.
В старом блоке не вкладывал библиотеки в блок.
Во первых такие блоки сильно утяжеляли проект, (как следствие увеличивались тормоза при работе с такими проектами)
Во вторых вносили путаницу в версиях библиотек.
Вопрос про библиотеки в новом блоке:
Какой алгоритм действий встроенной библиотеки, если в базе библиотека уже есть но отличается.
И по какому пути она будет ставится. Интересует ардуино, есп8266, есп32, т.к у них свои приоритеты по установке.
Win10-64, FLProg (portable)

Ответить

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