GetCommState()函数功能,使用指定通信设备的当前控制设置填充设备控制块(DCB结构)
GetCommState()函数原型
1 2 3 4 |
BOOL GetCommState( HANDLE hFile, LPDCB lpDCB ); |
参数
hFile
[in]由CreateFile函数返回的通信设备句柄。
lpDCB
[out]指向返回控制设置数据的DCB结构的长指针。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
typedef struct _DCB { //DCB结构声明 DWORD DCBlength; /*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=None,Odd,Even,Mark,Space */ 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, *LPDCB; |
DCB结构中重要参数说明如下:
- Baudrate:串行端口的传输速度
- fBinary:是否采用二进制方式发送数据,若设为1,表示采用二进制方式,占 一个位。由于win32只支持二进制的方式,故此值必须设置为1.
- fParity:是否启动奇偶校验位检查,若设为1,表示采用奇偶校验位检查。此标志占一个位。
- fOutxCtsFlow:是否采用CTS硬件流量控制。当此值设为1,而CTS引脚为底电位时,数据发送将暂停,直到CTS引脚升至高电位。占一个位。
- fOutDsrFlow:是否采用DSR硬件流量控制。当此值设为1,而DSR引脚为低电位时,数据发送将暂停,直到DSR引脚升至高电位,占一个位。
- fDtrControl:是否采用DTR硬件流量控制。可设为DTR_CONTROL_DISABLE(串行端口打开后设为低电位)、DTR_CONTROL_ENABLE( 串行端口打开后设为高电位)DTR_CONTROL_HANDSHAKE(启动硬件流量控制)三者之一,其常数定义数值分别是0、1、2。此标志占两个位。
- fDsrSensitivity:当成True时,当DSR引脚被提升至高电位之前,串行端口将忽略任何被收到的数据。此标志占一个位的位置。
- ftOutX:发送过程是否启用软件握手(XON_XOFF)。当设成1时,发送过程收到XOFF字符时停上发送,而收到XON字符时恢复发送。此标志占一个位的位置。
- fInX:发送过程是否后用软件握手(XON-XOFF),当设成1时,接收过程若超过设置值(XoffLim参数决定),则送出XOFF字符:而低于设置值时(Xonlim参数决定)送出XON字符。此标志占一个位的位置。
- fNuil:接收过程是否舍弃空格符。若设成1则于接收过程将自动去掉空格符。此标志占一个位的位置。
- fRtsControl:是否启动RTS硬件流控制。可设为RTS_CONTROL_DISABLE(串行端凵打丌后设为低电位)、RTS_CONTROL_ENABLE(串行端口打开后设为高电位)、RTS_CONTROL_HANDSHAKE(启动硬件流量控制)、
RTSCONTROLTOGGLE(指示发过程的进行状态)四者之一,其常数是0、1、2、3。此标志占两个位的位置。 - XonLim:设置发送XON字符时,输入缓冲区中的最小字节数
- XoffLim:设置发送XOFF字符时,输入缓冲区中的最大字节数
- ByteSize:设置数据位数。有5、6、7、8可以设置。
- Parity:设置校验位检查的种类。有None、Even、Odd三种
- StopBits:设置停止位数。有1、1.5、2三种
- XonChar:设置XON字符
- XoffChar:设置XOFF字符