jenya7 0 16 июля, 2018 Опубликовано 16 июля, 2018 · Жалоба а теперь простым языком - как создать уникальный заголовок? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 16 июля, 2018 Опубликовано 16 июля, 2018 · Жалоба . . . Есть например COBS. . . . COBS, pdf - насколько я понял. Спасибо, поглядим, "что за зверь". а теперь простым языком - как создать уникальный заголовок? Ну, например. У Вас максимальный размер поля данных - 4 байта (бинарные) "прореживаете" все поля данных 0x00. Заголовок пакета 5 байт: 0x55 - 0x01 - 0x02 - 0x03 - 0x04 Завершаете пакет 0x00 - 0x00 - 0x00 - CRC_Hi - CRC_Lo (примитив, всяческое охаивание приветствуется) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 16 июля, 2018 Опубликовано 16 июля, 2018 (изменено) · Жалоба COBS, pdf - насколько я понял. Спасибо, поглядим, "что за зверь". Ну, например. У Вас максимальный размер поля данных - 4 байта (бинарные) "прореживаете" все поля данных 0x00. Заголовок пакета 5 байт: 0x55 - 0x01 - 0x02 - 0x03 - 0x04 Завершаете пакет 0x00 - 0x00 - 0x00 - CRC_Hi - CRC_Lo (примитив, всяческое охаивание приветствуется) а что гарантирует что CRC_Hi - CRC_Lo примут отличное от заголовка значение? в принципе я тут подумал - это нужно только для парсинга - а парсинг будет на стороне компа - там можно будет применить и более сложные алгоритмы. Изменено 16 июля, 2018 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 16 июля, 2018 Опубликовано 16 июля, 2018 · Жалоба а что гарантирует что CRC_Hi - CRC_Lo примут отличное от заголовка значение? заголовок состоит из 5 байт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 34 16 июля, 2018 Опубликовано 16 июля, 2018 · Жалоба а теперь простым языком - как создать уникальный заголовок? Если уж так неохота возиться с подменой символа, то делайте преамбулу, 4-6 байт с уникальными числами, вероятность совпадения будет ничтожно малой, да и если совпадет преамбула, то уж точно не сойдется КС... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 3 16 июля, 2018 Опубликовано 16 июля, 2018 · Жалоба COBS, pdf - насколько я понял. Спасибо, поглядим, "что за зверь". дык классический PPP тоже вполне юзабелен Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 16 июля, 2018 Опубликовано 16 июля, 2018 · Жалоба а теперь простым языком - как создать уникальный заголовок?Зачем вам заголовок? У вас все записи одинаковой длинны, никаких заголовков не нужно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 16 июля, 2018 Опубликовано 16 июля, 2018 · Жалоба Зачем вам заголовок? У вас все записи одинаковой длинны, никаких заголовков не нужноа как узнать где начало следующей записи? я не могу гарантировать что запись начнется с нулевого индекса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 16 июля, 2018 Опубликовано 16 июля, 2018 · Жалоба а как узнать где начало следующей записи? я не могу гарантировать что запись начнется с нулевого индекса. А с какого ещё она может начаться? Вы заполняете блок фиксированного размера записями так же фиксированного размера. При этом запись не пересекает границу блока. Т.е. каждая запись начинается с индекса N*sizeof(record) (где N - номер записи). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 16 июля, 2018 Опубликовано 16 июля, 2018 · Жалоба COBS, pdf - насколько я понял. Спасибо, поглядим, "что за зверь". В википедии достаточно хорошо описано: https://en.wikipedia.org/wiki/Consistent_Ov...d_Byte_Stuffing И размер кадра вовсе не ограничивается 254 байтами - легко расширяется до любого размера. Просто оверхед будет равен: //вычисление величины увеличения размера данных при кодировании payload байт в COBS #define CobsCodedOver(payload) ((sizeof(payload) - 1) / 254 + 1) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Segment 3 16 июля, 2018 Опубликовано 16 июля, 2018 · Жалоба И размер кадра вовсе не ограничивается 254 байтами - легко расширяется до любого размера. Поясните, пожалуйста, как размер кадра расширяется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 16 июля, 2018 Опубликовано 16 июля, 2018 · Жалоба Поясните, пожалуйста, как размер кадра расширяется. Вы почитайте описание протокола и подумайте логически. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 64 17 июля, 2018 Опубликовано 17 июля, 2018 · Жалоба а теперь простым языком - как создать уникальный заголовок? Достаточно сделать заголовок пакета 0x55FA, постоянную длину пакета и контрольную сумму в конце пакета. Тогда начало определяем по заголовку, набираем из потока байтов(или буфера) постоянную длину и проверяем контрольную сумму. Если контроль не прошёл, то значит 0x55FA это данные, а не заголовок. Ищем в набранном заголовок, если не находим, то отбрасываем набранное вообще, если находим - набираем еще байтов от нового заголовка. И т.д. пока не засинхронизируемся с потоком. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 17 июля, 2018 Опубликовано 17 июля, 2018 · Жалоба Достаточно сделать заголовок пакета 0x55FA, постоянную длину пакета и контрольную сумму в конце пакета. Тогда начало определяем по заголовку, набираем из потока байтов(или буфера) постоянную длину и проверяем контрольную сумму. Этот колхоз вообще никакого отношения не имеет к COBS. COBS - кодонезависимый протокол, не нуждающийся в костылях типа контрольных сумм и поисках чего-то. И однопроходный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 17 июля, 2018 Опубликовано 17 июля, 2018 · Жалоба Для связи между платами (или MCU<->CPU/FPGA) практически всегда использую байт-стаффинг. Простой, надежный. Переменная длина сообщений вообще радует - сделал себе что-то наподобие мессенджера - при этом не нужны поля размера пакета в структурах обмена и связанные с этим головные боли тоже ушли. COBS слышал, не применял, не знаю :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться