Flexible драйвер
Flexible драйвер AggreGate – это гибкий инструмент для самостоятельного описания протокола взаимодействия с устройствами. Лучше всего он подходит для бинарных или текстовых проприетарных протоколов, использующих в качестве транспорта TCP, UDP или последовательные порты. Flexible драйвер выступает в роли посредника между бизнес-логикой и техническими задачами уровня операционной системы, такими как управление портами, установка соединения, организация буферов и потоков и др.
Закрывая большинство задач, которые обычно требуют программирования на Java, Flexible драйвер позволяет инженеру сконцентрироваться на описании формата сообщений и бизнес-логики преобразования этих сообщений в единую модель данных.
Flexible драйвер применим в следующих случаях:
- Обмен информацией осуществляется через TCP, UDP или последовательные порты
- Протокол обмена является бинарным или текстовым
- В протоколе обмена отсутствуют «транзакции» или сложные «переговоры». Например, отсутствуют последовательности отдельных сообщений, которые вместе образуют одну протокольную единицу с передаваемой порцией данных
- Протокол основан на:
- асинхронных сообщениях от устройств
- запросов со стороны сервера и последующих ответах
- смешанной модели синхронных и асинхронных команд
- Ответы устройств на запросы сервера приходят в том же порядке, в котором отправляются запросы, или содержат ID сообщений, отправляемых сервером
Необходимые настройки драйвера:
- Настройки подключения устройства
- Настройки протокольных единиц (разделитель сообщений, параметры декодирования и т.д.)
- Настройки маршрутизации сообщений
- Описание модели данных устройства (переменные, функции, события)
- Настройки преобразования из протокола в модель данных и обратно
Типичные сценарии применения
Сервер запрашивает данные с устройств
В результате изменения переменной или иного события единой модели данных, привязанного в настройках Flexible драйвера, согласно описанным правилам генерируется исходящее сообщение устройству. Получаемые фрагменты ответа устройства собирается во входящем буфере и анализируются разделителем входного потока. Полностью собранное сообщение декодируется и обрабатывается по заданной бизнес логике.
Устройства отправляют асинхронные сообщения
В данном сценарии устройства устанавливают соединение с сервером AggreGate на заданный порт. Полученные фрагменты сообщений разбираются по разным протокольным единицам, декодируются и затем идентифицируются на принадлежность тому или иному устройству. Сообщение маршрутизируется своему устройству, где происходит дальнейшее преобразование в модель данных и генерация необходимых событий.