Буфер ввода и вывода на последовательном порту

#.net #serial-port #buffer

#.net #последовательный порт #буфер

Вопрос:

Я написал небольшую программу, которая записывает данные на последовательный порт. Я использую класс SerialPort (.NET Framework). Когда я записываю на последовательный порт, немедленно возникает событие PortRecieved. Зачем программе это делать, когда мы знаем, что последовательный порт имеет входной и выходной буфер. Метод записи выполняет запись в выходной буфер, метод чтения считывает данные из входного буфера.

Ответ №1:

Вам нужно будет проверить DataReceivedThreshold свойство. Он определяет, сколько байтов будет накоплено в буфере перед запуском DataReceived события, и по умолчанию равен 1.

См. Также Этот поток центра разработки, в котором отмечается DataReceivedThreshold , что в некоторых случаях может возникнуть неожиданное поведение.

Комментарии:

1. Спасибо, но я не знаю, сколько байтов будет накоплено в буфере перед запуском события. Это может быть от 1 до 20 байт. Но я не понимаю, когда программа записывает в выходной буфер, почему событие сработало. Все, что программа записывает на последовательный порт (вывод), принимается как ввод. Например, если программа напишет «Test» на выходе, метод ввода (с использованием ReadExisting) будет таким же. Почему?

2. @SilverDeveloper: Я не уверен, о чем вы спрашиваете. Возможно, вы могли бы опубликовать какой-нибудь пример кода, чтобы прояснить вашу проблему?

3. ОК. Первый вопрос — последовательный порт имеет буфер ввода и вывода. Если программа выполняет запись на последовательный порт, она выполняет запись в выходной буфер. Если программа считывает данные с последовательного порта, она считывает данные из входного буфера. Это правильно?