次の方法で共有


通信リソース設定の変更

CreateFile 関数がシリアル通信リソースへのハンドルを開くと、システムはリソースを初期化し、リソースが最後に開かれたときに設定された値に従ってリソースを構成します。 前の設定を保持すると、デバイスが再度開かれたときに、モード コマンドで指定された設定を保持できます。 前のオープン操作から継承された値には、デバイス制御ブロック (DCB 構造体) の構成設定と、I/O 操作で使用されるタイムアウト値が含まれます。 デバイスが開かれない場合は、システムの既定値で構成されます。

シリアル通信リソースの初期構成を決定するために、プロセスは GetCommState 関数を呼び出します。この関数は、DCB構造体シリアル ポートに現在の構成設定を入力します。 この構成を変更するには、SetCommState 関数の呼び出しで、DCB 構造体を指定します。

DCB 構造体のメンバーは、ボー レート、バイトあたりのデータ ビット数、バイトあたりのストップ ビット数などの構成設定を指定します。 DCB メンバー 他のメンバーは特殊文字を指定し、パリティ 検査とフロー制御を有効にします。 これらの構成設定の一部のみを変更する必要があるプロセスでは、最初に GetCommState呼び出して、DCB 構造体に現在の構成を入力する必要があります。 その後、DCB 構造体の重要な値を調整し、SetCommState呼び出し、変更された dcB 構造体 指定することで、デバイスを再構成できます。 この手順により、DCB 構造体の変更されていないメンバーに適切な値が含まれていることが保証されます。 たとえば、一般的なエラーは、構造体の XonChar メンバーが XoffChar メンバーと等しい DCB 構造体を持つデバイスを構成することです。

BuildCommDCB 関数は、DCB 構造体を変更する別の方法を提供します。 BuildCommDCB では、モードの コマンドのコマンド ライン引数と同じ形式の文字列を使用して、ボー レート、パリティ スキーム、ストップ ビット数、およびデータ ビット数を指定します。 DCB の残りのメンバーは、XON/XOFF およびハードウェア フロー制御を無効にするように適切なメンバーが設定されている点を除いて、この関数によって変更されません。 BuildCommDCB は、DCB 構造体のみを変更します。デバイスは再構成されません。

プロセスでは、GetCommProperties 関数を使用して、サポートされている構成設定に関する情報をデバイス ドライバーから取得することで、通信リソースを再構成できます。 このプロセスでは、この情報を使用して、サポートされていない構成を指定しないようにすることができます。

SetCommState 関数は通信リソースを再構成しますが、指定したドライバーの内部出力バッファーと入力バッファーには影響しません。 バッファーはフラッシュされず、保留中の読み取り操作と書き込み操作は途中で終了しません。

プロセスは、次のタスクを実行する SetupComm 関数を使用して通信リソースを再初期化します。

  • 保留中の読み取り操作と書き込み操作が完了していない場合でも終了します。
  • 未読文字を破棄し、指定したリソースに関連付けられているドライバーの内部出力バッファーと入力バッファーを解放します。
  • 内部出力バッファーと入力バッファーを再割り当てします。

SetupComm呼び出すプロセスは必要ありません。 そうでない場合、リソースのドライバーは、通信リソース ハンドルが初めて使用されるときに、既定の設定でデバイスを初期化します。