• ベストアンサー

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("ポートオープン成功"); } }

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>単純に"COM1"というのであっているのかも分かりません・・。 ポート番号自体はCOM1で間違いないのでしょうか?デバイスマネージャなどで確認されていますか?PCMCIAのポートで#1というのはちょっと見かけないので・・。

meeyooyoo
質問者

お礼

有難うございます。 デバイスマネージャで確認したところ、COM4となっていました。 COM4で実行したらうまくいきました!

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.3

回答ではありません。 オープンに失敗した場合、GetLastError(void)関数で、原因を調べることが出来ます。 if(hCom == INVALID_HANDLE_VALUE){   char msg[256];   wsprintf(msg,"ポートオープン失敗 CODE=%d",GetLastError());   MessageBox(msg); } エラーコードはError.hに定義されているはずです。 先ずはエラー原因の追究から始められてはいかがでしょう。 ハードに関する障害は環境や製品固有の設定といったファクタがあるので、 ああではないか、こうではないか、とまでは言えますが、「これでOK」という回答は難しいものがあります。

  • taku2888
  • ベストアンサー率60% (15/25)
回答No.2

> "COM1"というのであっているのかも分かりません・・。 質問前に確認しましょうよ。 「デバイスマネージャー」で、その機器は確認できていますか? 「ハイパーターミナル」等で接続できますか?

関連するQ&A