Новый редактор ПБ (Code-Professional) Быстрый старт

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

Новый редактор ПБ (Code-Professional) Быстрый старт

#1

Сообщение Dryundel » 23.02.2022{, 17:38}

0.jpg
0.jpg (27.63 КБ) 2719 просмотров
.
Предисловие.

Новый редактор Code-Professional, безусловно является мощным средством для создания пользовательских блоков. В отличии от классического, он гораздо пластичнее и удобнее в плане работы с кодом. Однако и более требователен к знаниям пользователя в области программирования на языке C++. Множество разнообразных инструментов нового редактора, позволяют создавать по настоящему удобные и многофункциональные ПБ, практически не уступающие штатным. Описать все возможности этого редактора очень сложно, т.к. во многом они зависят от фантазии и воображения пользователя. Автору удалось предоставить пользователям продукт, который по мощности сопоставим с самой программой FLProg.

Я долго думал над тем, как облегчить начало работы с редактором Code-Professional. С одной стороны, в описании (справке) весь его функционал подробно расписан. С другой стороны, часто слышу от пользователей, что ничего не понятно и они уже несколько раз честно пытались начать пользоваться новым редактором и что это совсем не просто. Даже некоторые корифеи форума, не плохо знающие C++, сторонятся этого прекрасного дополнения к FLProg.

На сколько мне видится, суть проблемы в том, что справка начинает описывать работу блока "Со ствола дерева", а он на столько мощный, что не удается сразу его обхватить. В этой статье мы пойдем от обратного и в начале рассмотрим "прекрасные листики", потрогаем их, а уж потом доберемся до ствола. Я расскажу только основы, которых должно хватить для быстрого старта.

Часть 1
Пользовательский блок.
Код.
Параметры.
Условия.

Открываем редактор (создать пользовательский блок) и смотрим что в нем есть.
- Основные настройки - это как раз тот ствол, о котором я писал. Его мы пока трогать не будем, а сразу перейдем к Пакету блоков. В правой части кликаем на иконку Создать новый блок.
1.jpg
1.jpg (27.49 КБ) 2719 просмотров
И вот здесь у нас появляются еще одни Основные настройки, которые как раз и относятся исключительно к создаваемому блоку.
Вводим Название блока, оно будет отображаться в библиотеке ПБ и Лейбл - это будет видно на самом блоке в проекте.
2.jpg
Переходим к Входам и Выходам. Думаю этот пункт не должен вызвать затруднений. Создаем нужное количество входов и выходов с желаемыми названиями. Позже можно будет их добавлять, удалять, переименовывать, менять тип и т.д
3.jpg
3.jpg (40.79 КБ) 2719 просмотров
Теперь раскрываем дерево основных настроек создаваемого блока и находим Код блока и Код каждого экземпляра.
Обратите внимание! Общий код и Общие параметры мы пока не трогаем. Это "толстые ветки", а мы пока занимаемся "листиками".
В разделе Код каждого экземпляра, по аналогии с базовым редактором находятся вкладки секций Declare Setup Loop и Functions.
4.jpg
Эти вкладки по функциональности очень похожи на те, что в базовом редакторе, но здесь все гораздо шире и удобней. Например в секции Loop есть еще три подраздела Начало секции, Место вставки и Конец секции. Сейчас нам нужна вкладка Место вставки. Это и есть тот "листочек", о котором я говорю с самого начала.
Кликаем на зеленый плюсик в правой части и создается еще одна вкладка "Код". Ее можно назвать по своему усмотрению. Таких вкладок можно создать сколько угодно. Дело в том, что каждая такая вкладка, это небольшие куски кода из которых позже можно компоновать тот код, который сгенерируется блоком при компиляции. Сложно? Ничего страшного. Этот момент будет понятен чуть позже.
5.jpg
В созданной вкладке пишем наш код для вычисления синуса.
Аналогично создаем еще одну вкладку для вычисления косинуса
6.jpg
Синус который на выходе будет использовать значение со Входа1
Для того, что бы пользоваться входом и выходом, в редакторе создаются теги этих самых входов/выходов. Их можно достать из панели над полем кода. Выбрав соответствующие теги, вставляем их в формулу. Теперь значение на выходе, есть производная от значения на входе.
7.jpg
Возникает законный вопрос. Мы создали два кода Синус и Косинус, которые используют одни и те же вход и выход. Как же это будет работать? Это и есть пожалуй самая основная фишка нового редактора. Компилироваться будет либо один кусок кода либо другой и задача пользователя правильно настроить этот момент.
Для этого создадим в Параметрах каждого экземпляра пользовательский параметр "Выбор математической функции", с помощью которого пользователь сможет выбирать какую функцию использовать синус или косинус. (По аналогии со штатным блоком "Компаратор")
8.jpg
Для такого параметра подойдет тип Byte и вид Выпадающий список. В дальнейшем можно будет добавить тангенс и котангенс.
9.jpg
Теперь создадим таблицу выпадающего списка, добавляя строки зеленым плюсиком. Полем Значение будем пользоваться мы, а поле Текст будет видеть пользователь. Пусть для синуса буде 1, а для косинуса 2. Самый левый стобец служит для задания выбора по умолчанию. Его надо активировать с помощью зеленой галки, если требуется.
10.jpg
Следующим шагом будет создание условий на основе наших пользовательских параметров. Идея будет такая - если пользователь выберет синус, то компилироваться будет код с названием синус, ну и аналогично с косинусом.
11.jpg
Задаем условию название "Выбран синус", выбираем операнд (Пользовательский параметр), оператор (равно) и ставим значение для синуса 1 (из таблицы параметра).
12.jpg
Для косинуса создаем второе аналогичное условие со значением 2.
13.jpg
Теперь возвращаемся на вкладку кодов и присваиваем каждому из созданных нами кодов (синус, косинус) соответствующее условие.
Теперь эти два кусочка кода будут компилироваться в зависимости от выбора пользователя.
14.jpg
Ну вот наш многофункциональный блок и готов. Можно пользоваться.
15.jpg
Мой_первый_блок_(Code_-_Professional).ubi
(112.14 КБ) 71 скачивание
У нас остался один незадействованный вход (boolean). Им мы займемся в следующей части.

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

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Новый редактор ПБ (Code-Professional) Быстрый старт

