Eingesetzt wird : Visual Studio 2019
Hallo,
ich brauche wieder eure Hilfe. Ich muss noch ältere Geräte über einen SerialPort ansteuern. Die eigentliche SerialPort-Programmierung (Senden/Empfangen) wird im Hintergrund in einem Windows-Frame >FrmSetup< ausgeführt.
Es funktioniert auch alles sehr gut, die Daten werden korrekt gesendet und im Empfangsbereich kommen die Rückmeldedaten auch korrekt an, dies sehe ich mit einem Debug.Print Befehl. Nun will ich die empfangenen Daten in einem Forms.Label auf dem Windows-Frame >UserForm< anzeigen lassen, funktioniert aber nicht, die Daten werden nicht angezeigt. Ich habe dies auch schon mit einer Text-Box probiert, auch ohne Erfolg. Selbst wenn ich einfach nur >>XXX<< aus dem Sub "DataReceived" anzeigen will, ebenfalls kein Erfolg.
Ich kann mir das nur so erklären, dass aus dem "DataReceived" keine Daten in ein anders Frame übertragen werden kann.
Hier mein Quellcode für den Empfang.
Hab ihr eine Lösung für mein Problem?
Zusatz: Beim öffnen und schließen der Verbindung kann ich >Offline< bzw. >Online< ohne Probleme in das Forms.Label schreiben.
Danke für Eure Hilfe
Hubertus
Hallo,
ich brauche wieder eure Hilfe. Ich muss noch ältere Geräte über einen SerialPort ansteuern. Die eigentliche SerialPort-Programmierung (Senden/Empfangen) wird im Hintergrund in einem Windows-Frame >FrmSetup< ausgeführt.
Es funktioniert auch alles sehr gut, die Daten werden korrekt gesendet und im Empfangsbereich kommen die Rückmeldedaten auch korrekt an, dies sehe ich mit einem Debug.Print Befehl. Nun will ich die empfangenen Daten in einem Forms.Label auf dem Windows-Frame >UserForm< anzeigen lassen, funktioniert aber nicht, die Daten werden nicht angezeigt. Ich habe dies auch schon mit einer Text-Box probiert, auch ohne Erfolg. Selbst wenn ich einfach nur >>XXX<< aus dem Sub "DataReceived" anzeigen will, ebenfalls kein Erfolg.
Ich kann mir das nur so erklären, dass aus dem "DataReceived" keine Daten in ein anders Frame übertragen werden kann.
Hier mein Quellcode für den Empfang.
VB.NET-Quellcode
- '********************************************************************
- '* >> Input 2 << Eingang der Daten von CPort2 | 18.09.2019 *
- '********************************************************************
- Sub CPort2_DataReceived(sender As System.Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles CPort2.DataReceived
- Dim msg As String = Me.CPort2.ReadExisting
- msg = msg.Replace(Chr(6), "<ACK>") '* filtern ACK
- msg = msg.Replace(Chr(21), "<NAK>") '* filtern NAK
- UserForm.LB_UMC.Text = msg '* <<<<< Problem- wird nicht angezeigt
- Debug.Print("MSG = " & msg) '* Korrekte Empfangsdaten werden angezeigt
- End Sub
Hab ihr eine Lösung für mein Problem?
Zusatz: Beim öffnen und schließen der Verbindung kann ich >Offline< bzw. >Online< ohne Probleme in das Forms.Label schreiben.
VB.NET-Quellcode
- Sub Status_Port2()
- Try
- If Me.CPort2.IsOpen = True Then
- Me.CPort2.Close()
- UserForm.BT_UmcOnOff.BackColor = Color.Red
- UserForm.LB_UMC.Text = "Offline" '* Wird korrekt angezeigt
- Exit Sub
- End If
- If Me.CPort2.IsOpen = False Then
- Me.CPort2.Open()
- UserForm.BT_UmcOnOff.BackColor = Color.Green
- UserForm.LB_UMC.Text = "Online" '* Wird korrekt angezeigt
- End If
- Catch ex As Exception
- Call FrmMeldungen.TryError("FrmSetup.Status_Port", ex.Message, 1)
- End Try
- End Sub
Danke für Eure Hilfe
Hubertus