☰ Содержание
Параметр "Массив"




Параметр «Массив» служит для использования в блоке массива существующего в проекте.




При настройке параметра можно задать фильтр по размеру параметра.




Это ограничит выбор массивов только массивами с заданным размером.

Так же можно задать фильтр по типу массива.




В появившейся таблице, можно выбрать какие типы массивов будут доступны к выбору или созданию.

С помощью кнопки «Выбрать всё» (1) будут выбраны все типы с помощью кнопки «Снять всё»(2),выбор снимется со всех строк.

При настройке блока в проекте этот параметр предоставляет стандартный интерфейс выбора или создания массива.




При нажатии кнопки «Выбрать» открывается стандартное окно выбора массива из существующих в проекте массивов.




А при нажатии кнопки «Создать» открывается стандартное окно создания массива.




Для параметра «Массив» формируется три тэга состоящее из имени массива и указания передаваемого значения.




Для использования в коде доступны все три тэга, а для использования в условии доступны тэги типа массива и размера массива.

Пример использования параметра «Массив».

Абстрактный блок вывода группы точек на дисплей. Данный блок умеет принимать массив типов Byte, Integer, и Unsugned Long Integer. Блок выводит на дисплей прямоугольник из точек. Каждая линия закодирована битами числа элемента массива. Исходя из этого, ширина прямоугольника будет зависеть от типа массива. А высота от количества элементов массива.

Для начала создаем параметр «Массив с точками»




Создаем три условия по одному для каждого из типов массива.




В секции Loop, кода каждого экземпляра, на участке места вставки блока, создадим три элемента кода с условием вставки в зависимости от условия. В этих элементах пропишем задание ширины линии в зависимости от типа массива.








Вслед за ними создадим элемент кода основной прорисовки.




Разберём что у тут написано.

if ( <Разрешение отрисовки> ) {

Это команда на разрешение отрисовки массива получаемая со входа «Разрешение отрисовки».

for ( int i = 0; i<= <Массив с точками.S> ; i++)

Пробегаемся в цикле по всем элементам массива, полученного из параметра начиная с 0-го элемента до конечного элемента заданного тегом <Массив с точками.S> который возвращает размер выбранного массива.

<Массив с точками.T> Line_ = <Массив с точками.N> [i];

Создается временная переменная с типом соответствующим типу массива. Тэг <Массив с точками.T> при компиляции вернёт значения типа массива в стандарте С. Например, для типа Integer это будет int . В эту переменную записывается значение очередного элемента массива.

for (int i1=0; i1<= ; i1++ )
 {
 byte newX_ = + i1;
 byte newY_ = + i1;
 if ( bitRead(Line_ , i1)) {myOLED.setPixel(newX_ , newY_ );}
 }


Здесь мы пробегаем по битам элемента массива и в зависимости от значения бита засвечиваем или нет точку. В результате компиляции этого блока с выбранным массивом типа Intrger размером 10 элементов в скетче получаем следующий код.

_tempVariable_byte =15;
if((0))
 {
 for (int i = 0; i<=10; i++)
  {
  int Line_175838602 = _FLPArray155774681[i];
  for (int i1=0; i1<= _tempVariable_byte; i1++)
   {
   byte newX_175838602 = 2 + i1;
   byte newY_175838602 = 0 + i1;
   if (bitRead(Line_175838602, i1))
    {
    myOLED.setPixel(newX_175838602, newY_175838602);
    }
   }
  }
 }