在应用WIN32 API 对串口进行编程时, 必定会使用到DCB 结构. 下面的DCB 结构的一些介绍.
首先是DCB 结构.
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;
在这个结构中, 共有28个变量, 我把这些成员归类为几种.
1. 串口的基本设置
1) DWORD BaudRate; 波特率设置。
2) BYTE ByteSize; 数据位设置。
3) DWORD fParity: 1; TRUE时, 支持奇偶检验。
4) BYTE Parity; 奇偶检验位的设置
5) BYTE StopBits; 停止位的设置
2. 流控制(Flow Control) 的设置
流控制分为硬件流控制和软件流控制。 而硬件流控制又分为RTS/CTS和DTR/DSR两种。而软件流控制, 则是Xon/Xoff。
DTR/DSR 硬件流控制:
1) DWORD fOutxDsrFlow:1; TRUE时,支持DSR流控制。 当DSR为OFF时,停止发送。
2) DWORD fDtrControl:2; DTR设置。 (置高/置低...)
fDTRControl | DTR_CONTROL_Disable : 使DTR为 off. |
DTR_CONTROL_Enable : 使DTR 为 on. | |
DTR_CONTROL_HANDSHAKE : DTR 硬件流控. |
3) DWORD fDsrSensitivity:1; TRUE时,当DSR为OFF,则接收端忽略所有字符。
RTS/CTS 硬件流控制:
4) DWORD fOutxCtsFlow:1; TRUE时,支持CTS流控制。 当CTS为OFF时,停止发送。
5) DWORD fRtsControl:2; RTS设置。 (置高/置低...)
fRTSControl | RTS_CONTROL_DISABLE : 使RTS保持 off |
RTS_CONTROL_ENABLE : 使RTS保持on | |
RTS_CONTROL_HANDSHAKE : RTS 硬件流控 | |
RTS_CONTROL_TOGGLE : 485通讯RTS自动流控 |
Xon/Xoff 软件流控制:
6) DWORD fOutX: 1; 发送端支持Xon/Xoff。收到Xoff停止发送,收到Xon重新开始
7) DWORD fInX: 1; 接收端支持Xon/Xoff。当FIFO中字节超过XoffLim时发送Xoff, 当FIFO中少于XonLim时发送Xon.
8) WORD XonLim; 当接收Buffer中的字符减少到XonLim规定的字符数, 就发送Xon字符,让对方继续发送。
9) WORD XoffLim; 接收Buffer达到XoffLim规定的字符数, 就发送Xoff字符, 让对方停止发送。
10)char XonChar; Xon 字符。
11)char XoffChar; Xoff 字符。
12)DWORD fTXContinueOnXoff:1; TRUE时,不管接收端是否Xoff, 本方发送端持续发送。 (也就是本方的发送端, 与本方接收端Xon/Xoff是相互独立的)。若为False 时,则当接收端buffer 达到XoffLim时,发送端发送完Xoff字符后,就停止发送。
3. Error 情况处理
1) DWORD fErrorChar: 1; TRUE时,若fParity为TRUE, 则用ErrorChar替换Parity Check错误的字符。
2) DWORD fAbortOnError:1; TRUE时,发生错误时停止读写操作。
3) char ErrorChar; Parity Check 错误时,替换的字符。
4. 其他参数
1) DWORD DCBlength; DCB结构的长度(以字节为单位)
2) DWORD fBinary: 1; 二进制模式。(必须为1 )
3) DWORD fNull: 1; TRUE时,接收时去掉空字节(0x0)
4) char EofChar; EOF替代字符
5) char EvtChar; 事件触发字符
6) DWORD fDummy2:17; 保留
7) WORD wReserved; 保留
8) WORD wReserved1; 保留
下一篇:
用户1277994 2010-4-13 11:10
用户1277994 2010-4-6 13:03
用户1536784 2010-4-6 11:39
人啊,人!这是一本书