Поделиться через


Изменение параметров ресурса связи

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

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

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

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

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

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

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

  • Завершает ожидающие операции чтения и записи, даже если они не были завершены.
  • Отменяет непрочитанные символы и освобождает внутренние выходные и входные буферы драйвера, связанного с указанным ресурсом.
  • Перераспределяет внутренние выходные и входные буферы.

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