串口之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線電平狀態 spa

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      保留,未啓用terminal

相關文章
相關標籤/搜索