• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Предложение Генератор исходного кода обработки бинарного протокола BlackBox

cheblin

Member
BlackBox генерирует исходный код на следующих языках программирования JAVA, C#, C. Планируется поддержка SWIFT.

На данный момент, кодогенератор BlackBox построен как SaaS. Для получения сгенерированного кода необходимо:

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

Проверить, что спецификация успешно компилируется, и послать её исходник, в виде аттачмента письма на почтовый адрес OneBlackBoxPlease@outlook.com . Сервер периодически забирает присланные спецификации из этого ящика, проверяет их корректность. Генерирует заказанный в спецификации исходный код на требуемых языках программирования. После этого создается несколько тестов и исходники прогоняются через них. Если все тесты прошли успешно, то сгенерированный код, последний прошедший тест, а также пример использования заказанного API упаковывается в архив и высылается адресату. В случае обнаружения ошибки, отправитель уведомляется о возможной задержке и служба поддержки BlackBox разбирается с возникшим затруднением.

Тут можно найти пример высылаемого сгенерированного кода, а тут использование этого кода в выше упомянутом, демонстрационном проекте управления с андроида вспышками светодиода на демоплате собранной на STM8.

Используя BlackBox вы сможете с лёгкостью наладить связь не только между микроконтроллерами, мобильными устройствами но и обычными компьютерами. И что важно, с минимальными затратами времени и сил. Фактически код сгенерированный BlackBox может стать каркасом Вашего распределенного приложения. Программисту останется просто добавить обработчики на события приёма пакета, а также логику создания пакета, заполнения его данными и отправки его получателю.
 

Юрий Ботов

Moderator
Команда форума
:) вот блинк на наивном ассемблере stm8s:
Код:
include stm8s003._
//
// classical 'blink' 30 bytes code length
// no external quarz, use hsi
//

//003
define gpio    gpioa
define led    3

define stackInit(stackponter) x=stackponter;sp=x
define gpioAsOutput(port,pin) portddr#pin=#1;portcr1#pin=#1

// interrupt vectors
interrupt reset@0x8000: (f32) {0x82000000+start}     // set reset vector to start of flash
// other interrupt vectors no needed for primitive blink

// delay procedure
delay60k: x = #65530                       // 65530 tacts delay
       delay60local: x--;  if z==0 delay60local;  ret

// main block
start:                                                     // default entry point (see interrupt vectors in stm8s._)
        stackInit(#ramend)                  // initialise stack pointer (it is assembler!!!)
        gpioAsOutput(gpio,led)           // for output    

loop:   call near delay60k                // delay
    ! gpio odr#led                                // invert led
    go near loop                                   // next...
Если убрать комментарии и дефайны вставить в код (они тут просто для демонстрации)... код будет короче чем его "формальное описание" и при этом нагляднее... нет, адептам java, конечно, Java - нагляднее.
 

cheblin

Member
Если убрать комментарии и дефайны вставить в код (они тут просто для демонстрации)... код будет короче чем его "формальное описание" и при этом нагляднее... нет, адептам java, конечно, Java - нагляднее.
вот тут статья по теме

только не зацикливайтесь на выносе интерфейсов, как это со всеми происходит.

ключевое это генератор исходного кода обработки бинарного протокола BlackBox. там очень много ссылок. и на исходники.

останутся вопросы?
велкам!
 
Сверху Снизу