Редактор пользовательских блоков на С (Professional).
Общие термины и понятия.
Редактор предназначен для создания пользовательских блоков на языке С. В отличие от редактора Basic, он имеет расширенный функционал, и дополнительные возможности.
Редактор доступен в программе FLProg, начиная с версии 7.0.
Основное окно редактора.

Блок, созданный в редакторе, может представлять собой как один блок, так и пакет блоков объединённых общим функционалом.
В случае если в пакете содержится один блок, то в библиотеке пользовательских блоков он и представляется как один блок. Если в пакете содержится несколько блоков,
то в библиотеке они представляются как папка. Порядок блоков в этой папке, названия, разбивка по подпапкам задается на соответствующей ветке в дереве редактора блока.
Поэтому пользовательский блок, созданный в этом редакторе, далее будем называть мультиблок.
Отдельные блоки, входящие в пакет далее будут называться блоками.
Блоки входящие в мультиблок могут группироваться в папки (исключительно визуальное разделение для удобства), или группы (логическое разделение).
Блоки перенесённые на схему проекта называются экземплярами блока
Общий принцип построения мультиблока
При создании блока можно использовать параметры – задаваемые пользователем значения, которые можно изменять в процессе создания
проекта в FLProg. Параметры разделяются на общие параметры и параметры экземпляра. Существуют общие параметры мультиблока, общие параметры группы, общие параметры блока.
Общие параметры мультиблока будут показаны в настройках всех экземпляров блоков входящих в мультиблок при использовании их в проекте.
При изменении этого параметра в одном экземпляре, значение этого параметра изменится и в других экземплярах блоков мультиблока входящих в проект.
Общие параметры группы будут показаны в настройках всех экземпляров блоков входящих в эту группу при использовании их в проекте.
При изменении этого параметра в одном экземпляре, значение этого параметра изменится и в других экземплярах блоков этой группы входящих в проект.
Общие параметры экземпляра будут показаны в настройках всех экземпляров данного блока. При изменении этого параметра в одном экземпляре, значение этого параметра изменится и в других экземплярах
данного блока входящих в проект.
Параметры экземпляра, как и общие параметры блока показываются во всех экземплярах блока. Но при изменении данного параметра он изменяется только в конкретном экземпляре.
При компиляции проекта, для мультиблока формируется два вида вставляемого кода. Общий код, и код каждого экземпляра
Общий код вставляется в скетчь ОДИН раз вне зависимости от количества применённых в проекте экземпляров блоков.
Код каждого экземпляра вставляется в скетчь для каждого экземпляра блока.
Как и в случае параметров, существует общий код мультиблока, общий код группы, общий код экземпляра.
Общий код мультиблока вставляется в код скетча один раз при использовании в проекте любого экземпляра блока входящего в пакет блоков.
Общий код группы вставляется в скетч один раз при использовании в проекте любого из экземпляров блоков входящих в данную группу.
Общий код блока вставляется в скетч один раз при использовании экземпляров данного блока в проекте.
Код каждого экземпляра вставляется в скетч для каждого экземпляра блока, применяемого в проекте
Каждый из этих видов кода разделяется на секции, в соответствии с местом вставки в скетчь
Это секции “Declare”, “Setup”, “Loop”, “Functions”. Они соответствуют секциям в скетче в Arduino IDE.
Каждая секция разбита на участки в соответствии с местом вставки кода в секцию.
Код из Начала секции вставляется в соответствующую секцию скетча до кода, который вставляется компилятором программы FLProg для стандартных блоков.
Код из Конца секции вставляется в соответствующую секцию скетча после кода, который вставляется компилятором программы FLProg для стандартных блоков.
Код секции “Functions” вставляется всегда в конец скетча.
Для кода каждого инстанса в секции “Loop” существует дополнительный участок Место вставки блока.
Код из этого участка вставляется в секции Loop скетча в месте вставки конкретного экземпляра блока.
В каждом участке кода возможно создание одного или нескольких элементов кода. В элементе кода прописывается непосредственно сам код на языке С, который будет вставляться в скетчь.
Для управления видимостью параметров блока в проекте, наличием входов и выходов у блока в проекте, а также вставкой элементов кода в скетчь используются Условия.
Для создания условий применяются как значения параметров, так и некоторые системные значения проекта. Как и параметры, условия разбиваются на общие условия, и условия каждого экземпляра.
Общие условия мультиблока могут использовать только общие параметры мультиблока, и системные значения проекта. Эти условия могут использоваться для управления в любом инстансе, и для любого элемента кода.
Общие условия группы могут использовать системные значения проекта, общие параметры мультиблока, общие параметры групп в которые входит данная группа, общие параметры этой группы. Эти условия доступны для управления во всех инстансах, которые входят в эту группу, и элементами общего кода данной группы, и групп которые входят в эту группу.
Общие условия экземпляра могут использовать системные значения, значения общих параметров данного блока, значения общих параметров всех групп в которые данный инстанс входит, а так же значения общих параметров мультиблока. Эти условия могут применятся для управления в данном блоке.
Условия каждого экземпляра могут использовать системные значения, значение параметров данного экземпляров данного блока, значения общих параметров данного блока, значения общих параметров всех групп в которые данный блок входит, а так же значения общих параметров мультиблока. Эти условия могут применятся для управления в данном экземпляре блока.
Все используемые инстансами библиотеки загружаются в мультиблок.
А в каждом конкретном блоке, указывается, какую библиотеку блок использует. При компиляции проекта выгружаются только те библиотеки, которые используются экземплярами блоков применёнными в проекте.