КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Bool getcommstate( handle hfile, lpdcb lpdcb );
Таким образом, нет необходимости вникать во все тонкости структуры. После этого некоторые поля DCB заполняются вручную, а именно: BaudRate — скорость передачи данных. Возможно указание следующих констант: CBR_110, CBR_300, CBR_600, CBR_1200, CBR_2400, CBR_4800, CBR_9600, CBR_14400, CBR_19200, CBR_38400, CBR_56000, CBR_57600, CBR_115200, CBR_128000, CBR_256000. ByteSize — определяет число информационных бит в передаваемых и принимаемых байтах. Может принимать значение 4, 5, 6, 7, 8. Parity — определяет выбор схемы контроля четности. Данное поле должно содержать одно из следующих значений:
StopBits — задает количество стоповых бит. Поле может принимать следующие значения:
После того как все поля структуры DCB заполнены, необходимо произвести конфигурирование порта, вызвав функцию SetCommState: BOOL SetCommState( В случае успешного завершения функция вернет отличное от нуля значение, а в случае ошибки — нуль. Второй обязательной структурой для настройки порта является структура COMMTIMEOUTS. Она определяет параметры временных задержек при приеме-передаче. Вот описание этой структуры: typedef struct _COMMTIMEOUTS { Поля структуры COMMTIMEOUTS имеют следующие значения:
Немного поподробнее о тайм-аутах. Пусть мы считываем из порта 50 символов со скоростью 9 600 бит/с. Если при этом используется 8 бит на символ, дополнение до четности и один стоповый бит, то на один символ в физической линии приходится 11 бит (включая стартовый бит). Значит, 50 символов на скорости 9 600 бит/с будут приниматься
50x11/9600=0,0572916 с
или примерно 57,3 миллисекунды, при условии нулевого интервала между приемом последовательных символов. Если же интервал между символами составляет примерно половину времени передачи одного символа, т. е. 0,5 миллисекунд, то время приема будет 50x11/9600+49x0,0005=0,0817916 с или примерно 82 миллисекунды. Если в процессе чтения прошло более 82 миллисекунд, то мы вправе предположить, что произошла ошибка в работе внешнего устройства и можем прекратить считывание, тем самым избежав зависания программы. Это и есть общий тайм-аут операции чтения. Аналогично существует и общий тайм-аут операции записи. Формула для вычисления общего тайм-аута операции, например, чтения, выглядит так: NumOfChar x ReadTotalTimeoutMultiplier + ReadTotalTimeoutConstant где NumOfChar — число символов, запрошенных для операции чтения. В нашем случае тайм-ауты записи можно не использовать и установить их равными нулю. После заполнения структуры COMMTIMEOUTS, необходимо вызвать функцию установки тайм-аутов:
Дата добавления: 2013-12-14; Просмотров: 462; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |