• Система автоматизации с открытым исходным кодом на базе 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
Мои устройства и дают клиенту структуры в формате как он хочет.
наивный.
тебе ещё предстоит с этим столкнуться.
то что пользователю надо у него УЖЕ есть. и он менять этого НЕ хочет.

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

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