• 締切済み

シリアル通信のポートオープン

シリアル通信のテストプログラムを作成中でして、一通り動作するようになったのでエラー処理を確認しようとしたところ、存在しない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のオープン時、エラーの検知は出来ないのでしょうか? よろしくお願いします。

みんなの回答

noname#81590
noname#81590
回答No.2

そのように考えていいとおもいます。プログラムから見るとCOM3というシリアルポートの先に外付けモデムがつながっているのと同じに見えます。

taka077
質問者

お礼

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

noname#81590
noname#81590
回答No.1

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

taka077
質問者

お礼

早速の回答、ありがとうございます。 たしかにCOM3はモデムになっていました。 COM3を指定した場合、モデムを介してシリアル通信が可能であるからオープンが出来ていると考えていいのでしょうか?