Estructura DCB
Definición
typedef struct _DCB { // dcb DWORD DCBlength; // sizeof(DCB) DWORD BaudRate; // velocidad en baudios actual DWORD fBinary: 1; // modo binario, no se comprueba EOF DWORD fParity: 1; // comprobación de paridad activa DWORD fOutxCtsFlow:1; // CTS control de flujo de salida DWORD fOutxDsrFlow:1; // DSR control de flujo de salida DWORD fDtrControl:2; // DTR tipo de control de flujo DWORD fDsrSensitivity:1; // DSR sensitividad DWORD fTXContinueOnXoff:1; // XOFF continuar Tx DWORD fOutX: 1; // XON/XOFF control de flujo de salida DWORD fInX: 1; // XON/XOFF control de flujo de entrada DWORD fErrorChar: 1; // activa reemplazo de error DWORD fNull: 1; // activa null stripping DWORD fRtsControl:2; // RTS control de flujo DWORD fAbortOnError:1; // aborta lectura/escritura si hay error DWORD fDummy2:17; // reservado WORD wReserved; // no usado WORD XonLim; // transmitir umbral XON WORD XoffLim; // transmitir umbral XOFF BYTE ByteSize; // número de bits por byte, 4-8 BYTE Parity; // 0-4=no, impar, par, marca, espacio BYTE StopBits; // 0,1,2 = 1, 1.5, 2 char XonChar; // carácter XON para Tx y Rx char XoffChar; // carácter XOFF para Tx y Rx char ErrorChar; // carácter de reemplazo para errores char EofChar; // carácter de fin de entrada char EvtChar; // carácter de evento recibido WORD wReserved1; // reservado; no usar } DCB;
La estructura DCB define los valores de control para dispositivos de comunicaciones serie.
Descripción
DCBlength: especifica la longitud en bytes de la estructura DCB.
BaudRate: especifica la velocidad en baudios a la que el dispositivo de comunicaciones opera. Este miembro puede ser un valor de velocidad actual, o uno de los siguientes índices de velocidad en baudios:
- 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
fBinary: especifica si el modo binario está activo. El API de Win32 no soporta modos de transferencias no binarios, así que este miembro debe ser TRUE. Intentar usar FALSE no funcionará.
Bajo Windows 3.1, si este miembro es FALSE, el modo no binario se activa, y el carácter especificado por el miembro EofChar se reconocerá en la entrada y se recordará como el final de los datos.
fParity: especifica si se activa la comprobación de paridad. Si este miembro es TRUE, se realizará la comprobación de paridad y los errores se notificarán.
fOutxCtsFlow: especifica si se monitoriza para control de flujo de salida la señal CTS (clear-to-send: preparado para enviar). Si este miembro es TRUE y se apaga CTS, la salida se suspende hasta que CTS se envíe de nuevo.
fOutxDsrFlow: especifica si se monitoriza para control de flujo de salida la señal DSR (data-set-ready: datos preparados). Si este miembro es TRUE y DSR se apaga, las salida se suspende hasta que se envíe de nuevo DSR.
fDtrControl: especifica el control de flujo DTR (data-terminal-ready: datos de terminal preparados). Este miembro puede tomar uno de los siguientes valores:
Valor | Significado |
---|---|
DTR_CONTROL_DISABLE | Desactiva la línea DTR cuando el dispositivo se abre y la deja desactivada. |
DTR_CONTROL_ENABLE | Activa la línea DTR cuando el dispositivo se abre y la deja activa. |
DTR_CONTROL_HANDSHAKE | Activa el protocolo DTR. Si este protocolo está activo, es un error de la aplicación ajustar la línea usando la función EscapeCommFunction. |
fDsrSensitivity: especifica si el driver de comunicaciones es sensible al estado de la señal DSR. Si este miembro es TRUE, el driver ignora cualquier byte recibido, salvo que la línea de entrada DSR del modem esté activa.
fTXContinueOnXoff: especifica si la transmisión se interrumpe cuando el buffer de entrada se llene y el driver ha transmitido el carácter XoffChar. Si este miembro es TRUE, la transmisión continúa después de que el buffer de entrada está dentro de los XoffLim bytes del el final y el driver ha transmitido el carácter XoffChar para detener la recepción de bytes. Si este miembro es FALSE, la transmisión no continúa hasta que el buffer de entrada esté dentro de los XonLim bytes del comienzo y el driver haya transmitido el carácter XonChar para reanudar la recepción.
fOutX: especifica si se usa el control de flujo XON/XOFF durante la transmisión. Si este miembro en TRUE, la transmisión se detiene cuando el carácter XoffChar es recibido y comienza de nuevo cuando se recibe el carácter XonChar.
fInX: especifica si el control de flujo XON/XOFF se usa durante la recepción. Si este miembro es TRUE, el carácter XoffChar se envía cuando el buffer de entrada entra en los últimos XoffLim bytes, y se envía el carácter XonChar cuando el buffer de entrada está dentro del los primeros XonLim.
fErrorChar: especifica si los bytes recibidos con errores de paridad se reemplazan por el carácter especificado en el miembro ErrorChar. Si este miembro es TRUE y el miembro fParity es TRUE, se hará la sustitución.
fNull: especifica si los caracteres nulos se descartan. Si este miembro es TRUE, los caracteres nulos se descartan cuando se reciben.
fRtsControl: especifica el control de flujo RTS (request-to-send: requerimiento para enviar). Si este valor es cero, por defecto es RTS_CONTROL_HANDSHAKE. Este miembro puede tomar uno de los siguientes valores:
Valor | Significado |
---|---|
RTS_CONTROL_DISABLE | Desactiva la línea RTS cuando el dispositivo es abierto y la deja inactiva. |
RTS_CONTROL_ENABLE | Activa la línea RTS cuando el dispositivo es abierto y la deja activa. |
RTS_CONTROL_HANDSHAKE | Activa el protocolo RTS. El driver activa la línea RTS cuando el "type-ahead" (input) buffer está lleno menos de la mitad y la desactiva cuando el buffer está lleno por encima de los tres cuartos. Si el protocolo está activo, es un error por parte de la aplicación ajustar la línea usando la función EscapeCommFunction. |
RTS_CONTROL_TOGGLE | Especifica que la línea RTS estará activa si hay bytes disponibles para transmitir. Después de que todos los bytes en el buffer han sido transmitidos, la línea RTS se desactiva. |
fAbortOnError: especifica si las operaciones de lectura y escritura se interrumpen si se produce un error. Si este miembro es TRUE, el driver interrumpirá todas la operaciones de lectura y escritura con un estado de error cuando se produzca un error. El driver no aceptará ninguna operación de comunicación hasta que la aplicación haya reconocido el error mediante la llamada a la función ClearCommError.
fDummy2: reservado, no usar.
wReserved: no usar, debe ser cero.
XonLim: especifica el mínimo número de bytes permitidos en el buffer de entrada antes de que se envíe el carácter XON.
XoffLim: especifica el máximo número de bytes permitidos en el buffer de entrada antes de que se envíe el carácter XOFF. El máximo número de bytes permitido se calcula restando este valor del tamaño en bytes del buffer de entrada.
ByteSize: especifica el número de bits de los bytes transmitidos y recibidos.
Parity: especifica el esquema de paridad a usar. Este miembro puede tener uno de los siguientes valores:
Valor | Significado |
---|---|
EVENPARITY | Paridad par |
MARKPARITY | Marca |
NOPARITY | Sin paridad |
ODDPARITY | Paridad impar |
StopBits: especifica el número de bits de parada a usar. Este miembro puede tomar uno de los siguientes valores:
Valor | Significado |
---|---|
ONESTOPBIT | Un bit de parada |
ONE5STOPBITS | Un bit y medio de parada |
TWOSTOPBITS | Dos bits de parada |
XonChar: especifica el valor del carácter XON, tanto para transmisión como para recepción.
XoffChar: especifica el valor del carácter XOFF, tanto para transmisión como para recepción.
ErrorChar: especifica el valor del carácter usado para reemplazar los bytes recibidos con error de paridad.
EofChar: especifica el valor del carácter usado como señal de fin de datos.
EvtChar: especifica el valor del carácter para señalizar un evento.
wReserved1: reservado, no usar.
Observaciones
Cuando una estructura DCB se usa para configurar el 8250, se deben aplicar las siguientes restricciones a los valores especificados por los miembros ByteSize y StopBits:
- El número de bits de datos debe estar ente 5 y 8.
- El uso de 5 bits de datos con 2 bits de parada es una combinación no válida, así como 6, 7 u 8 bits de datos con 1.5 bits de parada.