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

Напомню, что кодогенератор BlackBox генерирует исходный код (JAVA, C#, C) обработки протокола обмена, согласно описанию пользователя, в предопределенном формате. Это обычный JAVA файл для, редактирования которого к JAVA проекту нужно подключить набор аннотаций описания данных и следовать небольшому набору правил.

Описав протокол обмена, пакеты, каналы, хосты, коммуникационные интерфейсы, топологию сети и указав языки(JAVA, C#, C) на которых вам нужен исходный код, проверяем, что ошибок нет и файл успешно компилируется.

После чего отправляем исходник в виде аттачмента письма, на почтовый адрес OneBlackBoxPlease@outlook.com.

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

Если все тесты прошли успешно, то сгенерированный код, последний прошедший тест, а также пример использования заказанного API упаковывается в архив и высылается адресату.

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

Содержимое высылаемого архива может, например, выглядеть так.



И вот недавно, для подтверждения зрелости и в качестве демонстрации возможностей BlackBox, был создан проект конвертации информации о пакетах широко известного протокола управления беспилотными устройствами MAVLink в формат BlackBox.

В MAVLink описание протокола происходит в XML формате. В формате BlackBox этот файл выглядит так.

Конечно BlackBox имеет существенно большее, по сравнению с MAVLink, разнообразие типов данных, поэтому проект демонстрирует только часть возможностей BlackBox. Подробнее о проекте конвертации можно прочитать тут.

Результат проекта подтвердил — BlackBox легко может заменить MAVLink. Все тесты пройдены успешно, все прекрасно работает. Но, для того чтобы, в контексте MAVLink, воспользоваться всеми возможностями BlackBox, придется пересматривать описание протокола.



Итоги:

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

Помимо очевидного применения в распределенных приложениях, с BlackBox Вы легко сможете например: написать свой протокол к SQLite, на любом из языков JAVA, C#, C,
создать свой оптимальный формат выгрузки информации в файл, с последующим чтением.

И, конечно же… перенести интерфейс управления микроконтроллером на сторону оператора.

Комментарии (2)


  1. vassabi
    20.02.2018 17:00

    перечитал ту тему и эту.
    Хммм… я правильно понимаю, что у вас там внутри универсальная двунаправленная пересылка данных спрятана — из устройства на мобильник и обратно (а для показометров это или нет — это уже дело пятое)?

    А у вас есть варианты, чтобы скачать только один универсальный «плеер», а подключать в него крутилки\стрелки\кнопки динамически — при спаривании с очередным изделием?


    1. cheblin Автор
      20.02.2018 17:22

      Универсального «плеера» нет. Каждый раз уникальный «плеер» создается кодогенератором под ваши задачи. На стороне сервера… а там целая вселенная, на SCALA под это развернута.