• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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. там очень много ссылок. и на исходники.

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