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