- ベストアンサー
RS-232C接続のためのVS 2008 C++のプログラム
- パソコンとRS-232Cで接続することで制御できるパトライト(PHE-3FB)を動かすためのVS 2008 C++プログラムを作成したい初心者です。
- Visual Studio 2008 C++のみで実装できる環境であり、MSCOMMコントロールが利用できないため困っています。
- 助けていただけるようなサイトやWindows Visual Studio 2008 C++で書かれたサンプルプログラムがあれば非常に助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
http://www.patlite.jp/download/phe_3fb_pro.pdf VISUAL BASIC 6.0とUNIXのシェルプログラムでのプログラム例です。 をベースにしています。 1.フォームにツールボックスにある serialPort コントロールを貼る プロパティ名:serialPort1 2.フォームにツールボックスにある button コントロールを貼る 3.以下はボタンのクリックイベント // は先のURLにあるサンプルのコード その下が実際のコード // Private Sub Command1_Click() private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { //If MSComm1.PortOpen = False Then if( serialPort1->IsOpen == false){ //MSComm1.CommPort = 1 ' CommPort を 1 に設定します。 serialPort1->PortName ="COM1"; //MSComm1.Settings = "9600,N,8,1" ' 通信ポートを設定します。 serialPort1->BaudRate = 9600; serialPort1->Parity = System::IO::Ports::Parity::None; serialPort1->DataBits = 8; serialPort1->StopBits = System::IO::Ports::StopBits::Two; //MSComm1.PortOpen = True ' 通信ポートを開きます。 serialPort1->Open (); //ENDIF } //MSComm1.Output = "@??12>!" 'データ送信 serialPort1->Write ("@??12>!"); //MSComm1.PortOpen = False ' ポートを閉じます。 serialPort1->Close();
その他の回答 (2)
- nak777r
- ベストアンサー率36% (49/136)
>//MSComm1.Settings = "9600,N,8,1" ' 通信ポートを設定します。 ~ 中略 ~ >serialPort1->StopBits = System::IO::Ports::StopBits::Two; ストップビットは1 なのに、Two にしてしまってますね すみません
お礼
何度も丁寧にありがとうございます。 非常に助かりました。
- pyonmae
- ベストアンサー率64% (40/62)
こんにちは。 私も昔、メッチャ苦労しました。 「createfile com」 とかで検索したら、たくさん出てきます。 普通に通信するだけなら、そんなに難しくはないです。頑張って下さい。 タイムアウト処理とか、通信中にケーブルが抜けた時の処理とかやり始めると大変ですが・・・。 あと、違えばいいのですが、私がハマった事を追記しておきます。 PCのシリアルポートに、USB-RS232C変換ケーブル等を使われているのでしたら、安物は使わないようにした方がいいです。 とかくデバッグ中は、通信ポートを開いたままプログラム終了、という事になりがちなのですが、そこでドライバの出来が悪い安物を使っていると、すぐにブルースクリーンになり、ほとほと困ったものでした。 名の知れたメーカのに買い替えたらウソのようにデバッグが進んで感動した記憶があります。
お礼
私以外にも苦労された方がいらっしゃったのですね・・ なんか少し救われます! 「createfile com」で検索したら、いきなり参考になりそうなものが見つかりました。 ありがとうございます。 ちなみに、ケーブルは一応まともなものであるので心配ないとのことでした・・・
お礼
大変ありがとうございます。 ついに光らせることが出来ました。 まさか、こんなに丁寧に説明してくださるとは思ってもおりませんでした。 ありがとうございます。