Изменение Параметры ресурса связи
Когда функция 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 , которая выполняет следующие задачи:
- Завершает ожидающие операции чтения и записи, даже если они не были завершены.
- Dis карта s непрочитанные символы и освобождает внутренние выходные и входные буферы драйвера, связанного с указанным ресурсом.
- Перераспределяет внутренние выходные и входные буферы.
Для вызова SetupComm не требуется процесс. Если это не так, драйвер ресурса инициализирует устройство с параметрами по умолчанию при первом использовании дескриптора ресурсов связи.