- ベストアンサー
CreateFileしてもうまくいきません・・。
シリアルポートで通信するためのプログラミングを始めたばかりなのですが、COMポートのオープンが成功しません。 以下を実行しているのですが、何が間違いでしょうか? ちなみに、PCMCIAに挿入したPCカードから通信したいと考えています。単純に"COM1"というのであっているのかも分かりません・・。 よろしくお願いします。 void CMyDlg::OnReset() { HANDLE hCom; hCom = CreateFile( "COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED NULL ); if(hCom == INVALID_HANDLE_VALUE){ MessageBox("ポートオープン失敗"); } else{ MessageBox("ポートオープン成功"); } }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>単純に"COM1"というのであっているのかも分かりません・・。 ポート番号自体はCOM1で間違いないのでしょうか?デバイスマネージャなどで確認されていますか?PCMCIAのポートで#1というのはちょっと見かけないので・・。
その他の回答 (2)
- nda23
- ベストアンサー率54% (777/1416)
回答ではありません。 オープンに失敗した場合、GetLastError(void)関数で、原因を調べることが出来ます。 if(hCom == INVALID_HANDLE_VALUE){ char msg[256]; wsprintf(msg,"ポートオープン失敗 CODE=%d",GetLastError()); MessageBox(msg); } エラーコードはError.hに定義されているはずです。 先ずはエラー原因の追究から始められてはいかがでしょう。 ハードに関する障害は環境や製品固有の設定といったファクタがあるので、 ああではないか、こうではないか、とまでは言えますが、「これでOK」という回答は難しいものがあります。
- taku2888
- ベストアンサー率60% (15/25)
> "COM1"というのであっているのかも分かりません・・。 質問前に確認しましょうよ。 「デバイスマネージャー」で、その機器は確認できていますか? 「ハイパーターミナル」等で接続できますか?
お礼
有難うございます。 デバイスマネージャで確認したところ、COM4となっていました。 COM4で実行したらうまくいきました!