|
|
|
Железный канал: «C, С++» |
|
|
DIMOSUS.X 997 EGP
Рейтинг канала: 4(58) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008 |
|
Неа, маркер сгенерирован один раз и не меняется. Каждый пакет (по 32 байта) нужно проверить на этот маркер, что бы знать просто ли это данные, или управляющий пакет.
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
Последний раз редактировалось: DIMOSUS.X (15:41 29-01-2016), всего редактировалось 1 раз |
|
|
Grebomet 1460 EGP
Рейтинг канала: 8(759) Репутация: 261 Сообщения: 4783 Откуда: Питербурх Зарегистрирован: 06.01.2003 |
|
DIMOSUS.X : |
Каждый пакет (по 32 байта) нужно проверить на этот маркер, что бы знать просто ли это данные, или управляющий пакет.
|
Ващета это, конечно, не мое дело, но кто ж так делает?
Обычно люди в каждый пакет заголовочек маленький добавляют, где указан тип пакета. Тогда не надо никаких магических маркеров: стоит в заголовке соответствующий бит в 1 - значит, у нас управляющий пакет, не стоит - значит, у нас данные.
Под твои цели вообще одного бита достаточно, но в интересах удобства и в целях расширяемости можно добавить аж целый байт.
А что за ограничение такое в 32 байта? Нельзя пакет потолще сделать?
_________________ Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов. |
|
|
DIMOSUS.X 997 EGP
Рейтинг канала: 4(58) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008 |
|
32 байта это аппаратное ограничение радиомодуля. Резать данные на не ровные числа не хотел, вот и родил такой костыль
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом. |
|
|
AnrDaemon 862 EGP
Рейтинг канала: 8(790) Репутация: 37 Сообщения: 12318
Зарегистрирован: 17.10.2004 |
|
DIMOSUS.X : |
32 байта это аппаратное ограничение радиомодуля. Резать данные на не ровные числа не хотел, вот и родил такой костыль
|
Это не костыль, это нормально.
Transmission padding, всё норм.
А вот структуру заголовка пакета хорошо бы продумывать заранее.
А то ты так льёшь данные по 32 байта, а как проверяешь, что они пролились целыми?…
_________________ Люблю свободный полёт... :) |
|
|
DIMOSUS.X 997 EGP
Рейтинг канала: 4(58) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008 |
|
В заголовке чек сумма и количество ожидаемых пакетов данных. После приема пересчет чексуммы и сравнение с пришедшим.
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом. |
|
|
AnrDaemon 862 EGP
Рейтинг канала: 8(790) Репутация: 37 Сообщения: 12318
Зарегистрирован: 17.10.2004 |
|
То есть данные передаются несколькими пакетами?…
Я бы передавал контрольную сумму с каждым пакетом.
Для 256 бит хватит CRC16, или даже меньше… Заодно избавишься от отдельного пакета с "заголовком". Можно будет просто гнать данные в порт и не думать о грустном
_________________ Люблю свободный полёт... :) |
|
|
DIMOSUS.X 997 EGP
Рейтинг канала: 4(58) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008 |
|
CRC16 реализован на хардварном уровне внутри пакета. То есть пакет всегда валиден.
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом. |
|
|
AnrDaemon 862 EGP
Рейтинг канала: 8(790) Репутация: 37 Сообщения: 12318
Зарегистрирован: 17.10.2004 |
|
Тогда это плюс
Осталось только формат командного блока защитить от подделок и совпадений.
_________________ Люблю свободный полёт... :) |
|
|
Grebomet 1460 EGP
Рейтинг канала: 8(759) Репутация: 261 Сообщения: 4783 Откуда: Питербурх Зарегистрирован: 06.01.2003 |
|
А как обрабатываются ситуации, когда пакет потерялся/задублировался/пришел не в том порядке?
_________________ Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов. |
|
|
|
|
|
Железный канал: «C, С++» |
|