Mit VB serielle Schnittstelle auslesen/auswerten

Gast #2388794
Lesenswert?

Hallo alle! Ich bin nue in der Welt der Mikrocontroller programmierung 
und hab natürlich ein paar Probleme mich zurechtzufinden.

Ich hab ein Assembler Programm was dauerhaft den Text: "TEST! " (Mit 
einem Leerzeichen am Ende) über die serielle Schnittstelle an den Pc 
sendet. das funktioniert soweit gut.

Jetzt empfange ich die Daten mit Hilfe des DataRecieved Handlers:
1
Private Sub cPort_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles cPort.DataReceived
2
        Dim B(100) As Byte
3
        Dim D, I As Integer
4
        Dim Str As String = ""
5

6
        D = cPort.Read(B, 0, 5)
7
        For I = 0 To D - 1
8
            If B(I) = 13 Then
9
                Str = Str + vbCrLf
10
            Else
11
                Str = Str + Chr(B(I))
12
            End If
13
        Next
14
        MsgBox(Str)
15
    End Sub

Allerdings bekomme ich meistens nicht den erwarteten String: "TEST! ", 
sondern verschiedene Strings wie "ST! TE". Das liegt denke ich an der 
Stopbit erkennung doch wie bekomm ich eindeutige ergebnisse? (Ich möchte 
im Endeffekt Zahlenwerte (Drehzahlmesser) über die Schnittstelle an den 
PC versenden)
Gast #2388845
Lesenswert?

> Aber wie bekomm ich das jetzt am Besten hin?
M.E. zwei Möglichkeiten:
1) Soweit ich weiss kann man mit dem Threshold-Wert einstellen, ab wie 
vielen Bytes im Buffer das Event ausgelöst wird. Wenn also die 
Nachrichten eine fixe Länge haben, wär das eine Option.
2) Wenn das letzte Zeichen der Nachrichten immer gleich ist, dann ist 
das dein "Nachrichten"-Trenner.

Ralf
Gast #2388934
Lesenswert?

Danke Ralf!

Also ich habe mir gedacht, dass ich mit der funktion 
ComPort.ReadExisting() einfach den Buffer auslese und dann das letzte 
teilstück rausfiltere. Ich denke das sollte funktionieren.

Vielen Dank für die Hilfe!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren