SerialPort.Write () - Как перестать писать? - PullRequest
1 голос
/ 20 апреля 2009

Я занимаюсь разработкой в ​​C # с использованием класса SerialPort. SerialPort.Write() - это метод блокировки. Как я могу выйти из этого метода, когда я хочу прекратить писать? Я использую поток, чтобы написать. Я прекращаю эту тему, когда хочу прекратить запись, но COM-порт продолжает запись.

Есть идеи?

Большое спасибо.

Извините за мой базовый английский.

Ответы [ 2 ]

1 голос
/ 20 апреля 2009

И поток последовательного порта, и UART будут выполнять буферизацию.

Наилучшим подходом будет отправка небольших пакетов (строк) и прерывание потока записи, позволяя последним отправленным пакетам выйти. Если вы можете остановить запись гражданским способом, существует также метод DiscardWriteBuffer ().

Если маленькие пакеты не подходят, вы можете по меньшей мере установить для WriteBufferSize что-то маленькое (но> 0).

0 голосов
/ 03 февраля 2010

Чтобы выйти из заблокированного состояния SerialPort.Write(), используйте SerialPort.DiscardOutBuffer(). Это вызывает IOException, но это нормально, если вы можете чисто выйти из заблокированного состояния.

...