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_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
指定是否启用二进制模式。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
指定要使用的停止位数。该成员可以是以下值之一:
值 | 含义 |
ONESTOPBIT | 1停止位 |
ONE5STOPBITS | 1.5停止位 |
TWOSTOPBITS | 2个停止位 |
XonChar
指定发送和接收的XON字符的值。
XoffChar
指定发送和接收的XOFF字符的值。
ErrorChar
指定用于替换以奇偶校验错误接收的字节的字符的值。
EofChar
指定用于表示数据结束的字符的值。
EvtChar
指定用于表示事件的字符的值。
wReserved1
Reserved; do not use.
备注
当使用DCB结构来配置8250时,以下限制适用于为ByteSize和StopBits成员指定的值:
*数据位数必须为5到8位。
*使用2位停止位的5位数据位是无效组合,也就是6位,7位或8位数据位,其中有1.5位停止位。
也可以看看
BuildCommDCB, ClearCommError, EscapeCommFunction, GetCommState, SetCommState