DCB

【勇芳软件工作室】汉化HomePreviousNext

DCB结构定义了串行通信设备的控制设置。

typedef struct _DCB { // DCB

DWORD DCBlength; // sizeof(DCB)

DWORD BaudRate; //当前波特率

DWORD fBinary: 1; //二进制模式,无EOF检查

DWORD fParity: 1; //启用奇偶校验

DWORD fOutxCtsFlow:1; // CTS输出流量控制

DWORD fOutxDsrFlow:1; // DSR输出流控制

DWORD fDtrControl:2; // DTR流量控制类型

DWORD fDsrSensitivity:1; // DSR灵敏度

DWORD fTXContinueOnXoff:1; // XOFF继续Tx

DWORD fOutX: 1; // XON / XOFF输出流控制

DWORD fInX: 1; // XON / XOFF在流量控制

DWORD fErrorChar: 1; //启用错误替换

DWORD fNull: 1; //启用空剥离

DWORD fRtsControl:2; // RTS流量控制

DWORD fAbortOnError:1; //中止读/写错误

DWORD fDummy2:17; //保留

WORD wReserved; //目前未使用

WORD XonLim; //传输XON阈值

WORD XoffLim; //发送XOFF阈值

BYTE ByteSize; //位/字节数,4-8

BYTE Parity; // 0-4 =不,奇,偶,标记,空格

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

char XonChar; // Tx和Rx XON字符

char XoffChar; // Tx和Rx XOFF字符

char ErrorChar; //错误替换字符

char EofChar; //输入字符的结尾

char EvtChar; //接收到事件字符

WORD wReserved1; //保留;不使用

} DCB;

会员

DCBlength

指定DCB结构的长度(以字节为单位)。

BaudRate

指定通信设备工作的波特率。该成员可以是实际的波特率值,也可以是以下波特率指标之一:

CBR_110CBR_19200
CBR_300CBR_38400
CBR_600CBR_56000
CBR_1200CBR_57600
CBR_2400CBR_115200
CBR_4800CBR_128000
CBR_9600CBR_256000
CBR_14400 

fBinary

指定是否启用二进制模式。Win32 API不支持非二进制模式传输,因此该成员应为TRUE。尝试使用FALSE将无法正常工作。

在Windows 3.1下,如果此成员为FALSE,则启用非二进制模式,并且在输入中识别由EofChar成员指定的字符作为数据结尾。

传播

指定是否启用奇偶校验。如果该成员为TRUE,则执行奇偶校验并报告错误。

fOutxCtsFlow

指定是否监控CTS(清除发送)信号以进行输出流量控制。如果此成员为TRUE并且CTS已关闭,则输出将暂停,直到CTS重新发送。

fOutxDsrFlow

指定DSR(数据设置就绪)信号是否监视输出流量控制。如果此成员为TRUE,并且DSR已关闭,则将暂停输出,直到再次发送DSR。

fDtrControl

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

含义
DTR_CONTROL_DISABLE当设备打开并禁用时,禁用DTR线路。
DTR_CONTROL_ENABLE在设备打开并启用时启用DTR线路。
DTR_CONTROL_HANDSHAKE启用DTR握手。如果启用握手,则应用程序使用EscapeCommFunction功能调整线路是错误的。

fDsrSensitivity

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

fTXContinueOnXoff

指定当输入缓冲区已满并且驱动程序已发送XoffChar字符时传输是否停止。如果该成员为TRUE,则在输入缓冲区已经满足XoffLim个字节并且驱动程序已发送XoffChar字符以停止接收字节之后,传输将继续。如果该成员为FALSE,则在输入缓冲区在XonLim个字节为空并且驱动程序已发送XonChar字符以恢复接收之前,传输不会持续。

fOutX

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

fInX

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

fErrorChar

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

fNull

指定是否丢弃空字节。如果此成员为TRUE,则在接收到空字节时将被丢弃。

fRtsControl

指定RTS(请求发送)流控制。如果此值为零,则默认值为RTS_CONTROL_HANDSHAKE。该成员可以是以下值之一:

含义
RTS_CONTROL_DISABLE当设备打开时禁用RTS线,并将其禁用。
RTS_CONTROL_ENABLE当设备打开并启用RTS时,启用RTS线。
RTS_CONTROL_HANDSHAKE启用RTS握手。当“超前”(输入)缓冲区小于一半时,驱动程序会提高RTS线路,当缓冲区超过四分之三满时,RTS线路会降低。如果启用握手,则应用程序使用EscapeCommFunction功能调整线路是错误的。
RTS_CONTROL_TOGGLE指定如果字节可用于传输,则RTS线将为高。所有缓冲字节都被发送完毕后,RTS线将会很低。

fAbortOnError

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

fDummy2

Reserved; do not use.

wReserved

Not used; must be set to zero.

XonLim

指定在发送XON字符之前输入缓冲区中允许的最小字节数。

XoffLim

指定发送XOFF字符之前在输入缓冲区中允许的最大字节数。通过从输入缓冲区的大小(以字节为单位)减去该值来计算允许的最大字节数。

ByteSize

指定发送和接收的字节中的位数。

平价

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

含义
EVENPARITY甚至
MARKPARITY标记
NOPARITY没有平价
ODDPARITY

StopBits

指定要使用的停止位数。该成员可以是以下值之一:

含义
ONESTOPBIT1停止位
ONE5STOPBITS1.5停止位
TWOSTOPBITS2个停止位

XonChar

指定发送和接收的XON字符的值。

XoffChar

指定发送和接收的XOFF字符的值。

ErrorChar

指定用于替换以奇偶校验错误接收的字节的字符的值。

EofChar

指定用于表示数据结束的字符的值。

EvtChar

指定用于表示事件的字符的值。

wReserved1

Reserved; do not use.

备注

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

*数据位数必须为5到8位。

*使用2位停止位的5位数据位是无效组合,也就是6位,7位或8位数据位,其中有1.5位停止位。

也可以看看

BuildCommDCB, ClearCommError, EscapeCommFunction, GetCommState, SetCommState