ETrace
Тип ETrace обеспечивает возможность записи, хранения, обработки и отображения данных и представляет собой набор координат (X, Y), где X — это значение по оси абсцисс, а Y — значение по оси ординат. Этот тип данных может применяться для работы с временными рядами, частотными развертками, статистическими данными и т.д.
Существует отдельная группа инструментов для работы с типом ETrace. Найти их можно в соответствующей категории
Свойства

Name — название трейса. Оно отображается на подписи к точкам графика при наведении курсора.
Tag — идентификатор трейса. Идентификатор (ключевое обозначение) обеспечивает возможность поиска необходимого трейса в множестве (коллекции) объектов данного типа с целью выполнения дальнейших манипуляций.
X Label — наименование горизонтальной оси (ось X).
Y Label — наименование вертикальной оси (ось Y).
X Scale — настройка отображения данных по оси X в линейном либо логарифмическом масштабе.
Color — настройка цвет графика.
Show point marker — настройка отображения маркеров для каждой точки данных на графике.
В нижней части таблицы с данными расположены следующие кнопки:
Add — добавить новую точку в таблицу данных (в трейс).
Remove — удалить выбранную точку из таблицы данных.
Clear All — удалить все точки из таблицы данных (очистить Trace).
В большинстве случаев, окно просмотра таблицы данных и соответствующего графика трейса используется в процессе отладки разрабатываемой программы до завершения создания интерфейса пользователя. Основные манипуляции с типом ETrace выполняются на программном холсте посредством применения соответствующих блоков.
Пример
Рассмотрим выполнение базовых операций с типом ETrace на примере.

В представленном примере реализованы следующие функции: заполнение трейса заданным количеством случайных значений Y с равномерным смещением по оси X; очистка данных трейса; добавление в трейс пары значений (X,Y); удаление точки трейса по заданному индексу; сортировка трейса по возрастанию значений X. Результаты выводятся на график с прямоугольной системе координат.
1. Создадим глобальные переменные, необходимые для работы программы. Данные переменные мы будем использовать с привязкой к элементам управления интерфейса пользователя.

ETrace – переменная типа ETrace, над которой мы будем выполнять различные манипуляции. pointIndex – индекс точки в трейсе. X – значение X. Y – значение Y. pointsNum – количество точек. Xpoints – массив точек X. Ypoints – массив точек Y. delay – значение задержки в миллисекундах. enableETrace – переменная типа Boolean.
- Создадим интерфейс пользователя. Нажмите правой кнопкой по заголовку программы и выберите пункт меню «Добавить новый элемент».

Выберите элемент «Панель управления» и введите имя элемента. Нажмите кнопку «Создать»

Добавьте на панель управления следующие элементы:
Пользовательские -> Пользовательский тип;
Ввод данных -> Числовой ввод (5 элементов);
Интерактивные элементы -> Кнопка (5 элементов);
Визуализация данных -> Декартова диаграмма.

Последовательно выберите каждый из добавленных элементов, в свойствах элементов введите соответствующие имена и выполните привязку значения к переменным следующим образом:
Трейс: значение -> переменная ETrace;
Значение X: значение -> переменная X;
Значение Y: значение -> переменная Y;
Количество точек: значение -> переменная pointsNum;
Задержка: значение -> delay;
Индекс точки: значение -> pointIndex;
Пример привязки элемента панели управления «Значение X» к переменной Х показан на следующем рисунке.

Включите событие «Click» и введите имя в свойствах каждой кнопки.

Нажмите правой кнопкой мыши по графику и выберите пункт меню «Настройка». Выполните настройку графика, как показано на следующем рисунке.

Перейдем на холст выполняемой программы. Действия программы будут происходить по нажатию пользователем на соответствующие кнопки. Для этого запуск программы должен начинаться с отображения дашборда, также создадим новый объект трейса. Добавьте блок «ShowDashboard» и выберите созданную панель управления в меню настройки:

Аналогичным образом добавьте блок «CreateInstance», укажите переменную ETrace в качестве выходной переменной. Свяжите стартовый узел программы с добавленными блоками, как показано на рисунке.

Для обработки события нажатия каждой кнопки необходимо добавить на холст пять блоков «Handler». Назначьте событие в свойствах каждого блока «Handler». Пример назначения обработки события нажатия кнопки очистки трейса в свойствах блока «Handler» показан на следующем рисунке.

Выполните настройку блоков «Handler» для оставшихся четырех кнопок аналогичным образом.
Каждый блок обработки события свяжем с программным алгоритмом, обеспечивающим соответствующие манипуляции с переменной ETrace. Добавьте на холст блоки ETrace.Clear, ETrace.AddPoint, ETrace.RemovePoint, ETrace.SortByX. В качестве входной переменной Trace во всех блоках укажите переменную ETrace . В блоках, которые требует передачи индекса точки «Index» укажите переменную pointIndex.
Выполнение манипуляций с трейсом завершается обновлением графика на панели управления. Для этого применяется блок ETrace.GetPoints, который передает точки указанного трейса в два массива. Вы можете передать как все точки, так и указать начальный индекс, а также количество точек, которые необходимо передать в массив. В нашем случае данные передаются в массивы Xpoints и Ypoints, которые также являются источником значений X и Y графика на панели управления.

После передачи данных из трейса в массив следует вызвать блок UpdateChart, который обеспечит отображение новых данных на графике пользовательского интерфейса. В свойствах выберем панель управления и график, который следует обновить.

Код программы для четырех операций с трейсом выглядит следующим образом:

Дополним холст алгоритмом заполнения трейса заданным количеством случайных точек.

Значение из поля числового ввода «Количество точек» будет передаваться в переменную pointsNum, значение из поля «Задержка, мс» - в переменную delay.
Для кнопки «Добавить точки» включено событие «Click», сделаем кнопку недоступной для нажатия, пока идёт построение Trace. Для этого привяжем свойство активности к переменной enabledETrace.

Вернёмся на холст программы.
В блоке Handler выберем созданное событие.

В блоке SetVariable обнулим значения по X и сделаем кнопку Старт недоступной для клика.

Далее также добавим блок ETrace.Clear. Это необходимо для того, чтобы в Trace хранилось только последнее испытание. Если вам необходимо сохранять все значения, то этот блок можно опустить.

В цикле произведём заполнение Trace. Условие зададим в блоке If-Else с помощью следующего Expression
X<pointsNum,
где pointsNum - это количество точек, введённое пользователем на панели управления.
В блоке Random сгенерируем случайное значение от 1 до 10 и запишем его в переменную Y.

Следующим блоком идёт ETrace.AddPoint. Тут мы добавим текущие «X» и «Y» в переменную ETrace.

Затем, увеличим значение X в блоке SetVariable.

И добавим задержку в блоке Delay. Желаемое время задержки вводится пользователем в миллисекундах (мс) в соответствующее поле на панели управления.

Обновим данные на графике и зациклим алгоритм. После того как условие в блоке If-Else перестанет выполняться и Trace заполнится, необходимо сделать кнопку 'Старт' снова доступной для клика. Для этого протянем связь из выхода False блока If-Else до блока SetVariable и установим там значение True для переменной enabledETrace.

Создание программы завершено. Можно запускать проект и смотреть, что получилось.

