Modificación de la configuración de recursos de comunicaciones
Cuando la función CreateFile abre un identificador para un recurso de comunicaciones serie, el sistema inicializa y configura el recurso según los valores configurados la última vez que se abrió el recurso. Conservar la configuración anterior permite al usuario conservar la configuración especificada a través de un comando de modo cuando se vuelve a abrir el dispositivo. Los valores heredados de la operación abierta anterior incluyen los valores de configuración del bloque de control de dispositivo (una estructura DCB ) y los valores de tiempo de espera usados en las operaciones de E/S. Si el dispositivo nunca se ha abierto, se configura con los valores predeterminados del sistema.
Para determinar la configuración inicial de un recurso de comunicaciones serie, un proceso llama a la función GetCommState , que rellena una estructura DCB de puerto serie con los valores de configuración actuales. Para modificar esta configuración, un proceso especifica una estructura DCB en una llamada a la función SetCommState .
Los miembros de la estructura DCB especifican las opciones de configuración, como la velocidad de baudios, el número de bits de datos por byte y el número de bits de detención por byte. Otros miembros de DCB especifican caracteres especiales y habilitan la comprobación de paridad y el control de flujo. Cuando un proceso necesita modificar solo algunas de estas opciones de configuración, primero debe llamar a GetCommState para rellenar una estructura DCB con la configuración actual. A continuación, el proceso puede ajustar los valores importantes en la estructura DCB y volver a configurar el dispositivo llamando a SetCommState y especificando la estructura DCB modificada. Este procedimiento garantiza que los miembros sin modificar de la estructura DCB contengan valores adecuados. Por ejemplo, un error común es configurar un dispositivo con una estructura DCB en la que el miembro XonChar de la estructura es igual al miembro XoffChar .
La función BuildCommDCB proporciona otra manera de modificar una estructura DCB . BuildCommDCB usa una cadena con el mismo formato que los argumentos de la línea de comandos del comando mode para especificar la velocidad de baudios, el esquema de paridad, el número de bits de detención y el número de bits de datos. Esta función no cambia los miembros restantes de DCB , excepto que los miembros adecuados se establecen para deshabilitar el control de flujo de hardware y XON/XOFF. BuildCommDCB solo modifica una estructura DCB ; no vuelve a configurar el dispositivo.
Un proceso puede volver a configurar un recurso de comunicaciones mediante la función GetCommProperties para obtener información de un controlador de dispositivo sobre las opciones de configuración que admite. El proceso puede usar esta información para evitar especificar una configuración que no se admite.
La función SetCommState vuelve a configurar el recurso de comunicaciones, pero no afecta a los búferes de entrada y salida internos del controlador especificado. Los búferes no se vacían y las operaciones de lectura y escritura pendientes no finalizan prematuramente.
Un proceso reinicializa un recurso de comunicaciones mediante la función SetupComm , que realiza las siguientes tareas:
- Finaliza las operaciones de lectura y escritura pendientes, incluso si no se han completado.
- Descarta caracteres no leídos y libera los búferes de entrada y salida internos del controlador asociado al recurso especificado.
- Reasigna los búferes de entrada y salida internos.
No es necesario un proceso para llamar a SetupComm. Si no es así, el controlador del recurso inicializa el dispositivo con la configuración predeterminada la primera vez que se usa el identificador de recursos de comunicaciones.