Изменение настроек коммуникационных ресурсов


Когда функция CreateFile открывает дескриптор последовательного коммуникационного ресурса, система инициализирует и конфигурирует ресурс, согласно значениям, установленным в последний раз, когда ресурс открывался. Сохранение предыдущих установочных параметров дает возможность пользователю,  запомнить назначения, которые определены командой mode, когда устройство открывается повторно . Значения, унаследованные от предыдущей операции открытия включают в себя параметры конфигурации блока управления устройства (структура DCB) и величины блокировок по времени, используемые в операциях ввода-вывода (I/O). Если устройство никогда не открывалось, оно конфигурируется с системными значениями по умолчанию.

Чтобы выяснить начальную конфигурацию последовательного коммуникационного ресурса, процесс вызывает функцию GetCommState, которая заполняет поля в структуре DCB последовательного порта текущими параметрами конфигурации. Чтобы изменить эту конфигурацию, процесс задает структуру DCB при вызове функция SetCommState.

Члены структуры DCB определяют параметры конфигурации такие как скорость передачи данных в бодах, определенное число битов данных на байт и число стоповых битов на байт. Другие члены структуры DCB определяют специальные символы и разрешают проверку четности и управление потоком данных. Когда процессу необходимо изменить только несколько из этих параметров конфигурации, он должен сначала вызвать GetCommState, чтобы заполнить поля в структуре DCB текущей конфигурацией. Затем процесс может корректировать важные значения в структуре DCB и повторно сконфигурировать устройство при помощи вызова функции SetCommState и определения измененной структуры DCB. Эта процедура гарантирует, что неизмененные члены структуры DCB будут содержать правильные значения. Например, обычной ошибкой является конфигурация устройства со структурой DCB в которой, член  структуры XonChar равен члену XoffChar  структуры..

Функция BuildCommDCB предоставляет еще один способ изменить структуру DCB. BuildCommDCB использует строку такой же формы, что и параметры командной строки команды mode, чтобы установить скорость передачи данных в бодах, схему проверки четности, число стоповых битов и число битов данных. Остальные члены структуры DCB не изменяются этой функцией, за исключением того, что соответствующие члены устанавливаются так, чтобы запретить работу XON/XOFF и аппаратного управления потоком данных. Функция BuildCommDCB только изменяет структуру DCB; она не конфигурирует повторно устройство.

Процесс может переконфигурировать коммуникационный ресурс, используя функцию GetCommProperties, чтобы получить информацию от драйвера устройства о параметрах конфигурации, которые он поддерживает. Процесс может использовать эту информацию, чтобы отменить установленную конфигурацию, которая не поддерживается.

Функция SetCommState конфигурирует повторно коммуникационный ресурс, но она не  влияет на внутренние буфера вывода и ввода данных указанного драйвера. Буфера не сбрасываются на диск, а ожидающие обработки операции чтения и записи преждевременно не заканчиваются.

Процесс повторно инициализирует коммуникационный ресурс, используя функцию SetupComm, которая выполняет ниже перечисленные задачи:

Процессу  не требуется вызывать SetupComm. Если он этого не делает, драйвер ресурса инициализирует устройство заданными по умолчанию параметрами, которые использовались дескриптором коммуникационного ресурса в самом начале.

Назад в оглавление
На главную страницу

Hosted by uCoz