ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
24 декабря
1280223 Топик полностью
vpv.vpv (31.01.2023 07:48, просмотров: 364) ответил Adept на спасибо всем (m16 в особенности), буду переделывать процедуру буферизации на вариант с двумя раздельными указателями на чтение и запиьь. Тогда при переполнении, в принципе можно всё корректно разрулить.
Переполнения буфера быть не должно, переполнение означает порчу данных. А так, я не вижу, в чём засада. При обмене используются два кольцевых буфера, один на приём, другой на выдачу. В каждом три волятильных параметра, голова, хвост и счётчик. По голове буфер набивается, по хвосту очищается. Допустим, буфер 500 байт, набилось 100, можно передавать. Передаём длину "100" и байты, после контрольную сумму. Приемник сообщил, что в пакете ошибка. Хорошо, повторим. Смотрим на 

счётчик, опачки. Пока передавали, в буфер набилось, скажем, ещё 50 байт (т.е. голова "переехала" на 50 и счётчик увеличился на 50). Хорошо, передаём длину "150" и повторяем передачу. Приёмник сказал - Ок! Тогда от текущего значения счетчика отнимаем 150 и двигаем хвост на 150. всё.