В продолжение темы, где читатели сконцентрировавшись исключительно на теме интерфейса (хулиганы кнопок и энкодеров лишают), совершенно упустили, что предложение вынести интерфейс с микроконтроллера на мобильник или компьютер всего лишь один, из многочисленных вариантов применения кодогенератора 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,
создать свой оптимальный формат выгрузки информации в файл, с последующим чтением.
И, конечно же… перенести интерфейс управления микроконтроллером на сторону оператора.
Напомню, что кодогенератор 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,
создать свой оптимальный формат выгрузки информации в файл, с последующим чтением.
И, конечно же… перенести интерфейс управления микроконтроллером на сторону оператора.
vassabi
перечитал ту тему и эту.
Хммм… я правильно понимаю, что у вас там внутри универсальная двунаправленная пересылка данных спрятана — из устройства на мобильник и обратно (а для показометров это или нет — это уже дело пятое)?
А у вас есть варианты, чтобы скачать только один универсальный «плеер», а подключать в него крутилки\стрелки\кнопки динамически — при спаривании с очередным изделием?
cheblin Автор
Универсального «плеера» нет. Каждый раз уникальный «плеер» создается кодогенератором под ваши задачи. На стороне сервера… а там целая вселенная, на SCALA под это развернута.