現在のシリアルポートのパラメータを取得 GetCommState 関数

シリアルポートを設定するには、 DCB構造体を使います。 しかし、全てのパラメータを設定するのは大変なので、 現在のパラメータを取得して必要なものだけを変更するようにしましょう。 現在のパラメータを取得するのには、GetCommState 関数を利用します。

サンプルプログラム

    DCB dcb;

    GetCommState( hCom, &dcb );

解説

DCB dcb;

DCB構造体変数dcbを宣言します。 以下、シリアルポートの設定は、この構造体に設定します。

GetCommState( hCom, &dcb )

hCom は、CreateFile 関数の戻り値を格納した ファイルハンドルを指定します。 第2引数は、現在のパラメータを格納するDCB構造体変数をポインタ渡しにします。

シリアルポートの設定 DCB構造体

サンプルプログラム


    dcb.BaudRate = 38400;
    dcb.ByteSize = 8;
    dcb.Parity = NOPARITY;
    dcb.StopBits = ONESTOPBIT;

この例では、通常使われるデータ8ビット、パリティーなし、ストップビット1 の場合を例にしてみました。 DCB構造体のパラメータは数が多いので、必要最小限のものだけを設定しておきました。

これ以外にも、フロー制御に関する 多くのパラメータが存在します。

dcb.BaudRate = 38400

通信速度の設定をします。 この例では、38400bpsにしてみました。

dcb.ByteSize = 8

データのサイズの設定です。 この例では、8ビットにしています。

dcb.Parity = NOPARITY

パリティーの設定です。 この例では、パリティー無しにしています。

dcb.StopBits = ONESTOPBIT

ストップビットの設定です。 この例では、1ビットにしています。

シリアルポートのパラメータを設定 SetCommState 関数

DCB構造体のパラメータをセットしたら、 SetCommState 関数を用いて値を反映させます。

サンプルプログラム


    SetCommState( hCom, &dcb );
SetCommState( hCom, &dcb )

hCom は、CreateFile 関数の戻り値を格納した ファイルハンドルを指定します。 第2引数は、現在のパラメータを格納するDCB構造体変数をポインタ渡しにします。

DCB構造体を設定する別の方法 BuildCommDCB 関数

上記のようにフロー制御を設定しない場合には、 SetCommState 関数を用いる替わりに、 BuildCommDCB 関数を用いてDCB構造体を設定することもできます。

サンプルプログラム


    BuildCommDCB("baud=38400 parity=N data=8 stop=1",&dcb);
BuildCommDCB("baud=38400 parity=N data=8 stop=1",&dcb)

"baud=38400 parity=N data=8 stop=1"は、 通信速度38400bps、データ8ビット、パリティーなし、ストップビット1を設定しています。 第2引数は、パラメータを格納するDCB構造体変数をポインタ渡しにします。

参考文献

since 2004/06/26(Sat)

BorlandC++Compilerの目次へ

トップページへ

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送