Потеря последовательных данных при передаче с высокой скоростью передачи - PullRequest
1 голос
/ 03 января 2011

Я прочитал ваши вопросы о связи через последовательный порт. Но у нас проблема с последовательным портом связи.

Одна проблема, которую я видел, заключается в том, что при высокой скорости передачи мы теряем некоторые данные на стороне получателя. Не могли бы вы сказать мне, почему это произошло? и как мне это исправить, пожалуйста?

У нас есть устройство, которое отправляет данные со скоростью 115200 бод, и приемник настроен на ту же скорость, но иногда некоторые байты данных теряются при передаче.

Ответы [ 2 ]

1 голос
/ 10 января 2011

115 200 - это довольно высокая скорость передачи данных, если вам нужно только передавать около 300 байтов в секунду. Возможно, вы сможете получить более стабильное соединение, снизив скорость. Конечно, стоит попробовать, если вы можете установить обе стороны соединения самостоятельно.

Кроме того, как долго ваш кабель? Ты сделал это сам? Есть много вещей, которые могут способствовать сбросу данных, и кабели часто играют большую роль в этом.

Наконец, вы можете предположить, что данные в конечном итоге будут потеряны, и принять это во внимание. При длине всего 300 байт вы можете позволить отправлять больше данных, чем вам нужно, т. Е. Вы, вероятно, можете повторно передавать любые данные, которые могли быть повреждены или утеряны без особого штрафа. Очевидно, это зависит от того, управляете ли вы протоколом или можете настроить разные скорости на устройствах.

0 голосов
/ 03 января 2011

Возможно, вы переполняете приемный буфер получателя.Трудно сказать, без каких-либо дополнительных подробностей.

Сколько байт обычно отправляет ваш передатчик?

Поддерживает ли ваше устройство передатчик / приемник управление потоком?Возможно, вам придется использовать это.

Это позволит вашему Получателю сказать вашему передатчику "Подождите, перестаньте посылать немного, позвольте мне разобраться с тем, что у меня есть первым."

Аппаратное управление потоком (обычно) используется через выводы RTS (Запрос на отправку) и CTS (Очистить для отправки).

Взгляните на эту статью, которая объясняет немного больше об этом.

...