#2

Сообщение Ingwar » 23.02.2022{, 17:58}

Dryundel писал(а):
23.02.2022{, 17:38}
Им мы займемся в следующей части.
Админ опять забанит...
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

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

Новый редактор ПБ (Code-Professional) Быстрый старт

#3

Сообщение Dryundel » 23.02.2022{, 17:59}

Ingwar писал(а):
23.02.2022{, 17:58}
Админ опять забанит...
. . :smile171:
Простит наверное ради праздничка. :D

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

Новый редактор ПБ (Code-Professional) Быстрый старт

#4

Сообщение aidar_i » 23.02.2022{, 18:12}

Все это еще , если в видео воткнуть, лучше было бы.

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

Новый редактор ПБ (Code-Professional) Быстрый старт

#5

Сообщение Dryundel » 23.02.2022{, 18:17}

aidar_i писал(а):
23.02.2022{, 18:12}
Все это еще , если в видео воткнуть, лучше было бы.
Может кто возьмется. Я с монтажом как то не очень дружу.

costy1957
Сержант
Сообщения: 252
Зарегистрирован: 05.08.2018{, 08:37}
Репутация: 44
Имя: Константин

Новый редактор ПБ (Code-Professional) Быстрый старт

#6

Сообщение costy1957 » 24.02.2022{, 09:46}

Dryundel, это важная и нужная тема. Когда продолжение?

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

Новый редактор ПБ (Code-Professional) Быстрый старт

#7

Сообщение Dryundel » 24.02.2022{, 11:14}

costy1957 писал(а):
24.02.2022{, 09:46}
Dryundel, это важная и нужная тема. Когда продолжение?
"Ладно, ладно, детки, дайте только срок, Будет вам и белка, будет и свисток!"
А.Плещеев

costy1957
Сержант
Сообщения: 252
Зарегистрирован: 05.08.2018{, 08:37}
Репутация: 44
Имя: Константин

Новый редактор ПБ (Code-Professional) Быстрый старт

#8

Сообщение costy1957 » 24.02.2022{, 12:18}

Ждём, когда засвистит для деток

Anydy

Новый редактор ПБ (Code-Professional) Быстрый старт

#9

Сообщение Anydy » 25.02.2022{, 15:27}

Ingwar,
Ingwar писал(а):
23.02.2022{, 17:58}
Админ опять забанит...
Ну и зря вы так думаете....такую важную инфу я не буду банить......а то что было - ошибка

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Новый редактор ПБ (Code-Professional) Быстрый старт

#10

Сообщение Ingwar » 25.02.2022{, 17:16}

Anydy писал(а):
25.02.2022{, 15:27}
Ну и зря вы так думаете....такую важную инфу я не буду банить......а то что было - ошибка
Это мы так, между собой пошутили :smile38:
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

hayk
Сержант
Сообщения: 108
Зарегистрирован: 27.07.2016{, 03:06}
Репутация: 21
Откуда: Yerevan
Имя: Hayk

Новый редактор ПБ (Code-Professional) Быстрый старт

#11

Сообщение hayk » 05.07.2022{, 16:57}

Dryundel, скажите пожалуйста есть ли в редакторе возможность менять значения директивы #define в параметрах пользователя блока,с новым редактором пока не знаком,старый пока тянет.

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

Новый редактор ПБ (Code-Professional) Быстрый старт

#12

Сообщение Dryundel » 05.07.2022{, 19:01}

hayk писал(а):
05.07.2022{, 16:57}
Dryundel, скажите пожалуйста есть ли в редакторе возможность менять значения директивы #define в параметрах пользователя блока,с новым редактором пока не знаком,старый пока тянет.
Так а в чем проблема то?
Для параметра выбираешь переменную(константу) String, ставишь галку "Вставлять без скобок" и пиши чего угодно. На место переменной в коде блока, вставится все что напишешь. Хоть значение дефайна, хоть весь дефайн в код вкорячивай.

Отправлено спустя 9 минут 9 секунд:
В старом редакторе пользователю придется набирать нужный дефайн вручную или копипастить из описания блока.
В новом, можно сделать выпадающий список или переключатель. И мало того каждому такому дефайну можно присвоить человеческое определение. Т.е. пользователь будет видеть в списке настройки - "красный", "синий", "зеленый", а в код будет вставляться нужная строка типа #define LED GREEN или #define LED 0x00ff00

Короче, весело, все вместе изучаем новый редактор! :)

hayk
Сержант
Сообщения: 108
Зарегистрирован: 27.07.2016{, 03:06}
Репутация: 21
Откуда: Yerevan
Имя: Hayk

Новый редактор ПБ (Code-Professional) Быстрый старт

#13

Сообщение hayk » 05.07.2022{, 21:07}

Dryundel писал(а):
05.07.2022{, 19:10}
hayk писал(а):
05.07.2022{, 16:57}
Dryundel, скажите пожалуйста есть ли в редакторе возможность менять значения директивы #define в параметрах пользователя блока,с новым редактором пока не знаком,старый пока тянет.
Так а в чем проблема то?
Для параметра выбираешь переменную(константу) String, ставишь галку "Вставлять без скобок" и пиши чего угодно. На место переменной в коде блока, вставится все что напишешь. Хоть значение дефайна, хоть весь дефайн в код вкорячивай.

Отправлено спустя 9 минут 9 секунд:
В старом редакторе пользователю придется набирать нужный дефайн вручную или копипастить из описания блока.
В новом, можно сделать выпадающий список или переключатель. И мало того каждому такому дефайну можно присвоить человеческое определение. Т.е. пользователь будет видеть в списке настройки - "красный", "синий", "зеленый", а в код будет вставляться нужная строка типа #define LED GREEN или #define LED 0x00ff00

Короче, весело, все вместе изучаем новый редактор! :)
Спасибо,в старом с дефайном толко в коде ,значит все-таки придется с новым редактором разбираться.

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

Новый редактор ПБ (Code-Professional) Быстрый старт

#14

Сообщение Dryundel » 06.07.2022{, 08:20}

hayk писал(а):
05.07.2022{, 21:07}
в старом с дефайном толко в коде ,значит
Да не в коде.
Видимо я плохо объясняю.
Пользователю ПБ не надо будет лезть в код. Просто в параметре придётся вписать: 0х00ff00.

hayk
Сержант
Сообщения: 108
Зарегистрирован: 27.07.2016{, 03:06}
Репутация: 21
Откуда: Yerevan
Имя: Hayk

Новый редактор ПБ (Code-Professional) Быстрый старт

#15

Сообщение hayk » 06.07.2022{, 15:09}

Dryundel писал(а):
06.07.2022{, 08:20}
hayk писал(а):
05.07.2022{, 21:07}
в старом с дефайном толко в коде ,значит
Да не в коде.
Видимо я плохо объясняю.
Пользователю ПБ не надо будет лезть в код. Просто в параметре придётся вписать: 0х00ff00.
Ладно,давайте спрошу по другому ,у меня в коде #define test 40 мне нужно чтобы пользователь блока мог менять значение 40 в настройках блока,в старом редакторе у меня никак не получается.
Вложения
define.JPG
define.JPG (22.05 КБ) 2144 просмотра

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

