- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VisualStudio2010のC++の通信)
VisualStudio2010のC++の通信についての質問
このQ&Aのポイント
- VisualStudio2010のC++のシリアルポートによる通信で正常に接続できません。
- ハイパーターミナルでは接続と通信が成功しているため、問題はプログラミングにあると考えられます。
- 疑問のソースコードには、COMポートの設定や通信速度の設定が含まれています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 「うまくいきません」とのことですが、どこでつまずいているのかデバッガなどで調べてみましたか? ざっと見た限り、まずはCreateFile()のところでひっかかりそうですね。 COM1~COM9までと違って、COM10以上では"\\\\.\\COM10"のように書かなければなりません。 まあCOM1~COM9まででも"\\\\.\\COM1"~"\\\\.\\COM9"と書いてもよいので、常にこの書き方で通すクセをつけておくとひっかからないで済みます。
その他の回答 (1)
- theisman
- ベストアンサー率47% (56/119)
回答No.1
二つのif文の条件が、両方とも逆になっていませんか? INVALID_HANDLE_VALUE は、オープンに失敗した時の戻り値ですから、 (m_hComPort != INVALID_HANDLE_VALUE) ということは、オープンが成功した時にこのif文の条件が成立することになりますが、逆のような。 ボーレート等が設定できた時のbRetはTRUEで戻ってくると思うので、設定がきちんとできると (bRet != FALSE) が成立し、 AfxMessageBox(_T("CMyComm::Open() SetCommState失敗")); を実行しますから、失敗のメッセージが出ると思います。逆に設定が失敗するとここをスルーしてしまいそうなのですが。