Задачи
Исходным требованием является разработка системы создания визуализации и управления (SCADA) панельного компьютера, устанавливаемого в кабину водителя трамвая.
Система должна обеспечить простоту конструирования, отладки и установки на конечное встраиваемое устройство при этом обладая достаточно широким спектром для дальнейшего масштабирования и внедрения нового либо необходимого функционала.
Отдельно выделяются следующие пункты:
- добиться максимальной производительности конструктора для работы над проектами любого размера;
- предоставить набор визуальных элементов позволяющий закрыть большую часть потребностей конечных пользователей;
- обеспечить простоту и гибкость в настройке каждого визуального элемента на этапе создания визуализации;
- реализовать возможность Undo/Redo ко всем действиям в конструкторе;
- предоставить механизм отладки с возможностью работы напрямую с контроллером для получения и управления данными, так и без контроллера, отображая состояние визуальных элементов по умолчанию;
- ведение журнала всех событий для пользователя, системы, сборки и отладки проекта;
- минимизировать трудозатраты для установки на конечном встраиваемом устройстве.
Описание
Система предназначена для разработки проектов визуализации и управления для панелей операторов, панельных и стационарных компьютеров и других устройств, поддерживающих архитектуру x86_64, ARM (aarch32, aarch64).
Система состоит из 2-х основных подсистем.
- Cobalt. Конструктор визуализации, предоставляющий визуальный интерфейс для разработки визуальных форм и экранов, включающий широкий набор элементов управления, обеспечивающих удобное взаимодействие как с данными контроллера, операционной системы, так и между различными элементами управления.
Рабочая область конструктора состоит из нескольких элементов визуального интерфейса. К ним относятся область рисования (визуальная область конструктора), окно «Обозреватель решения», предоставляющий информацию о проекте, экранах и используемых на них визуальных элементах, «Панель инструментов», «Вывод» отображающий журнал действий и «Свойства».
- Cobalt.Runtime. Предварительно сконфигурированный минимальный linux дистрибутив, включает в себя программное обеспечение, скомпилированное по модели Native AOT в нативное приложение, которое не использует JIT-компиляцию, позволяющее выполнять сконструированную ранее визуализацию и обрабатывать действия пользователя на конечном встраиваемом устройстве.
Результат
В результате создания системы:
- реализована поддержка конструктором работы над экранами с разрешениями от 320 х 240 до 3840 x 2160 с возможностью использовать более 10 000 визуальных элементов на одном экране;
- реализованы 27 визуальных элементов, включающие в себя такие элементы как текст, кнопка, индикатор, таблица и т.д. Элементы предоставляют возможность взаимодействовать и менять своё состояние при получении и обработки данных контроллера, при пользовательских действиях или при событиях, происходящих в операционной системы конечного встраиваемого устройства;
- для более гибкой настройки работы визуальных элементов часть из них получила возможность обрабатывать получаемые события и данные с помощью коллекций соотношения условий и значений (если значение больше 5 необходимо изменить своё состояние на указанное) и масштабирования значений;
- реализована возможность Undo/Redo (отменить действие и отменить отмену действия) всех действия пользователя с помощью значение-ориентированного метода на основе паттерна «Хранитель» (Memento);
- Реализована возможность отладки непосредственно в конструкторе так и на конечном встраиваемом устройстве. Независимо от типа отладки обеспечено полное визуальное соответствие элементов и их состояний, а также пользовательского взаимодействия с элементами;
- разработан простой и удобный механизм информирования пользователя о всех событиях, совершаемых действиях, каждом шаге сборки и детальной информации во время отладки визуализации;
- реализован визуальный установщик для установки, обновления и удаления как дистрибутива на встраиваемом устройстве, так и визуального проекта, который позволяет производить все действия с минимальным участием пользователя;
- обеспечена поддержка встраиваемых устройств на базе следующих архитектур: x86_64, aarch32, aarch64. Конструктор поддерживает работу на 64-разрядной версии Windows 7+.
Применяемые технологии - C#, .NET 8, WPF, Linux