Sooo, also jetzt bin ich endlich ein wenig schlauer.
Ich hab nun einige wenige mögliche Steuerzeichen aus deiner Geposteten liste ausprobiert.*
003 - ETX, 004 - EOT, 024 - CAN, und 000 - NUL.
Die Einzige konfiguration in der überhaupt etwas übertragen wird ist mit 000. Also kann ich ja davon ausgehen dass das das tatsächliche Endzeichen sein muss.
Wenn ich nun folgendes verwende:
Private Sub myComPort_DataReceived(ByVal sender As Object, ByVal e As _
System.IO.Ports.SerialDataReceivedEventArgs) Handles _
myComPort.DataReceived
Dim msg As String = Me.myComPort.ReadExisting
While (msg.Contains(Chr(0)))
'die nachricht ist komplett
Dim tmp = msg.Substring(0, msg.IndexOf(Chr(0)))
ShowText(msg)
msg = ""
End While
ShowText(msg)
End Sub
Private Sub ShowText(ByVal text As String)
If lblMeldungstext.InvokeRequired Then
Dim d As New TextBoxCallback(AddressOf ShowText)
Me.Invoke(d, New Object() {text})
Else
lblMeldungstext.Text = text
Debug.Print(text)
End If
End Sub Dann werden zwar daten Übertragen, aber das ergibt das ursprüngliche Problem.
Wenn ich allerdings deine Methode verwende mittels Readline, dann funktioniert es im Prinzip wie es soll.
Allerdings ist mir eben aufgefallen, dass sich das Programm(Im Debugmodus von VB) dann vollständig aufhängt.(Nur das Programm als solches, VB kann ganz normal, soweit das im Debugmodus möglich ist, verwendet werden). Eine Exception wird nicht ausgegeben.
Private Sub myComPort_DataReceived(ByVal sender As Object, ByVal e As _
System.IO.Ports.SerialDataReceivedEventArgs) Handles _
myComPort.DataReceived
Me.Invoke(Sub() lblMeldungstext.Text = myComPort.ReadLine)
End Sub Edit: Also das Programm hängt sich auch in Fertig kompiliertem Zustand auf. Laut Taskmanager liegt die CPU nutzung aber bei 0%, und die Arbeisspeicherbelegung bei ca. 14 MB. Aber dieser Text "Programm reagiert nicht", oder wie das auch schon wieder war, fehlt...
Wenn Das Programm innerhalb der IDE läuft, wird der Text noch angezeigt. In Kompiliertem Zustand, passiert nichts. Wie als wäre das Fenster eingefroren. Es lässt sich wieder Mini, noch Maximieren, und schon gar nicht per Kreuzchen Schließen. Ledigliich per "Task beenden" kann das Programm geschlossen werden.
Beitrag wurde zuletzt am 27.11.15 um 16:50:57 editiert. |