• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Обсуждение AdHoc бинарный протокол.

pvvx

Активный участник сообщества
А задача элементарная - сократить внутреннюю себестоимость продукции замещая чужое дорогущее оборудование с AdHoc и подобным.
Чтобы оно было рентабельно - стоимость должна быть в от 10 раз менее, а надежность в 10 более :p
Вот часть конкретики вопроса из вики:
Чтобы озадачить конкурентов в плане создания аналогичных продуктов, разработчики патентованного программного обеспечения часто держат детали форматов сериализации своих программ в секрете. Некоторые намеренно запутывают или даже шифруют сериализованные данные.
 

cheblin

Member
понятнее не стало, но

[inline]да сериализация – это вынужденное действие и должно быть адаптировано и прогнуто под задачу, а не ради красоты и прочих фантиков.[/inline]

одно могу сказать, чего бы ты там не-по-на-придумал, как высоко не летал в своём полёте мысли...
но как только данные вышли за пределы материнской платы, контроллера, паралельная шина кончилась, дальше одноколейка

в итоге, их, нужно будет передать по меди/оптоволокну или по радиоканалу, через спутник.

иначе говоря - сериализовать.

AdHoc
позволяет это делать не испытывая боли и унижения...
 

cheblin

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

но
можно договориться ;)
 

pvvx

Активный участник сообщества
понятнее не стало, но

[inline]да сериализация – это вынужденное действие и должно быть адаптировано и прогнуто под задачу, а не ради красоты и прочих фантиков.[/inline]

одно могу сказать, чего бы ты там не-по-на-придумал, как высоко не летал в своём полёте мысли...
но как только данные вышли за пределы материнской платы, контроллера, паралельная шина кончилась, дальше одноколейка

в итоге, их, нужно будет передать по меди/оптоволокну или по радиоканалу, через спутник.

иначе говоря - сериализовать.

AdHoc
позволяет это делать не испытывая боли и унижения...
Каким образом "AdHoc позволяет это делать не испытывая боли и унижения" если все устройства уже имеют свои протоколы?
Для примера был дан nRF Nordic Semiconductor Infocenter
- а там тупикал SLIP.
У детей с EPS он тоже в программаторе в UART ворочается...
А более, чем прошить или послать JSON по указанному на сайте формату для MQTT не требуется.
Следующим формат наблюдаем у Xiaomi в протоколах к BLE.
Т.е. области применения никаких своих форматов в данном сегменте "народное творчество" нет.
А в пром.сфере другие приколы и пока с AdHoc выходит как "обизянка и очки"...
 

pvvx

Активный участник сообщества
Если опуститься ниже по иерархии железок, то дискетами, винчестерами, телефонными модемами никто уже не пользуется, как IR приемо-передатчиками. Это там необходим самосинхронизирующийся побитно протокол. Почему-то пользуются flash с параллельным доступом, а физику USB, торчащую из мамки, на AdHoc пользователю не поменять и здесь никто не разрабатывает интерфейсов для PC.

В итоге единственное применение AdHoc выходит если его использовать (инкапсулировать) в транспорт Modbus или наоборот :) Других пока не дано, т.к. физический и аппаратный уровень бытового хлама давно обеспечивает функциональность AdHoc.
 

cheblin

Member
опять перескочил...

у всех своё форматостроительство, именно по причине отсутствия нормального решения.

да тут, в соседней ветке на вопрос как увязать несколько ESP между собой сыпятся предложения типа MQTT, HTTP и прочие непотребства.

реально - элементарный пересыл байта приводит к установке HTTP сервака, парсирование JSON и прочий бред.
и это в МК!
да я знаю кто сюда заходит...
с ними просто
поменяй им инструкцию с
установи MQTT -​
на
составь спецификацию AdHoc протокола и получи сгенерённый код​

и всё станет ОК

собственно AdHoc залезая на территорию МК, и может стать тем универсальным решением которое выметет нафиг все эти жиробасные безсмысленные решения.
почему?
да потому что может.
 

pvvx

Активный участник сообщества
опять перескочил...

