串口之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; 
DCBlengthDCB结构大小,即sizeof(DCB),在调用SetCommState来更新DCB前必须作设置 
BaudRate  指定当前采用的波特率,应与所连接的通讯设备相匹配 
fBinary  指定是否允许二进制模式。Win32 API不支持非二进制模式传输,应设置为true 
fParity  指定奇偶校验是否允许,在为true时具体采用何种校验看Parity 设置 
Parity    指定端口数据传输的校验方法。以下是可取值及其意义: 
       取值        意义 
    EVENPARITY    偶校验 
    MARKPARITY    标记校验,所发信息帧第9位恒为1 
    NOPARITY      无校验 
    ODDPARITY     奇校验 
StopBits指定端口当前使用的停止位数,可取值: 
      取值         意义 
    ONESTOPBIT    1停止位 
    ONE5STOPBITS  1.5停止位 
    TWOSTOPBITS   2停止位 
fErrorChar该值为TRUE,则用ErrorChar指定的字符代替奇偶校验错误的接收字符 
ErrorChar  指定ErrorChar字符(代替接收到的奇偶校验发生错误时的字节) 
EvtChar    当接收到此字符时,会产生一个EV_RXFLAG事件,如果用SetCommMask函数中指定了EV_RXFLAG , 
            则可用WaitCommEvent 来监测该事件 
EofChar    指定用于标示数据结束的字符 
fNull      为TRUE时,接收时自动去掉空(0值)字节 
fAbortOnError读写操作发生错误时是否取消操作。若设置为true,则当发生读写错误时,将取消所有读写操作 
              (错误状态置为ERROR_IO_ABORTED),直到调用ClearCommError函数后才能重新进行通讯操作 
fOutxCtsFlow是否监控CTS(clear-to-send)信号来做输出流控。当设置为true时: 
               若CTS为低电平,则数据发送将被挂起,直至CTS变为高。 
               CTS的信号一般由DCE(通常是一个Modem)控制,DTE(通常是计算机)发送数据时监测CTS信号。 
               也就是说DCE通过把CTS置高来表明自己可以接收数据了 
fRtsControl设置RTS (request-to-send)流控,若为0则缺省取 RTS_CONTROL_HANDSHAKE。可取值及其意义: 
            取值                      意义 
      RTS_CONTROL_DISABLE 打开设备时置RTS信号为低电平,应用程序可通过调用 
      EscapeCommFunction函数来改变RTS线电平状态 
      RTS_CONTROL_ENABLE 打开设备时置RTS信号为高电平,应用程序可通过调用 
            EscapeCommFunction函数来改变RTS线电平状态 
            RTS_CONTROL_HANDSHAKE 允许RTS信号握手,此时应用程序不能调用EscapeCommFunction函数。 
            当输入缓冲区已经有足够空间接收数据时,驱动程序置RTS为高以允许 
            DCE来发送;反之置RTS为低以阻止DCE发送数据。 
            RTS_CONTROL_TOGGLE 有字节要发送时RTS变高,当所有缓冲字节已被发送完毕后,RTS变低。 
fOutxDsrFlow是否监控DSR (data-set-ready) 信号来做输出流控。当设置为true时: 
              若DSR为低电平,则数据发送将被挂起,直至DSR变为高。DSR的信号一般由DCE来控制 
              fDtrControl DTR (data-terminal-ready)流控,可取值如下: 
              取值                    意义 
        DTR_CONTROL_DISABLE     打开设备时置DTR信号为低电平,应用程序可通过调用 
        EscapeCommFunction      函数来改变DTR线电平状态 
        DTR_CONTROL_ENABLE      打开设备时置DTR信号为高电平,应用程序可通过调用 
         EscapeCommFunction     函数来改变DTR线电平状态 

DTR_CONTROL_HANDSHAKE 允许DTR信号握手,此时应用程序不能调用EscapeCommFunction函数 

fDsrSensitivity  通讯设备是否对DSR信号敏感。若设置为TRUE,则当DSR为低时将会忽略所有接收的字节 
fTXContinueOnXoff当输入缓冲区满且驱动程序已发出XOFF字符时,是否停止发送。 
                    当为TRUE时,XOFF被发送后发送仍然会继续;为FALSE时,则发送会停止, 
                     直至输入缓冲区有XonLim字节的空余空间、驱动程序已发送XON字符之后发送继续。 
fOutX              XON/XOFF 流量控制在发送时是否可用。 
                     如果为TRUE, 当 XOFF 值被收到的时候,发送停止;当 XON 值被收到的时候,发送继续 
fInX               XON/XOFF 流量控制在接收时是否可用。 
                     如果为TRUE, 当 输入缓冲区已接收满XoffLim 字节时,发送XOFF字符; 
                     当输入缓冲区已经有XonLim 字节的空余容量时,发送XON字符 
XonLim             在XON字符发送前接收缓冲区内可允许的最小字节数 
                     XoffLim 在XOFF字符发送前接收缓冲区内可允许的最大字节数 
XonChar         指定XON字符 
XoffChar        指定XOFF字符 
fDummy2         保留,未启用 
wReserved       未启用,必须设置为0 
wReserved1      保留,未启用

你可能感兴趣的:(MFC,C++)