Новый редактор ПБ (Code-Professional) Быстрый старт

#16

Сообщение Dryundel » 06.07.2022{, 17:36}

hayk писал(а):
06.07.2022{, 15:09}
Ладно,давайте спрошу по другому ,у меня в коде #define test 40 мне нужно чтобы пользователь блока мог менять значение 40 в настройках блока,в старом редакторе у меня никак не получается.
Ну так чего не понятного то?
Dryundel писал(а):
05.07.2022{, 19:10}
Для параметра выбираешь переменную(константу) String, ставишь галку "Вставлять без скобок" и пиши чего угодно. На место переменной в коде блока, вставится все что напишешь. Хоть значение дефайна, хоть весь дефайн в код вкорячивай.
Вот какое из слов здесь не ясно?
Создать параметр String (вставлять без скобок)Показать
numTest.jpg
А в коде написать:
#define test numTest

ВСЁЁЁЁ !

hayk
Сержант
Сообщения: 108
Зарегистрирован: 27.07.2016{, 03:06}
Репутация: 21
Откуда: Yerevan
Имя: Hayk

Новый редактор ПБ (Code-Professional) Быстрый старт

#17

Сообщение hayk » 06.07.2022{, 23:14}

Dryundel писал(а):
05.07.2022{, 19:10}
Для параметра выбираешь переменную(константу) String, ставишь галку "Вставлять без скобок" и пиши чего угодно. На место переменной в коде блока, вставится все что напишешь. Хоть значение дефайна, хоть весь дефайн в код вкорячивай.
Вот какое из слов здесь не ясно?
Создать параметр String (вставлять без скобок)Показать
numTest.jpg
А в коде написать:
#define test numTest

ВСЁЁЁЁ !
Так ведь дело в том,что эта конструкция не работает,компилятор должен сразу в скетче всавить вместо numTest значение из настроек,а он этого не делает,оставляет #define test numTest и естественно при использовании в скетче идентификатора дефайна test подставится не значение numTest, а само имя константы, то есть numTest,мало того при использовании идентификатора test где либо в скетче компилятор ругается на незадекларированную numTest .У меня flprog 7.3.8.И еще не сердитесь пожалуйста,передавать знания другим всегда не легко, у всех разный IQ :)
Вложения
Снимок.JPG
блок в компиляторе
define_(Code_-_Basic).ubi
пример блока
(11.55 КБ) 47 скачиваний

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

Новый редактор ПБ (Code-Professional) Быстрый старт

#18

Сообщение aidar_i » 07.07.2022{, 05:03}

Dryundel писал(а):
06.07.2022{, 17:36}
А в коде написать:
#define test numTest
Так не будет работать в старом редакторе.
Нужно переделать на int test = numTest;
Можно и лучше byte , если numTest <=255.
В параметрах задавать numTest.
Если в блоке стоит #define test 40 (сразу число), то работает.
По старому редактору задавайте вопросы в соответствующей теме.

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

Новый редактор ПБ (Code-Professional) Быстрый старт

#19

Сообщение Dryundel » 07.07.2022{, 07:48}

hayk писал(а):
06.07.2022{, 23:14}
у всех разный IQ
Мда, мой явно меня сегодня подвел. :D
hayk писал(а):
06.07.2022{, 23:14}
Так ведь дело в том,что эта конструкция не работает
aidar_i писал(а):
07.07.2022{, 05:03}
Так не будет работать в старом редакторе.
Действительно, в строке дефайна не работает. :smile37: В любом другом месте работает, а здесь нет. Очень странно.
.
Ок, поступаем еще проще.
Удаляем нафиг дефайн (строку #define test numTest)
Вместо него создаем параметр test (хоть int, хоть String без скобок)
И радуемся жизни! :)
defineNEW_(Code_-_Basic).ubi
(11.63 КБ) 55 скачиваний
По сути, параметр является дефайном в ПБ.

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

Новый редактор ПБ (Code-Professional) Быстрый старт

#20

Сообщение Dryundel » 07.07.2022{, 07:53}

aidar_i писал(а):
07.07.2022{, 05:03}
По старому редактору задавайте вопросы в соответствующей теме.
Перенесем.
А вопрос интересный и правильный. :yes:

Ответить

Вернуться в «Обучающие примеры работы в FLProg»