在應(yīng)用WIN32 API 對(duì)串口進(jìn)行編程時(shí), 必定會(huì)使用到DCB 結(jié)構(gòu). 下面的DCB 結(jié)構(gòu)的一些介紹.
首先是DCB 結(jié)構(gòu).
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;
在這個(gè)結(jié)構(gòu)中, 共有28個(gè)變量, 我把這些成員歸類(lèi)為幾種. 1. 串口的基本設(shè)置 1) DWORD BaudRate; 波特率設(shè)置。 2) BYTE ByteSize; 數(shù)據(jù)位設(shè)置。 3) DWORD fParity: 1; TRUE時(shí), 支持奇偶檢驗(yàn)。 4) BYTE Parity; 奇偶檢驗(yàn)位的設(shè)置 5) BYTE StopBits; 停止位的設(shè)置 2. 流控制(Flow Control) 的設(shè)置 流控制分為硬件流控制和軟件流控制。 而硬件流控制又分為RTS/CTS和DTR/DSR兩種。而軟件流控制, 則是Xon/Xoff。 DTR/DSR 硬件流控制: 1) DWORD fOutxDsrFlow:1; TRUE時(shí),支持DSR流控制。 當(dāng)DSR為OFF時(shí),停止發(fā)送。 2) DWORD fDtrControl:2; DTR設(shè)置。 (置高/置低...) 3) DWORD fDsrSensitivity:1; TRUE時(shí),當(dāng)DSR為OFF,則接收端忽略所有字符。
RTS/CTS 硬件流控制: 4) DWORD fOutxCtsFlow:1; TRUE時(shí),支持CTS流控制。 當(dāng)CTS為OFF時(shí),停止發(fā)送。 5) DWORD fRtsControl:2; RTS設(shè)置。 (置高/置低...)
Xon/Xoff 軟件流控制: 6) DWORD fOutX: 1; 發(fā)送端支持Xon/Xoff。 7) DWORD fInX: 1; 接收端支持Xon/Xoff。 8) WORD XonLim; 當(dāng)接收Buffer中的字符減少小XonLim規(guī)定的字符數(shù), 就發(fā)送Xon字符,讓對(duì)方繼續(xù)發(fā)送。 9) WORD XoffLim; 接收Buffer達(dá)到XoffLim規(guī)定的字符數(shù), 就發(fā)送Xoff字符, 讓對(duì)方停止發(fā)送。 10)char XonChar; Xon 字符。 11)char XoffChar; Xoff 字符。 12)DWORD fTXContinueOnXoff:1; TRUE時(shí),不管接收端是否Xoff, 本方發(fā)送端持續(xù)發(fā)送。 (也就是本方的發(fā)送端, 與本方接收端Xon/Xoff是相互獨(dú)立的)。若為False 時(shí),則當(dāng)接收端buffer 達(dá)到XoffLim時(shí),發(fā)送端發(fā)送完Xoff字符后,就停止發(fā)送。 3. Error 情況處理 1) DWORD fErrorChar: 1; TRUE時(shí),若fParity為T(mén)RUE, 則用ErrorChar替換Parity Check錯(cuò)誤的字符。 2) DWORD fAbortOnError:1; TRUE時(shí),發(fā)生錯(cuò)誤時(shí)停止讀寫(xiě)操作。 3) char ErrorChar; Parity Check 錯(cuò)誤時(shí),替換的字符。 4. 其他參數(shù) 1) DWORD DCBlength; DCB結(jié)構(gòu)的長(zhǎng)度(以字節(jié)為單位) 2) DWORD fBinary: 1; 二進(jìn)制模式。(必須為1 ) 3) DWORD fNull: 1; TRUE時(shí),接收時(shí)去掉空字節(jié)(0x0) 4) char EofChar; EOF替代字符 5) char EvtChar; 事件觸發(fā)字符 6) DWORD fDummy2:17; 保留 7) WORD wReserved; 保留 8) WORD wReserved1; 保留
|