dcB 结构 (winbase.h)

定义串行通信设备的控制设置。

语法

typedef struct _DCB {
  DWORD DCBlength;
  DWORD BaudRate;
  DWORD fBinary : 1;
  DWORD fParity : 1;
  DWORD fOutxCtsFlow : 1;
  DWORD fOutxDsrFlow : 1;
  DWORD fDtrControl : 2;
  DWORD fDsrSensitivity : 1;
  DWORD fTXContinueOnXoff : 1;
  DWORD fOutX : 1;
  DWORD fInX : 1;
  DWORD fErrorChar : 1;
  DWORD fNull : 1;
  DWORD fRtsControl : 2;
  DWORD fAbortOnError : 1;
  DWORD fDummy2 : 17;
  WORD  wReserved;
  WORD  XonLim;
  WORD  XoffLim;
  BYTE  ByteSize;
  BYTE  Parity;
  BYTE  StopBits;
  char  XonChar;
  char  XoffChar;
  char  ErrorChar;
  char  EofChar;
  char  EvtChar;
  WORD  wReserved1;
} DCB, *LPDCB;

成员

DCBlength

结构的长度(以字节为单位)。 调用方必须将此成员设置为 sizeof(DCB)

BaudRate

通信设备运行时的波特速率。 此成员可以是实际的波特率值,也可以是以下索引之一。

Value 含义
CBR_110
110
110 bps
CBR_300
300
300 bps
CBR_600
600
600 bps
CBR_1200
1200
1200 bps
CBR_2400
2400
2400 bps
CBR_4800
4800
4800 bps
CBR_9600
9600
9600 bps
CBR_14400
14400
14400 bps
CBR_19200
19200
19200 bps
CBR_38400
38400
38400 bps
CBR_57600
57600
57600 bps
CBR_115200
115200
115200 bps
CBR_128000
128000
128000 bps
CBR_256000
256000
256000 bps

fBinary

如果此成员为 TRUE,则启用二进制模式。 Windows 不支持非二元模式传输,因此此成员必须为 TRUE

fParity

如果此成员为 TRUE,则执行奇偶校验并报告错误。

fOutxCtsFlow

如果此成员为 TRUE,则会监视 CTS (明送) 信号,以便进行输出流控制。 如果此成员为 TRUE 且 CTS 已关闭,输出将暂停,直到 CTS 再次发送。

fOutxDsrFlow

如果此成员为 TRUE,则会监视 DSR (数据集就绪) 信号,以便进行输出流控制。 如果此成员为 TRUE 且 DSR 已关闭,输出将暂停,直到 DSR 再次发送。

fDtrControl

DTR (数据终端就绪) 流控制。 此成员可以是以下值之一。

Value 含义
DTR_CONTROL_DISABLE
0x00
打开设备并将其禁用时禁用 DTR 行。
DTR_CONTROL_ENABLE
0x01
打开设备并将其保留时启用 DTR 行。
DTR_CONTROL_HANDSHAKE
0x02
启用 DTR 握手。 如果启用了握手,则应用程序使用 EscapeCommFunction 函数调整行是错误的。

fDsrSensitivity

如果此成员为 TRUE,则通信驱动程序对 DSR 信号的状态敏感。 除非 DSR 调制解调器输入行很高,否则驱动程序将忽略接收的任何字节。

fTXContinueOnXoff

如果此成员为 TRUE,则输入缓冲区在 XoffLim 字节内处于已满的 XoffLim 字节之后继续传输,驱动程序已传输 XoffChar 字符以停止接收字节。 如果此成员为 FALSE,则在输入缓冲区为空的 XonLim 字节内且驱动程序已传输 XonChar 字符以恢复接收之前,传输不会继续。

fOutX

指示是否在传输过程中使用 XON/XOFF 流控制。 如果此成员为 TRUE,则接收 XoffChar 字符时传输将停止,并在收到 XonChar 字符时再次启动。

fInX

