| |

VB.NET - Ein- und UmsteigerInvoke in einer Klasse funktioniert nicht | |  | Autor: PeterPan | Datum: 02.08.08 16:58 |
| Hallo zusammen
ich bin gerade bei meiner Projektarbeit und hänge total.
Ich habe vor, einen Lasersensor über RS232 auszulesen.
Die ersten Versuche waren auch erfolgreich. Doch jetzt hänge ich bei dem
Problem mit den unterscheidlichen Threads fest.
Ich habe eine Klasse clsLaser programmiert. Sobalt diese Klasse instanziert wird,
wird der ComPort geöffnet und der Laser ist bereit. ... so weit so gut ...
Um die ausgelesene Daten von der Sub "serial_DataReceived" nutzen zu können muss ich diese irgendwie
vom Workerthread auf den Hauptthread bekommen. Soweit ich das gelesene Verstanden habe, habe ich versucht es umzusetzen. Leider ohne Erfolg.
Mein Ziel war es, bei Ankunft neuer Daten ein Event auszulösen, das im Hauptthread läuft.
Aber leider funktioniert diese , im Projekt auskommentierte, Zeile nicht:
Me.Invoke(New ValueDelegate(AddressOf xxxx), New Object() {pMaxEdge, _
pMinEdge}) Hat jemand evtl. einen Tipp für mich?
mfg
Matthias
Public Class clsLaser
Public WithEvents serial As System.IO.Ports.SerialPort
Dim readBuffer(36) As Byte
Dim pMaxEdge As Integer
Dim pMinEdge As Integer
Private Delegate Sub ValueDelegate(ByVal MaxEdge As Integer, ByVal MinEdge _
As Integer)
Sub New(ByVal pComPort As String)
serial = New System.IO.Ports.SerialPort
serial.PortName = pComPort
serial.Parity = IO.Ports.Parity.None
serial.BaudRate = 19200
serial.WriteBufferSize = 36
serial.ReadBufferSize = 36
serial.ReceivedBytesThreshold = 36
serial.Open()
End Sub
Public Sub ReadEdges()
serial.Write(Chr(0) & Chr(85) & Chr(0) & Chr(8) & Chr(0) & Chr(0) & Chr( _
0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & _
Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) _
& Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr( _
0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0))
End Sub
Public Sub LaserReset()
serial.Write(Chr(0) & Chr(85) & Chr(0) & Chr(11) & Chr(0) & Chr(0) & _
Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) _
& Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr( _
0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & _
Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0))
End Sub
Private Sub serial_DataReceived(ByVal sender As Object, ByVal e As _
System.IO.Ports.SerialDataReceivedEventArgs) Handles serial.DataReceived
serial.Read(readBuffer, 1, 36)
If readBuffer(4) = 8 Then
pMaxEdge = ByteToInt(readBuffer(27), readBuffer(28))
pMinEdge = ByteToInt(readBuffer(29), readBuffer(30))
' Me.Invoke(New ValueDelegate(AddressOf xxxx), New Object()
' {pMaxEdge, pMinEdge})
End If
serial.DiscardInBuffer()
End Sub
Private Function ByteToInt(ByVal pElement1 As Byte, ByVal pElement2 As _
Byte) As Integer
Return (Convert.ToInt32(Hex(pElement1).PadLeft(2, CChar("0")) & (Hex( _
pElement2).PadLeft(2, CChar("0"))).ToString, 16))
End Function
Private Sub xxxx(ByVal MaxEdge As Integer, ByVal MinEdge As Integer)
RaiseEvent NewEdgeValue(pMaxEdge, pMinEdge)
End Sub
Event NewEdgeValue(ByVal MaxEdge As Integer, ByVal MinEdge As Integer)
End Class |  |
 Invoke in einer Klasse funktioniert nicht | 876 | PeterPan | 02.08.08 16:58 |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Neu! sevCommand 4.0 
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|