Flexible драйвер

Flexible Driver

Flexible драйвер AggreGate – это гибкий инструмент для самостоятельного описания протокола взаимодействия с устройствами. Лучше всего он подходит для бинарных или текстовых проприетарных протоколов, использующих в качестве транспорта TCP, UDP или последовательные порты. Flexible драйвер выступает в роли посредника между бизнес-логикой и техническими задачами уровня операционной системы, такими как управление портами, установка соединения, организация буферов и потоков и др.

Закрывая большинство задач, которые обычно требуют программирования на Java, Flexible драйвер позволяет инженеру сконцентрироваться на описании формата сообщений и бизнес-логики преобразования этих сообщений в единую модель данных.

Flexible драйвер применим в следующих случаях:

  • Обмен информацией осуществляется через TCP, UDP или последовательные порты
  • Протокол обмена является бинарным или текстовым
  • В протоколе обмена отсутствуют «транзакции» или сложные «переговоры». Например, отсутствуют последовательности отдельных сообщений, которые вместе образуют одну протокольную единицу с передаваемой порцией данных
  • Протокол основан на:
    • асинхронных сообщениях от устройств
    • запросов со стороны сервера и последующих ответах
    • смешанной модели синхронных и асинхронных команд
  • Ответы устройств на запросы сервера приходят в том же порядке, в котором отправляются запросы, или содержат ID сообщений, отправляемых сервером

Необходимые настройки драйвера:

  • Настройки подключения устройства
  • Настройки протокольных единиц (разделитель сообщений, параметры декодирования и т.д.)
  • Настройки маршрутизации сообщений
  • Описание модели данных устройства (переменные, функции, события)
  • Настройки преобразования из протокола в модель данных и обратно

Типичные сценарии применения

Сервер запрашивает данные с устройств

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

Устройства отправляют асинхронные сообщения

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

Диаграмма Flexible Driver