指示是否在接收期间使用 XON/XOFF 流控制。 如果此成员为 TRUE,则当输入缓冲区位于已满的 XoffLim 字节内时发送 XoffChar 字符,当输入缓冲区位于 XonLim 字节内为空时发送 XonChar 字符。

fErrorChar

指示是否用奇偶校验错误接收的字节替换为 ErrorChar 成员指定的字符。 如果此成员为 TRUE并且 fParity 成员为 TRUE,则会发生替换。

fNull

如果此成员为 TRUE,则接收时将丢弃 null 字节。

fRtsControl

RTS (请求到发送) 流控制。 此成员可以是以下值之一。

Value 含义
RTS_CONTROL_DISABLE
0x00
打开设备并将其禁用时禁用 RTS 行。
RTS_CONTROL_ENABLE
0x01
当设备打开并使其保持打开状态时,启用 RTS 行。
RTS_CONTROL_HANDSHAKE
0x02
启用 RTS 握手。 当“提前类型” (输入) 缓冲区小于一半满时,驱动程序将引发 RTS 行,当缓冲区超过四分之三时,将降低 RTS 行。 如果启用了握手,则应用程序使用 EscapeCommFunction 函数调整行是错误的。
RTS_CONTROL_TOGGLE
0x03
指定如果字节可用于传输,RTS 行将很高。 发送所有缓冲字节后,RTS 行将较低。

fAbortOnError

如果此成员为 TRUE,驱动程序将终止所有读取和写入操作,并在发生错误时状态为错误。 在应用程序通过调用 ClearCommError 函数确认错误之前,驱动程序不会接受任何进一步的通信操作。

fDummy2

保留;不使用。

wReserved

保留;必须为零。

XonLim

激活流控制以允许发送方传输之前,输入缓冲区中允许使用的最小字节数。 这假定 在 fInXfRtsControlfDtrControl 成员中指定了 XON/XOFF、RTS 或 DTR 输入流控件。

XoffLim

激活流控制以抑制发送方之前,输入缓冲区中允许的最小可用字节数。 请注意,发送方可能会在激活流控制信号后传输字符,因此此值不应为零。 这假定 在 fInXfRtsControlfDtrControl 成员中指定了 XON/XOFF、RTS 或 DTR 输入流控件。 允许使用的最大字节数是通过从输入缓冲区的大小(以字节为单位)中减去此值来计算的。

ByteSize

传输和接收的字节数。

Parity

要使用的奇偶校验方案。 此成员可以是以下值之一。

Value 含义
EVENPARITY
2
甚至奇偶校验。
MARKPARITY
3
标记奇偶校验。
NOPARITY
0
没有奇偶校验。
ODDPARITY
1
奇偶校验。
SPACEPARITY
4
空间奇偶校验。

StopBits

要使用的停止位数。 此成员可以是以下值之一。

Value 含义
ONESTOPBIT
0
1 个停止位。
ONE5STOPBITS
1
1.5 个停止位。
TWOSTOPBITS
2
2 个停止位。

XonChar

传输和接收的 XON 字符的值。

XoffChar

传输和接收的 XOFF 字符的值。

ErrorChar

用于用奇偶校验错误替换收到的字节的字符的值。

EofChar

用于向数据结束发出信号的字符的值。

EvtChar

用于向事件发出信号的字符的值。

wReserved1

保留;不使用。

注解

DCB 结构用于配置 8250 时,以下限制适用于为 ByteSizeStopBits 成员指定的值:

  • 数据位数必须为 5 到 8 位。
  • 将 5 个数据位与 2 个停止位结合使用是无效的组合,即 6、7 或 8 个数据位和 1.5 个停止位。

要求

   
最低受支持的客户端 Windows XP
最低受支持的服务器 Windows Server 2003
标头 winbase.h (包括 Windows.h)

另请参阅

BuildCommDCB

ClearCommError

EscapeCommFunction

GetCommState

SetCommState