Удаление лишних байтов из данных последовательного порта
Привет ребята,
Итак, я реализую блестящий серийный класс, созданный Реймон де Клейн здесь:
Последовательная библиотека для C++[^]
В своем определении функции чтения он записывает входящие байты в массив размером 100. Проблема в том, что когда я отправляю пакет данных, размер которого, как я знаю, меньше 100, он поставляется в комплекте с мусором в качестве оставшихся байтов.
Я хочу отфильтровать это.
Есть какие-нибудь предложения относительно того, что я мог бы попробовать дальше?
Что я уже пробовал:
1. Магазин поступающих данных в CString, а функция определяет переменную буфера как Void* буфер. Поэтому преобразование не работает.
2. динамически объявляйте переменную буфера на основе количества полученных байтов, но функция не принимает массив неопределенного размера.
Richard MacCutchan
Нет, он не поставляется с дополнительными данными, у вас просто есть мусор в вашем буфере. Вам нужно проверить размер каждого входящего сообщения, чтобы убедиться, что вы обрабатываете только фактическое количество полученных байтов.
TheLostJedi
Но как бы я это сделал, если бы мне пришлось объявить размер буфера до того, как порт будет прочитан?
Поможет ли опустошение буфера?
Richard MacCutchan
Вы проверяете на каждом чтении, сколько байтов было возвращено. Последовательные устройства возвращают данные в случайном количестве, и вы никогда не можете быть уверены, сколько их будет, поэтому вам нужно управлять ими соответствующим образом.