Serielle Daten in Label oder Textbox anzeigen

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von programmer71.

    Serielle Daten in Label oder Textbox anzeigen

    Hallo,

    ich habe seit längerem das Problem, dass ich keine Daten die ich empfange nicht in Labels oder dergleichen anzeigen lassen kann. Es geht nur, wenn ich die Daten vorher in eine zusätzliche Variable kopiere. Der Empfang der Daten funktionert tadellos, ich kann die auch in einer Messagebox darstellen, aber mit Labels oder Textboxen funktioniert das nicht. Ich habe mir eine Klasse mit Variablen erstellt und will die Daten an diese Variablen übergeben.

    Hier mal mein Quellcode:

    VB.NET-Quellcode

    1. 'Alle 500ms Tick'
    2. 'Anzeige Daten'
    3. Label55.Text = Temperaturen.KP_


    VB.NET-Quellcode

    1. 'Übergabe der Empfangenen Daten der Seriellen Schnittstelle '
    2. If Mid(Speicher, 1, 3) = Temperaturen.Kp_Set And Mid(Speicher, 9, 1) = vbCr Then
    3. singleEmpfangSpeicher = Convert.ToSingle(Mid(Speicher, 4, 1)) * 10
    4. singleEmpfangSpeicher += Convert.ToSingle(Mid(Speicher, 5, 1))
    5. singleEmpfangSpeicher += Convert.ToSingle(Mid(Speicher, 7, 1)) * 0.1
    6. singleEmpfangSpeicher += Convert.ToSingle(Mid(Speicher, 8, 1)) * 0.01
    7. MsgBox(singleEmpfangSpeicher)
    8. Temperaturen.KP_ = singleEmpfangSpeicher
    9. Speicher = ""
    10. End If
    Ich hab es jetzt mal etwas umgeformt, aber funktioniert leider immer nch nicht.

    VB.NET-Quellcode

    1. If Mid(Speicher, 1, 3) = Temperaturen.Kp_Set AndAlso Mid(Speicher, 9, 1) = vbCr Then
    2. singleEmpfangSpeicher = (Single.Parse(Mid(Speicher, 4, 1))) * 10
    3. singleEmpfangSpeicher = CSng(singleEmpfangSpeicher + (Convert.ToSingle(Mid(Speicher, 5, 1))))
    4. singleEmpfangSpeicher = CSng(singleEmpfangSpeicher + (Convert.ToSingle(Mid(Speicher, 7, 1))) * 0.1)
    5. singleEmpfangSpeicher = CSng(singleEmpfangSpeicher + (Convert.ToSingle(Mid(Speicher, 8, 1))) * 0.01)
    6. MsgBox(singleEmpfangSpeicher)
    7. Temperaturen.KP_ = Convert.ToSingle(singleEmpfangSpeicher)
    8. Speicher = ""
    9. End If
    10. Label54.Text = CStr(Temperaturen.KP_)
    Das hier Convert.ToSingle(singleEmpfangSpeicher) ist doch total sinnlos, mach es so wie programmer71. Außerdem hast du deinen Code eigentlich nur noch mehr verunstaltet. Nur Single.Parse ist guter Stil, der Rest (vor allem die Doppelkonvertierungen) sind Ranz. Und ersetze Mid durch SubString und MsgBox durch MessageBox.Show.
    Ich hab jetzt so aufgebaut, nur es ändert nichts an meinem Hauptproblem.

    VB.NET-Quellcode

    1. If Speicher.Substring(0, 3) = Temperaturen.Kp_Set AndAlso Speicher.Substring(8, 1) = vbCr Then
    2. singleEmpfangSpeicher = (Convert.ToSingle(Speicher.Substring(3, 1))) * 10
    3. singleEmpfangSpeicher = singleEmpfangSpeicher + (Convert.ToSingle(Speicher.Substring(4, 1)))
    4. singleEmpfangSpeicher = singleEmpfangSpeicher + (Convert.ToSingle(Speicher.Substring(6, 1))) * 0.1
    5. singleEmpfangSpeicher = singleEmpfangSpeicher + (Convert.ToSingle(Speicher.Substring(7, 1))) * 0.01
    6. MessageBox.Show(singleEmpfangSpeicher)
    7. Temperaturen.KP_ = Convert.ToSingle(singleEmpfangSpeicher)
    8. Speicher = ""
    9. End If


    Meine Klasse ist so aufgebaut:

    VB.NET-Quellcode

    1. Public Class Temperaturen
    2. Public Property KP_() As Single
    3. Get
    4. Return Kp
    5. End Get
    6. Set(ByVal value As Single)
    7. Kp = value
    8. End Set
    9. End Property
    10. Private Kp As Single
    11. End Class


    VB.NET-Quellcode

    1. Label54.Text = Temperaturen.KP_.ToString
    So müsste es doch eigentlich gehen:

    VB.NET-Quellcode

    1. If Speicher.Substring(0, 3) = Reflow.Kp_Set AndAlso Speicher.Substring(8, 1) = vbCr Then
    2. singleEmpfangSpeicher = Single.Parse(Speicher.Substring(3, 1)) * 10.0F
    3. singleEmpfangSpeicher += Single.Parse(Speicher.Substring(4, 1))
    4. singleEmpfangSpeicher += Single.Parse(Speicher.Substring(6, 1)) * 0.1F
    5. singleEmpfangSpeicher += Single.Parse(Speicher.Substring(7, 1)) * 0.01F
    6. MessageBox.Show(singleEmpfangSpeicher.ToString)
    7. Label55.Text = singleEmpfangSpeicher.ToString
    8. Speicher = String.Empty
    9. End If
    Dann halt so:

    VB.NET-Quellcode

    1. If Speicher.Substring(0, 3) = Reflow.Kp_Set AndAlso Speicher.Substring(8, 1) = vbCr Then
    2. singleEmpfangSpeicher = Single.Parse(Speicher.Substring(3, 1)) * 10.0F
    3. singleEmpfangSpeicher += Single.Parse(Speicher.Substring(4, 1))
    4. singleEmpfangSpeicher += Single.Parse(Speicher.Substring(6, 1)) * 0.1F
    5. singleEmpfangSpeicher += Single.Parse(Speicher.Substring(7, 1)) * 0.01F
    6. MessageBox.Show(singleEmpfangSpeicher.ToString)
    7. Temperaturen.KP_ = singleEmpfangSpeicher
    8. Label55.Text = singleEmpfangSpeicher.ToString
    9. Speicher = String.Empty
    10. End If

    Und bitte mach Option Strict On, dann wären dir bereits haufenweise Fehler aufgefallen.