Когда генерируется событие DataReceived
, не гарантируется, сколько символов находится в буфере. Поэтому, если вы просто позвоните ReadChar()
, вы не прочитаете полное содержимое буфера. Поэтому, если символы отправляются достаточно быстро, возможно, вы что-то пропустили, потому что ваш обработчик событий вызывается, когда два или более символа находятся в буфере.
Также вы должны установить ALL свойства последовательного порта, а не только скорость передачи данных. Это необходимо, потому что последовательный порт не имеет состояния по умолчанию и останется последним установленным параметром для каждого параметра. Поэтому, если вы используете какую-либо терминальную программу для изменения некоторых менее используемых настроек (таких как Xon / off, HW Handshake, StartBits и т. Д.), Ваша программа просто будет использовать те же настройки, если вы не сбросите их до желаемых значений.