@AlexSer

Как проверить что по serial пришел полный пакет данных?

Написал код по приему данных через комп порт, все работает, строки считываются и вставляются в БД.
Но что бы было все корректно, надо сделать проверку на полный прием пакета...А я в этом пока 0.
Может кто может объяснить, или пример или статьи... вроде как надо сравнивать количество полученных байтов , но я плохо в этом разбираюсь
  • Вопрос задан
  • 204 просмотра
Решения вопроса 2
@Zolg
последовательный порт не передает пакеты. последовательный порт передает поток байт (на самом деле - бит, но прием целых байт уже реализован до вас нижележащими уровнями абстракции)
'разбиение на пакеты' - задача протокола более высокого уровня (который вам видимо и нужно реализовывать).
если у вас 'пакет' это строка, то конец пакета маркируется символом перевода строки, не так ли ?
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Сначала передаётся длина (количество байтов) пакета, затем сам пакет, в конце - контрольная сумма, по которой можно проверить целостность пакета.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ittakir
Ответ зависит от того, кто вам засылает данные в COM порт, в каком формате.
По хорошему, нужно как-то маркировать конец пакета данных. Это либо передавать сначала количество данных, потом сами данные. Либо передавать специальный символ конца пакета, например "\n\n". Либо просто по таймауту, когда данные идут непрерывным потоком, а если данных не было более чем 1 секунду, то считаем что пакет завершен.
Скорее всего вам подойдет последний вариант.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы