Спасибо за ответы.
На самом деле у меня есть какой-то протокол в последовательных данных.Это что-то вроде:
<ID><SIZE><DATA....><CHECKSUM>
Обычно я правильно получаю идентификатор, РАЗМЕР и затем прослушиваю ожидаемые байты данных «размер» (размер меньше 1000, а последовательный порт работает на 115200, поэтомудолжно быть короткое время).Но когда я жду их, например, со вторым кодом (цикл ожидания), они никогда не появляются в моем C # -коде, даже если они действительно передают через последовательную строку (проверяется с помощью области действия).Все еще выполняя 2-й код, я получил 1-е TimeOutException (в цикле ожидания), что означает, что я не получаю все данные в течение 1 с (также пытался увеличить до 5 с).Таким образом, ошибка перехватывается перед переходом к функции SerialPort.Read ().
В любом случае, я проверю событие ErrorReceived, чтобы проверить, поймал ли я что-то ...
В отношении массива.Resize () Я написал это в случае, если возвращенные данные SerialPort.Read () имеют меньше байтов, чем ожидаемые.Размер буфера предварительно соответствует максимальному размеру моего буфера SerialPort (4096).Что касается моей второй ошибки в коде, то вы совершенно правы.Мне лучше использовать более подходящее исключение:)