シリアルポートを設定するには、 DCB構造体を使います。 しかし、全てのパラメータを設定するのは大変なので、 現在のパラメータを取得して必要なものだけを変更するようにしましょう。 現在のパラメータを取得するのには、GetCommState 関数を利用します。
DCB dcb;
GetCommState( hCom, &dcb );
DCB構造体変数dcbを宣言します。 以下、シリアルポートの設定は、この構造体に設定します。
hCom は、CreateFile 関数の戻り値を格納した ファイルハンドルを指定します。 第2引数は、現在のパラメータを格納するDCB構造体変数をポインタ渡しにします。
dcb.BaudRate = 38400;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
この例では、通常使われるデータ8ビット、パリティーなし、ストップビット1 の場合を例にしてみました。 DCB構造体のパラメータは数が多いので、必要最小限のものだけを設定しておきました。
これ以外にも、フロー制御に関する 多くのパラメータが存在します。
通信速度の設定をします。 この例では、38400bpsにしてみました。
データのサイズの設定です。 この例では、8ビットにしています。
パリティーの設定です。 この例では、パリティー無しにしています。
ストップビットの設定です。 この例では、1ビットにしています。
DCB構造体のパラメータをセットしたら、 SetCommState 関数を用いて値を反映させます。
SetCommState( hCom, &dcb );
hCom は、CreateFile 関数の戻り値を格納した ファイルハンドルを指定します。 第2引数は、現在のパラメータを格納するDCB構造体変数をポインタ渡しにします。
上記のようにフロー制御を設定しない場合には、 SetCommState 関数を用いる替わりに、 BuildCommDCB 関数を用いてDCB構造体を設定することもできます。
BuildCommDCB("baud=38400 parity=N data=8 stop=1",&dcb);
"baud=38400 parity=N data=8 stop=1"は、 通信速度38400bps、データ8ビット、パリティーなし、ストップビット1を設定しています。 第2引数は、パラメータを格納するDCB構造体変数をポインタ渡しにします。
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||