シリアルポートのDCB構造体の詳細
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保留、未使用
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保留、未使用