реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Битые записи в массиве.
Jenya7
сообщение Jul 16 2018, 11:25
Сообщение #16


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



а теперь простым языком - как создать уникальный заголовок?
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jul 16 2018, 12:05
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(jcxz @ Jul 16 2018, 13:34) *
. . . Есть например COBS. . . .

COBS, pdf - насколько я понял. Спасибо, поглядим, "что за зверь".


Цитата(Jenya7 @ Jul 16 2018, 14:25) *
а теперь простым языком - как создать уникальный заголовок?

Ну, например. У Вас максимальный размер поля данных - 4 байта (бинарные)
"прореживаете" все поля данных 0x00.
Заголовок пакета 5 байт: 0x55 - 0x01 - 0x02 - 0x03 - 0x04
Завершаете пакет 0x00 - 0x00 - 0x00 - CRC_Hi - CRC_Lo
(примитив, всяческое охаивание приветствуется)


Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jul 16 2018, 12:09
Сообщение #18


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(k155la3 @ Jul 16 2018, 18:05) *
COBS, pdf - насколько я понял. Спасибо, поглядим, "что за зверь".


Ну, например. У Вас максимальный размер поля данных - 4 байта (бинарные)
"прореживаете" все поля данных 0x00.
Заголовок пакета 5 байт: 0x55 - 0x01 - 0x02 - 0x03 - 0x04
Завершаете пакет 0x00 - 0x00 - 0x00 - CRC_Hi - CRC_Lo
(примитив, всяческое охаивание приветствуется)

а что гарантирует что CRC_Hi - CRC_Lo примут отличное от заголовка значение?

в принципе я тут подумал - это нужно только для парсинга - а парсинг будет на стороне компа - там можно будет применить и более сложные алгоритмы.

Сообщение отредактировал Jenya7 - Jul 16 2018, 12:12
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jul 16 2018, 12:13
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(Jenya7 @ Jul 16 2018, 15:09) *
а что гарантирует что CRC_Hi - CRC_Lo примут отличное от заголовка значение?

заголовок состоит из 5 байт.
Go to the top of the page
 
+Quote Post
mantech
сообщение Jul 16 2018, 12:19
Сообщение #20


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Jenya7 @ Jul 16 2018, 14:25) *
а теперь простым языком - как создать уникальный заголовок?


Если уж так неохота возиться с подменой символа, то делайте преамбулу, 4-6 байт с уникальными числами, вероятность совпадения будет ничтожно малой, да и если совпадет преамбула, то уж точно не сойдется КС...
Go to the top of the page
 
+Quote Post
megajohn
сообщение Jul 16 2018, 12:29
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(k155la3 @ Jul 16 2018, 16:05) *
COBS, pdf - насколько я понял. Спасибо, поглядим, "что за зверь".


дык классический PPP тоже вполне юзабелен



--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
XVR
сообщение Jul 16 2018, 13:48
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Jenya7 @ Jul 16 2018, 14:25) *
а теперь простым языком - как создать уникальный заголовок?
Зачем вам заголовок? У вас все записи одинаковой длинны, никаких заголовков не нужно

Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jul 16 2018, 13:50
Сообщение #23


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(XVR @ Jul 16 2018, 19:48) *
Зачем вам заголовок? У вас все записи одинаковой длинны, никаких заголовков не нужно
а как узнать где начало следующей записи? я не могу гарантировать что запись начнется с нулевого индекса.
Go to the top of the page
 
+Quote Post
XVR
сообщение Jul 16 2018, 14:04
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Jenya7 @ Jul 16 2018, 16:50) *
а как узнать где начало следующей записи? я не могу гарантировать что запись начнется с нулевого индекса.

А с какого ещё она может начаться? Вы заполняете блок фиксированного размера записями так же фиксированного размера. При этом запись не пересекает границу блока. Т.е. каждая запись начинается с индекса N*sizeof(record) (где N - номер записи).
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 16 2018, 14:15
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(k155la3 @ Jul 16 2018, 15:05) *
COBS, pdf - насколько я понял. Спасибо, поглядим, "что за зверь".

В википедии достаточно хорошо описано: https://en.wikipedia.org/wiki/Consistent_Ov...d_Byte_Stuffing
И размер кадра вовсе не ограничивается 254 байтами - легко расширяется до любого размера. Просто оверхед будет равен:
Код
//вычисление величины увеличения размера данных при кодировании payload байт в COBS
#define CobsCodedOver(payload) ((sizeof(payload) - 1) / 254 + 1)
Go to the top of the page
 
+Quote Post
segment
сообщение Jul 16 2018, 14:26
Сообщение #26


Местный
***

Группа: Участник
Сообщений: 352
Регистрация: 10-08-06
Из: Санкт-Петербург
Пользователь №: 19 471



Цитата(jcxz @ Jul 16 2018, 17:15) *
И размер кадра вовсе не ограничивается 254 байтами - легко расширяется до любого размера.

Поясните, пожалуйста, как размер кадра расширяется.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 16 2018, 20:34
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(segment @ Jul 16 2018, 17:26) *
Поясните, пожалуйста, как размер кадра расширяется.

Вы почитайте описание протокола и подумайте логически.
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Jul 17 2018, 05:39
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Цитата(Jenya7 @ Jul 16 2018, 18:25) *
а теперь простым языком - как создать уникальный заголовок?

Достаточно сделать заголовок пакета 0x55FA, постоянную длину пакета и контрольную сумму в конце пакета.

Тогда начало определяем по заголовку, набираем из потока байтов(или буфера) постоянную длину и проверяем контрольную сумму.
Если контроль не прошёл, то значит 0x55FA это данные, а не заголовок.
Ищем в набранном заголовок, если не находим, то отбрасываем набранное вообще, если находим - набираем еще байтов от нового заголовка.
И т.д. пока не засинхронизируемся с потоком.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 17 2018, 05:54
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(HardEgor @ Jul 17 2018, 08:39) *
Достаточно сделать заголовок пакета 0x55FA, постоянную длину пакета и контрольную сумму в конце пакета.
Тогда начало определяем по заголовку, набираем из потока байтов(или буфера) постоянную длину и проверяем контрольную сумму.

Этот колхоз вообще никакого отношения не имеет к COBS.
COBS - кодонезависимый протокол, не нуждающийся в костылях типа контрольных сумм и поисках чего-то. И однопроходный.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 17 2018, 06:16
Сообщение #30


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Для связи между платами (или MCU<->CPU/FPGA) практически всегда использую байт-стаффинг. Простой, надежный. Переменная длина сообщений вообще радует - сделал себе что-то наподобие мессенджера - при этом не нужны поля размера пакета в структурах обмена и связанные с этим головные боли тоже ушли.
COBS слышал, не применял, не знаю laughing.gif
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th April 2024 - 23:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01492 секунд с 7
ELECTRONIX ©2004-2016