プロが教えるわが家の防犯対策術!

シリアル通信のテストプログラムを作成中でして、一通り動作するようになったのでエラー処理を確認しようとしたところ、存在しないCOMポート?なのにオープンが成功したと処理してしまいます。

環境
 P社のノートパソコン
 Windows XP Pro SP3
 Visual C++6.0 SP6
 USB接続のRS-232C変換アダプタを使用
 デバイスマネージャでは、拡張ポートはCOM4のみとなっている
 ハイパーターミナルの「接続の設定」では、接続方法の選択肢にCOM3とCOM4の2つがある

・COM4を使うと、オープン後、正常に通信できます。
・COM3を使うと、オープンは出来るが、通信は出来ません。

ソースを記載します。
if(HANDLE_CHECK(m_hComm) == FALSE){
ss.Format("COM%d", m_nRsPort);
m_hComm= ::CreateFile(ss, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if(HANDLE_CHECK(m_hComm) == TRUE){
dcb.DCBlength = sizeof(DCB);
if(::GetCommState(m_hComm, &dcb) != FALSE){
dcb.BaudRate = m_nRsBaudrate;
dcb.Parity = m_nRsParity;
・ ・
・ ・
・ ・
if(::SetCommState(m_hComm, &dcb) != FALSE){
COM3の場合もCOM4の場合もここを通っている。
}
else{
}
}
}
}

COM3のオープン時、エラーの検知は出来ないのでしょうか?
よろしくお願いします。

A 回答 (2件)

COM3はモデムではないですか? デバイスマネージャのモデムのプロパティで詳細設定タブからポートの詳細設定でCOMポート番号。

    • good
    • 0
この回答へのお礼

早速の回答、ありがとうございます。
たしかにCOM3はモデムになっていました。

COM3を指定した場合、モデムを介してシリアル通信が可能であるからオープンが出来ていると考えていいのでしょうか?

お礼日時:2008/10/10 16:50

そのように考えていいとおもいます。

プログラムから見るとCOM3というシリアルポートの先に外付けモデムがつながっているのと同じに見えます。
    • good
    • 0
この回答へのお礼

ありがとうございます。すっきりしました。
(数時間も悩んでいた事がちょっと恥ずかしいです...。)

お礼日時:2008/10/10 17:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!