シリアルポートのDCB構造体の詳細

3759 ワード

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バイナリモードを許可するかどうかを指定します.Win 32 APIは非バイナリモード伝送をサポートせず、trueに設定する
fParityパリティパリティが許可されているかどうかを指定し、trueの場合にパリティ設定を参照します.
Parityポートデータ転送の検証方法を指定します.以下は、取得可能な値とその意味です.
値の意味
EVENPARITY偶数検査
MARKPARITYタグチェック、送信された情報フレーム第9ビットは一定1
NOPARITYチェックなし
ODDPARITY奇検
StopBitsは、ポートで現在使用されている停止ビット数を指定します.値は次のとおりです.
値の意味
ONESTOPBIT 1ストップビット
ONE 5 STOPBITS 1.5ストップビット
TWOSTOPBITS 2ストップビット
fErrorCharこの値がTRUEである場合、パリティエラーの受信文字の代わりにErrorCharが指定した文字を使用する
ErrorCharは、ErrorChar文字(受信したパリティでエラーが発生した場合のバイトの代わりに)を指定します.
EvetCharこの文字を受信すると、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文字
fDummy 2保留、未使用
wReservedが有効になっていません.0に設定する必要があります.
wReserved 1保留、未使用