none
SerialPortクラスを使用したRS232C通信の受信について RRS feed

  • 質問

  • VC++超初心者です。

    RS232C通信をしたいので、フォームにSerialPortコントロールを貼り付けてDataReceivedイベントから受信を行いました。

    しかしDataReceivedイベント内で、受信データをテキストボックスに表示させようとすると、エラーが発生してしまいます。

    ヘルプなどから、delegate,Invokeを使用することはわかったのですが、どちらも使い方がよくわかりません。

    わからないながらも下記のように組んでみたのですが、やはりエラーだらけで止まってしまいます。

    どなたかアドバイスお願いします。

    できればサンプル等で教えていただけると大変ありがたいです。

     delegate void ShowDataDelegate( String ^data );
     private: void ShowData( String^data )
        {
        listBox1->Items->Add(data);
        }

     private: System::Void sp1_DataReceived(System::Object^  sender, System::IO::Ports::SerialDataReceivedEventArgs^  e) 
      {
        ShowDataDelegate ^dlg = gcnew ShowDataDelegate( ShowData ) ;
        String^ receiveData= sp1->ReadExisting() ;
        this->Invoke( dlg,receiveData ) ; 

     }

     

     

    2006年6月9日 7:48

すべての返信

  • エラーが発生するとかエラーだらけで止まってしまうとか言われても、回答者はその画面を見られないので、どんな事になっているのか、コンパイル時のエラーなのか実行時の例外なのかすら把握できません。

    まずエラーや例外の種類・メッセージ、コードの該当箇所などを示して下さい。

    2006年6月9日 8:06
  • ShowDataDelegate ^dlg = gcnew ShowDataDelegate( ShowData ) ;
    この行で、次のようなエラーが発生しています。

    error C2059: 構文エラー : ','
    error C2143: 構文エラー : ',' が '^' の前にありません。
    error C3149: 'RS232C::Form1::MessageDataDelegate' : トップレベルの '^' なしに、この型をここに使用することはできません
    error C2059: 構文エラー : ')'

    こういう場所に書き込むのも初めてなので、要領を得なくてすみませんでした。
    よろしくお願いいたします。

    2006年6月9日 8:19
  • 結局のところ、サンプルとなると一番手っ取り早いのが MSDN なのですが。

    http://msdn2.microsoft.com/ja-jp/library/a1hetckb.aspx

    デリゲートインスタンスの初期化の構文に注目して下さい。

    2006年6月9日 8:53