#c# #timeout #serial-port
#c# #тайм-аут #последовательный порт
Вопрос:
Я общаюсь со схемой через последовательный порт и задавался вопросом, должен ли я установить тайм-аут записи?
Может кто-нибудь привести пример того, почему / как он будет использоваться? Я понимаю смысл тайм-аута чтения (например, я только что отправил команду, я должен получить ответ менее чем за 250 мс), но на самом деле не понимаю причины тайм-аута записи. На действительно старом компьютере для отправки символьной строки требуется очень много времени?
Спасибо.
Комментарии:
1. Он обнаруживает, что устройство слишком долго отключает рукопожатие. Является ли это проблемой, зависит от вас.
Ответ №1:
Если вы используете аппаратное квитирование, байты не будут записаны до тех пор, пока не будут достигнуты надлежащие состояния контактов квитирования. Таким образом, вы могли бы тайм-аут ожидания другого устройства, чтобы сигнализировать, что он готов для получения дополнительных данных, идентификатор буфера заполнен в его конце, или устройство просто отключено. Если у вас отключено аппаратное переключение или оно переключено на последовательный порт (от RTS до CTS), то единственный возможный тайм-аут — это запись байтов на устройство быстрее, чтобы их можно было отправить по линии. В конечном итоге вы заполните выходные буферы и заблокируете (при условии, что вы не используете асинхронный ввод-вывод). Если драйвер не может очистить буферы достаточно быстро, вы можете использовать тайм-аут при записи, если у вас слишком короткое время ожидания.