winbase.h

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.