ВходНаше всё Теги codebook PARTS Поиск Опросы Закон Понедельник
23 мая
1152862 Топик полностью
lloyd (08.12.2021 11:28, просмотров: 164) ответил Argon на Октетом вы называете байт? Почему привычно не назвать байтом? Что такое N? Куда записываем N + 1? Куда записываем "эти байты"? Почему второй и последующие нули кодируются 0x1? Их не получится спутать с настоящими 0x1?
Байт - это минимально адресуемая ячейка памяти процессором. У C2000, к примеру, байт 16-битный. А октет всегда 8-битный. 

> Что такое N

Количество ненулевых октетов в буфере записи


> Куда записываем N + 1

В канал передачи данных, также с полезной нагрузкой


> Почему второй и последующие нули кодируются 0x1

Потому что после нашего курсора есть полезные данные, но нет ненулевых октетов


11 22 00 00 -> 03 11 22 01 00

00 00 00 00 -> 01 01 01 01 00

01 01 01 00 -> 04 01 01 01 01 00


>Их не получится спутать с настоящими 0x1?

COBS не сильно устойчив к пропуску любого байта, но есть большая разница между "октетом количества ненулевых октетов" и "октетом полезной нагрузки". Считайте, что у приемника есть своё состояние