Порты - статьи


         

Для каждой операции чтения данное


Для каждой операции чтения данное значение умножается на количество запрошенных для чтения символов.
  • ReadTotalTimeoutConstant — задает константу (в миллисекундах), используемую для вычисления общего тайм-аута операции чтения. Для каждой операции чтения данное значение плюсуется к результату умножения ReadTotalTimeoutMultiplier на количество запрошенных для чтения символов. Нулевое значение полей ReadTotalTimeoutMultiplier и ReadTotalTimeoutConstant означает, что общий тайм-аут для операции чтения не используется.
  • WriteTotalTimeoutMultiplier — задает множитель (в миллисекундах), используемый для вычисления общего тайм-аута операции записи. Для каждой операции записи данное значение умножается на количество записываемых символов.
  • WriteTotalTimeoutConstant — задает константу (в миллисекундах), используемую для вычисления общего тайм-аута операции записи. Для каждой операции записи данное значение прибавляется к результату умножения WriteTotalTimeoutMultiplier на количество записываемых символов. Нулевое значение полей WriteTotalTimeoutMultiplier и WriteTotalTimeoutConstant означает, что общий тайм-аут для операции записи не используется.


  • Немного поподробнее о тайм-аутах. Пусть мы считываем из порта 50 символов со скоростью 9 600 бит/с. Если при этом используется 8 бит на символ, дополнение до четности и один стоповый бит, то на один символ в физической линии приходится 11 бит (включая стартовый бит). Значит, 50 символов на скорости 9 600 бит/с будут приниматься

    50x11/9600=0,0572916 с

    или примерно 57,3 миллисекунды, при условии нулевого интервала между приемом последовательных символов. Если же интервал между символами составляет примерно половину времени передачи одного символа, т. е. 0,5 миллисекунд, то время приема будет

    50x11/9600+49x0,0005=0,0817916 с

    или примерно 82 миллисекунды. Если в процессе чтения прошло более 82 миллисекунд, то мы вправе предположить, что произошла ошибка в работе внешнего устройства и можем прекратить считывание, тем самым избежав зависания программы.

    Содержание  Назад  Вперед