DCB  AMM36P 

The DCB structure defines the control setting for a serial communications device.

typedef struct _DCB {  // dcb

    DWORD DCBlength;           // sizeof(DCB)

    DWORD BaudRate;            // current baud rate

    DWORD fBinary: 1;          // binary mode, no EOF check

    DWORD fParity: 1;          // enable parity checking

    DWORD fOutxCtsFlow:1;      // CTS output flow control

    DWORD fOutxDsrFlow:1;      // DSR output flow control

    DWORD fDtrControl:2;       // DTR flow control type

    DWORD fDsrSensitivity:1;   // DSR sensitivity

    DWORD fTXContinueOnXoff:1; // XOFF continues Tx

    DWORD fOutX: 1;            // XON/XOFF out flow control

    DWORD fInX: 1;             // XON/XOFF in flow control

    DWORD fErrorChar: 1;       // enable error replacement

    DWORD fNull: 1;            // enable null stripping

    DWORD fRtsControl:2;       // RTS flow control

    DWORD fAbortOnError:1;     // abort reads/writes on error

    DWORD fDummy2:17;          // reserved

    WORD wReserved;            // not currently used

    WORD XonLim;               // transmit XON threshold

    WORD XoffLim;              // transmit XOFF threshold

    BYTE ByteSize;             // number of bits/byte, 4-8

    BYTE Parity;               // 0-4=no,odd,even,mark,space

    BYTE StopBits;             // 0,1,2 = 1, 1.5, 2

    char XonChar;              // Tx and Rx XON character

    char XoffChar;             // Tx and Rx XOFF character

    char ErrorChar;            // error replacement character

    char EofChar;              // end of input character

    char EvtChar;              // received event character

    WORD wReserved1;           // reserved; do not use

} DCB;

 

Members

DCBlength

Specifies the length, in bytes, of the DCB structure.

BaudRate

Specifies the baud rate at which the communications device operates. This member can be an actual baud rate value, or one of the following baud rate indexes:

CBR_110

CBR_19200

CBR_300

CBR_38400

CBR_600

CBR_56000

CBR_1200

CBR_57600

CBR_2400

CBR_115200

CBR_4800

CBR_128000

CBR_9600

CBR_256000

CBR_14400

 

 

fBinary

Specifies whether binary mode is enabled. The Win32 API does not support nonbinary mode transfers, so this member should be TRUE. Trying to use FALSE will not work.

Under Windows 3.1, if this member is FALSE, nonbinary mode is enabled, and the character specified by the EofChar member is recognized on input and remembered as the end of data.

fParity

Specifies whether parity checking is enabled. If this member is TRUE, parity checking is performed and errors are reported.

fOutxCtsFlow

Specifies whether the CTS (clear-to-send) signal is monitored for output flow control. If this member is TRUE and CTS is turned off, output is suspended until CTS is sent again.

fOutxDsrFlow

Specifies whether the DSR (data-set-ready) signal is monitored for output flow control. If this member is TRUE and DSR is turned off, output is suspended until DSR is sent again.

fDtrControl

Specifies the DTR (data-terminal-ready) flow control. This member can be one of the following values:

Value

Meaning

DTR_CONTROL_DISABLE

Disables the DTR line when the device is opened and leaves it disabled.

DTR_CONTROL_ENABLE

Enables the DTR line when the device is opened and leaves it on.

DTR_CONTROL_HANDSHAKE

Enables DTR handshaking. If handshaking is enabled, it is an error for the application to adjust the line by using the EscapeCommFunction2MLDDXO function.

 

fDsrSensitivity

Specifies whether the communications driver is sensitive to the state of the DSR signal. If this member is TRUE, the driver ignores any bytes received, unless the DSR modem input line is high.

fTXContinueOnXoff

Specifies whether transmission stops when the input buffer is full and the driver has transmitted the XoffChar character. If this member is TRUE, transmission continues after the input buffer has come within XoffLim bytes of being full and the driver has transmitted the XoffChar character to stop receiving bytes. If this member is FALSE, transmission does not continue until the input buffer is within XonLim bytes of being empty and the driver has transmitted the XonChar character to resume reception.

fOutX

Specifies whether XON/XOFF flow control is used during transmission. If this member is TRUE, transmission stops when the XoffChar character is received and starts again when the XonChar character is received.

fInX

Specifies whether XON/XOFF flow control is used during reception. If this member is TRUE, the XoffChar character is sent when the input buffer comes within XoffLim bytes of being full, and the XonChar character is sent when the input buffer comes within XonLim bytes of being empty.

fErrorChar

Specifies whether bytes received with parity errors are replaced with the character specified by the ErrorChar member. If this member is TRUE and the fParity member is TRUE, replacement occurs.

fNull

Specifies whether null bytes are discarded. If this member is TRUE, null bytes are discarded when received.

fRtsControl

Specifies the RTS (request-to-send) flow control. If this value is zero, the default is RTS_CONTROL_HANDSHAKE. This member can be one of the following values:

Value

Meaning

RTS_CONTROL_DISABLE

Disables the RTS line when the device is opened and leaves it disabled.

RTS_CONTROL_ENABLE

Enables the RTS line when the device is opened and leaves it on.

RTS_CONTROL_HANDSHAKE

Enables RTS handshaking. The driver raises the RTS line when the  type-ahead  (input) buffer is less than one-half full and lowers the RTS line when the buffer is more than three-quarters full. If handshaking is enabled, it is an error for the application to adjust the line by using the EscapeCommFunction function.

RTS_CONTROL_TOGGLE

Specifies that the RTS line will be high if bytes are available for transmission. After all buffered bytes have been sent, the RTS line will be low.

 

fAbortOnError

Specifies whether read and write operations are terminated if an error occurs. If this member is TRUE, the driver terminates all read and write operations with an error status if an error occurs. The driver will not accept any further communications operations until the application has acknowledged the error by calling the ClearCommErrorJ1CECX function.

fDummy2

Reserved; do not use.

wReserved

Not used; must be set to zero.

XonLim

Specifies the minimum number of bytes allowed in the input buffer before the XON character is sent.

XoffLim

Specifies the maximum number of bytes allowed in the input buffer before the XOFF character is sent. The maximum number of bytes allowed is calculated by subtracting this value from the size, in bytes, of the input buffer.

ByteSize

Specifies the number of bits in the bytes transmitted and received.

Parity

Specifies the parity scheme to be used. This member can be one of the following values:

Value

Meaning

EVENPARITY

Even

MARKPARITY

Mark

NOPARITY

No parity

ODDPARITY

Odd

 

StopBits

Specifies the number of stop bits to be used. This member can be one of the following values:

Value

Meaning

ONESTOPBIT

1 stop bit

ONE5STOPBITS

1.5 stop bits

TWOSTOPBITS

2 stop bits

 

XonChar

Specifies the value of the XON character for both transmission and reception.

XoffChar

Specifies the value of the XOFF character for both transmission and reception.

ErrorChar

Specifies the value of the character used to replace bytes received with a parity error.

EofChar

Specifies the value of the character used to signal the end of data.

EvtChar

Specifies the value of the character used to signal an event.

wReserved1

Reserved; do not use.

 

Remarks

When a DCB structure is used to configure the 8250, the following restrictions apply to the values specified for the ByteSize and StopBits members:

    The number of data bits must be 5 to 8 bits.

    The use of 5 data bits with 2 stop bits is an invalid combination, as is 6, 7, or 8 data bits with 1.5 stop bits.

 

See Also

BuildCommDCB, ClearCommError, EscapeCommFunction, GetCommState, SetCommState