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

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

cheblin

Member
что в AdHoc невозможно передать произвольную заказную выборку?
это к тому, что автор проекта - продумывает заранее, какие типы пакетов ему нужны.
он может спроектировать пакет в котором передаются все X,Y,Z координаты, и отдельные пакеты для каждой координаты по отдельности.

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

данный сценарий максимально эффективен и используется в 90% случаев.

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

да, значительно медленней, да ресурсоёмко, но зато динамично и весело.
 

cheblin

Member
Времени на обработку такого кода и объема кода не жалко
не, не жалко, у клиента свои структуры данных. СВОИ. он НЕ желает ничего менять в своём коде, хочет только написать прослойку, адаптер.

а в вашем мега проекте как с этим работают? что за магия?

и лучше побольше примеров кода, а не мутных заклинаний.
 

pvvx

Активный участник сообщества
это читал? у меня всё просто байтовый массив...
чтобы ты смог ответить юзеру? в терминах кинокадров
На устройство, т.к. это где-то уровень web, т.е. текстовый уровень, был бы передан скрипт примерно такого содержания:
Код:
[cfg-json]
{"id":[18256,1],"cfg":{
$1400,2,,id
,
$1402,32,u8,f
,
$1402,32,u8h,u
,
$1434,,,mc
,
$1436,16,,cmd
,
$1452,5,u32,mf
,
$1462,4,u32,gf
},
@time
}
который бы и описывал необходимый пакет JSON, сформированный из "кинокадра".
 

pvvx

Активный участник сообщества
Т.к. на данном уровне нам необходимо общаться именными переменными, чтобы не переписывать скрипты чужого сервера, то
короткая расшифровка:
Имя пакета cfg-json
по его имени будет сформирован пакет типа такого:
{"id":[18256,1],"cfg":{"id":12345, "f":67,"u":89,"mc":0123,"cmd":456,"mf":789,"gf":0123},"time":unix}
 

pvvx

Активный участник сообщества
Это элементарный пример от первого тестового отладочного варианта. Проект был закрытым и выкладывать конкретику окончательной версии не могу, но примеры и принципы - без проблемс.
 

pvvx

Активный участник сообщества
понятно. таки магия
Именно - просто динамический сериализатор без нарушения атомарностей.
Ну это не жесткий AdHoc по принципам прошлого века, а более ничего и не было :)

Формат описания переменных из "кинокадра" каждый выбирает свой, в зависимости от реализации.
Единственная внутренняя привязка - адрес в "кинокадре".
 

nikolz

Well-known member
"И вот тут некоторые стали себе позволять нашивать накладные карманы и обуживать рукав — вот этого мы позволять не будем!"
 

nikolz

Well-known member
Именно - просто динамический сериализатор без нарушения атомарностей.
Ну это не жесткий AdHoc по принципам прошлого века, а более ничего и не было :)

Формат описания переменных из "кинокадра" каждый выбирает свой, в зависимости от реализации.
Единственная внутренняя привязка - адрес в "кинокадре".
"Да поймите же, барон Мюнхгаузен славен не тем, что летал или не летал, а тем, что не врёт."
 

pvvx

Активный участник сообщества
И у вас странные вопросы - просите описать формат printf(). :)
Доступ к "кинокадру" по адресу имеют все по его внутреннему адресу, хоть php.
 

pvvx

Активный участник сообщества
Вам и привел текст для парсера, который выводит любую переменную из "кинокадра" и оформляет как JSON ответ. Последний атрибут в строчке - это вообще строка к printf(строка, аргумент). А аргумент - выборка переменной из "кинокадра" в описанном до того в строке формате через "," и большинство параметров со значениями по умолчанию. :)
 

cheblin

Member
в контексте микроконтроллеров - это ругательное слово. я бы банил.:)

Всё гениальное - просто.
хорошая эпитафия. запоминающаяся такая...
главное содержимое закопать поглубже!

кстати могу помочь...
а то всё переживаю, конкуренция, то-сё
волнуюсь.



на самом деле нет.
 

pvvx

Активный участник сообщества
не, не жалко, у клиента свои структуры данных. СВОИ. он НЕ желает ничего менять в своём коде, хочет только написать прослойку, адаптер.
Мои устройства и дают клиенту структуры в формате как он хочет.
а в вашем мега проекте как с этим работают? что за магия?
В моем МЕГА Проектище, работающем на малом SoC, предложенным для совместного оформления в open-source где-то на данном форуме никто не откликнулся. Тут мигают светодиодами.
и лучше побольше примеров кода, а не мутных заклинаний.
Принцип, схема работы, вам описана. Если что-то не понятно по схеме - задавайте конкретные вопросы.
 

pvvx

Активный участник сообщества
так что несчастному пользователю передать?

email - лиги сексуальных реформ?
как что - заказать пока бесплатно код AdHoc и пусть внешний google Cloud сервер приспосабливается :)
Ну типа писать email-ы в google, чтобы они там скорректировали и встроили парсер от AdHoc...
 

cheblin

Member
достаточно написать спецификацию и сгенерировать исходники AdHoc генератором.

нафига ему google Cloud ?
 

cheblin

Member
Мои устройства и дают клиенту структуры в формате как он хочет.
наивный.
тебе ещё предстоит с этим столкнуться.
то что пользователю надо у него УЖЕ есть. и он менять этого НЕ хочет.

ему надо чтобы данные заливались в его уже существующие структуры. всё!. и он щаслив.

как это обеспечить? опять заклинания?
а если протокол изменился? ошибки компиляции будут?
 
Сверху Снизу