2016-04-28 15 views
0

受信したシリアルデータをクラスからフォームにテキストボックスに書き込もうとしています。 、それは常に空白のままそれは、リッチテキストボックスに書き込みませんいくつかの理由について受信したシリアルデータをテキストボックスに読み取ることができません

Public Shared Sub DataReceviedHandler(sender As Object, e As SerialDataReceivedEventArgs) 

Dim sp As SerialPort = CType(sender, SerialPort) 
Dim indata As String = sp.ReadExisting() 
frmRBATestMain.RichTextBox1.AppendText("Data Received:" + Environment.NewLine) 
frmRBATestMain.RichTextBox1.AppendText(indata + Environment.NewLine) 
End Sub 

??:

私は、コードを使用しています

ただし、コンソールで実行すると動作します。なぜこれは機能しませんか?

私はこれを再現しようとしています:

https://msdn.microsoft.com/en-us/library/system.io.ports.serialport.datareceived(v=vs.90).aspx

私はクラスから読んでいるフォームを持っています。

+0

あなたがそのコードにブレークポイントを設定して、アプリを実行したときにどのようなデバッガはあなたを教えていますか? –

+0

コンソールを実行してデータ受信者をフォーム内のテキストボックスに入れようとしているか、ボタンを押してコマンドを送信し、受信したデータを収集しようとしていますか? – noidea

+0

@KenWhiteそれは、データが受信されたが、決して行きませんテキストボックスに書き込みを示します。 –

答えて

0

はこのような何かを試してみてください:

Private Sub SerialPort1_DataReceived(sender As System.Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived 
    ReceivedText(SerialPort1.ReadExisting()) 
End Sub 

Private Sub ReceivedText(ByVal [text] As String) 
    If Me.TextBox1.InvokeRequired Then 
     Dim x As New SetTextCallBlack(AddressOf ReceivedText) 
     Me.Invoke(x, New Object() {(text)}) 
    Else 
     Me.TextBox1.Text &= [text] 
    End If 
End Sub 
+0

あなたは別のスレッドからこれを取った...私はこれを試して、それは動作しません.. –

+0

はい、ofc、私はコードを構成していません。どのように接続を開きますか? – noidea

関連する問題