c # SerialPort WriteTimeout Использовать? - PullRequest
2 голосов
/ 13 октября 2011

Я связываюсь со схемой через последовательный порт, и мне было интересно, должен ли я установить таймаут записи?

Может ли кто-нибудь привести пример того, почему / как он будет использоваться? Я понимаю смысл тайм-аута чтения (например, я только что отправил команду, я должен получить ответ менее чем за 250 мс), но на самом деле не вижу причины тайм-аута записи. На действительно старом компьютере отправка строки символов занимает очень много времени?

Спасибо.

1 Ответ

3 голосов
/ 13 октября 2011

Если вы используете аппаратное квитирование, байты не будут записываться, пока не будут достигнуты правильные состояния контактов квитирования.Таким образом, вы можете установить тайм-аут в ожидании, пока другое устройство сообщит, что оно готово для получения дополнительных данных, идентифицируя заполненный буфер в его конце или устройство просто отключено.Если у вас отключен аппаратный хэшикинг или он перегружен на последовательном порту (от RTS до CTS), то единственный раз, когда вы могли бы установить тайм-аут, - это запись байтов на устройство быстрее, чем они могут быть отправлены по линии.В конце концов вы будете заполнять выходные буферы и блокировать (при условии, что вы не используете async io).Если драйвер не может очистить буферы достаточно быстро, вы можете установить тайм-аут на запись, если время ожидания слишком короткое.

...