Seltsame Zeichen beim auslesen von Serialport

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von cyver89.

    Seltsame Zeichen beim auslesen von Serialport

    Hallo

    es Passiert ständig, dass bei der seriellen schnittstelle, an immer wieder verschiedenen stellen, zeichen als "?" oder "*" oder quadrat angezeigt werden

    hier mein code:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    2. Port1.Encoding = System.Text.Encoding.ASCII
    3. End Sub


    VB.NET-Quellcode

    1. Private Sub Port1_DataReceived(sender As System.Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles Port1.DataReceived
    2. str += Port1.ReadExisting()
    3. If str.Length > 2 Then
    4. If Not str(2) = "W" Or Not str(0) = "M" Then
    5. str = ""
    6. Exit Sub
    7. End If
    8. If str.IndexOf("M", 3) < 100 And str.IndexOf("M", 3) > 10 Then
    9. messreihen.Add(str.Substring(0, str.IndexOf("M", 3)))
    10. str = ""
    11. End If
    12. End Sub


    Parität: Gerade
    Handshake: keine
    Baudrate: 9600
    Bytes:8
    Start/stoppbit: 1
    Discard Null/DtrEnable beide auf True

    die strings sollten eigtl so aussehen: M:W1,01,045,043,1.31,1.36,0.05,!!!!,W2,100,096,1.95,1.82,0.17,!!!!M:W1,01,045,043,1.31,1.36,0.05,!!!!,W2,100,096,1.95,1.82,0.17,!!!!

    aber wie ich schon sagte an manchen stellen kommt ziemlich oft ein sonderzeichen anstatt der eigtl erwarteten zeichen

    cyver89 schrieb:

    Parität: Gerade
    Bytes:8
    Bist du sicher, dass auf beiden Seiten dasselbe eingestellt ist?
    Häufig wird 7Bit+Parity oder 8Bit ohne Parity verwendet, um exakte Bytegrenzen zu bekommen.

    Ggf. (falls das nicht der Treiber erledigt) musst du das Parity-Bit abschneiden und von Hand auswerten.
    Das gehört nicht zu den Nutzdaten.

    Würden die Daten denn stimmen, wenn du nur die niederwertigsten 7 Bit nimmst?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Genau.
    1. selbe Einstellungen auf beiden Seiten. Bei 7 Bit gibt es nur ASCII, bei 8 Bit musst Du die korrekte CodePage einstellen.
    Dazu sollte der Hersteller / Vertreiber was zu sagen können, wenn es z.B. aus Finnland oder China kommt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    fehler gefunden.

    anscheinend war das usb-kabel ungeeignet.

    durch zufall hatte ich ein anderes benutzt mit den es dann aber komischerweise funktioniert hatte.
    mit den alten kabel hat es nicht funktioniert.

    kann mir jemadn erklären was man usbkabeln alles anders machen kann? Oo

    das usb-kabel ist übrigens nicht defekt.. ich benutze es grade als verlängerung für mein usb-stick