у всех своё форматостроительство, именно по причине отсутствия нормального решения.
Вот ещё пример:
Инкапсуляция и декапсуляция, PDU, уровни OSI.
Смотрим до:
На физический уровень кадры передаются уже в виде сигналов битов и следуют через другие сетевые устройства в пункт назначения.
На этом уровне и предполагается работа AdHoc (?).
Как мы можем 'вынести' это 'жиробасное безсмысленные решение'? Откажемся от сети интернет?
 

pvvx

Активный участник сообщества
Поглядим на WiFi…

Влезем в низкий уровень аппаратуры и начнем гонять AdHoc raw пакеты. Какой роутер это поймет? Сами сделаем свои роутеры – каждый в одиночку, послав скрипт описания на ваш сайт? :)
 

cheblin

Member
На этом уровне и предполагается работа AdHoc (?).
нет конечно.

о ужас. неужели я так плохо пишу документацию.

представьте себе AdHoc как черный ящик. на вход удобные для заполнения пакеты, на выходе сериализованные байты и наоборот

по приведеной ссылке AdHoc на уровне представления и выше
 

pvvx

Активный участник сообщества
IpV6 – фрейм в минимум 1280 октетов, Payload Length 65535 октетов, пакет данных до 4294967295 байт. В MCU получаем сразу-же для параллельного доступа в виде 34359738360 бит, а не побитно и не побайтно. При меньшей длине равносильно потери производительности и скорости канала.

Многие методы передачи через физические (реальные) среды не подразумевают побитную передачу. Только скопом с восстановлением. Это о связи со спутниками…
 

pvvx

Активный участник сообщества
Постоянные отсылки к Rust. А это: Ключевые особенности языка: параллелизм путём передачи сообщений между задачами путем коммутации пакетами (дейтаграммами) мелкого размера.

Классный язык – переход на нижний уровень ОС для передачи пары скомканных бит сопровождается опустошением кешей в несколько мегабайт… Супер производительный язык… Там без AdHoc не обойтись... :)
 

pvvx

Активный участник сообщества
собственно AdHoc залезая на территорию МК, и может стать тем универсальным решением которое выметет нафиг все эти жиробасные безсмысленные решения.
почему?
да потому что может.
Может с начала надо вытеснить бессмысленные игры в языки к неподходящим для них платформам? А не перекладывать их задачу на нижний непроизводительный слой МК?
И пора привыкнуть к параллельному или блочному доступу.
У UART в том веке появилась FIFO, без которой I386 не мог обработать поток в 115200 бит... Но когда стал работать пачкой, то всё полетело...
У ESP8266 UART 128*8 битный :p
 

cheblin

Member
Rust - фантастически классный язык, собравший вокруг себя прекрасное комюнити!
 

pvvx

Активный участник сообщества
Это был наглядный комент про Rust и необходимость сериализации на MK и связей между MK :)
У многих USB-UART микрух вроде 384 байта блок... Но не менее 64 - это от USB1.1, а на дворе USB3+... При меньшем - потери производительности канала.
 

pvvx

Активный участник сообщества
Ладно – я убежал пока с данной темы, а то подумают что троллю вас, как жирный тролль знающий тему... :cool:
 

pvvx

Активный участник сообщества
Выводы о AdHoc уже сделали по вашему описанию:

Играйте в танчики и мнимые черные ящики – там прекрасное комюнити!

А обмен между МК нам говорит: передача на 9600 бод с AdHoc имеет больше размер прошивки, больше затрат процессорного времени на прерывания и обработку каждого символа чем переключение на 3мбит/c с DMA и передача всей RAM MK сотню раз в сек без всякой индексации, типизации, сериализации, сжатия потока,…
 

cheblin

Member
готово!
для случая когда язык кодо генерации С и генерируемые пакеты фиксированной длинны ( в качестве данных полей не используются строки или динамические массивы) к генерируему коду прикладывается упрощёный рантайм. Который совершенно точно влезет даже в STM8.

к чему это и как это использовать?

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

создаём единую AdHoc спецификацию, которая описывает всю топологию сети. Для микроконтроллеров с элементарным протоколом, будет сгенерирован код с упрощёной библиотекой, а для хаба код с расширенной либой и всё будет работать

сейчас делаю демонстрационное пошаговое руководство
 
Сверху Снизу