serial port

05/09/2008 - 11:07 von Miller Mike | Report spam
Hallo,

Ich lese Daten via RS232 ein.
Dies funktioniert soweit ganz gut.
Jedoch habe ich ein Problem mit irgend einem Thread.

Fehlermeldung kommt auf Zeile 18:

- Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement
txtb_Input erfolgte von einem anderen Thread als dem Thread, für den es
erstellt wurde.


Code:

Imports System.IO.Ports
Public Class Form1
'Private WithEvents MySP As System.IO.Ports.SerialPort

Private WithEvents MySP As New SerialPort

Private Sub Form1_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
MySP = New SerialPort("COM4")
MySP.BaudRate = 19200
MySP.Open()
MySP.DtrEnable = True
MySP.RtsEnable = True
End Sub

Private Sub MySP_DataReceived(ByVal sender As Object, ByVal e As
System.IO.Ports.SerialDataReceivedEventArgs) Handles MySP.DataReceived
Dim input As String
input = MySP.ReadLine
18 txtb_Input.Text = input ' Fehler !!!
MsgBox(input)
End Sub
End Class


Vielen Dank
Gruss Mike
 

Lesen sie die antworten

#1 Kerem Gümrükcü
05/09/2008 - 12:11 | Warnen spam
Hallo Mike,

das ist der klassiker bei threadübergreifenden Operationen.
Du musst Thread-Safe arbeiten, also mit Delegates und/oder
Synchronisationsobjekten. Bevor ich Dir jetzt ein konkretes
Beispiel schreibe (habe gerade nur C++ hier) schau mal
das an:

http://groups.google.com/groups?hl=...amp;tab=wg

Viele andere hatten schon mal das Problem...ich vor
langer langer Zeit auch mal;-)

Grüße

Kerem

Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Latest Project: http://www.codeplex.com/restarts
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."

Ähnliche fragen