RS232 Datenlogger

  • VB.NET

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

    RS232 Datenlogger

    Hallo zusammen,

    ich stehe vor der Aufgabe die Kommunikation zwischen zwei Geräten aufzuzeichnen um sie anschließend auswerten zu können. Die Geräte kommunizieren über RS232. Mit einem entsprechenden Kabel möchte ich die gesendeten Daten von Gerät 1 auf Port COM1 meines PC legen, die gesendeten Daten von Gerät 2 kommen auf COM 2 meines PC an. Dieser Teil ist kein Problem.

    Was mir fehlt ist die Software dazu. Mit Socketkommunikation komme ich klar, mit den COM-Ports habe ich noch nicht gearbeitet. Kann mir jemand auf die Sprünge helfen wie ich die beiden COM-Ports öffne, wie ich die Daten auslese um sie in eineTextbox zu schreiben und wie ich die Darstellung der empfangenen Daten in ASCII, HEX, BIN darstellen kann?

    Ich hoffe mit einem guten Tip einen schnelleren Start in das Projekt zu bekommen, da ich es leider schnell zum laufen bekommen muss.

    Danke für die Hilfe vorab......
    Wenn dies ein dienstliches Problem ist, solltest Du Dir von Deiner Firma einen "Serial Port Monitor" spendieren lassen, der macht genau das, was Du willst.
    Oder Du machst es zu Fuß:
    Füge Deinem Projekt 2 Instanzen SerialPort hinzu.
    Initialisierung, Senden und Empfang eines Ports siehst Du hier am Beispiel.
    Mit dem Encoding stellst Du die Sprache ein, kann ggf. entfallen.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO.Ports
    2. '...
    3. ' In einer ComboBox kannst Du Dir die verfügbaren Ports anzeigen lassen.
    4. cbPortName.Items.Clear()
    5. cbPortName.Items.AddRange(SerialPort.GetPortNames())
    6. '...
    7. Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click
    8. If (SerialPort1.IsOpen) Then
    9. Return
    10. End If
    11. SerialPort1.PortName = cbPortName.Text
    12. Try
    13. SerialPort1.Open()
    14. Catch ex As Exception
    15. MsgBox("Fehler bei Open:" & vbLf & ex.Message)
    16. Return
    17. End Try
    18. EnableControls()
    19. End Sub
    20. Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click
    21. SerialPort1.Close()
    22. EnableControls()
    23. End Sub
    24. Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
    25. Dim text As String = TextBox1.Text
    26. Dim by As Byte() = _Encoding.GetBytes(text)
    27. SerialPort1.Write(by, 0, by.Length)
    28. 'SerialPort1.b
    29. End Sub
    30. Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
    31. Dim ToRead As Integer = SerialPort1.BytesToRead
    32. If ToRead > 0 Then
    33. 'Neu empfangene Zeichen an die Empfangspuffer anhängen
    34. Dim Buffer(ToRead - 1) As Byte
    35. SerialPort1.Read(Buffer, 0, ToRead)
    36. TextBox2.Text &= _Encoding.GetString(Buffer)
    37. End If
    38. End Sub
    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!
    Es ist eine dienstliche Aufgabe nur meine Firma stellt mir keinen Serial Port Monitor zur Verfügung. Das liegt daran das ich selbst meine Firma bin (also Selbständig) und das ich bisher keinen guten Monitor gefunden habe. Er muss nicht viel können, einfach nur von den beiden COM-Ports die Daten mitloggen und anzeigen. Vielleicht noch das auswerten von STX und ETX um die Daten besser greifen zu können. Mehr nicht. Ich habe schon ein paar Monitore probiert. Entweder sie laufen nur unter DOS, sie machen Dinge die man nicht versteht, sind nicht dazu zu bewegen die Daten odentlich anzuzeigen oder sie funktionieren mal gar nicht. Aus diesem Grund konnte ich mich auch noch nicht durchringen eine kommerzielle Version zu kaufen.

    Hast Du vielleicht eine empfehlenswerte Software alsTip?

    Also versuche ich mal mir die benötigte Software selbst zu schreiben. Hierzu danke für deinen Tip. Das erleichtert den Start ungemein. Eine weitere Frage noch, bevor ich mir die kommenden Nächte um die Ohren schlage...... muss ich nicht irgendwie dem COM-Port noch die Vorgaben für die Baudrate, Start-Stoppbits, Parity mitgeben wenn ich ihn initialisiere?

    Gruß nopi
    Füge ein SerialPort in Dein Programm ein, da siehst Du alle erforderlichen Eigenschaften.
    Google:
    serial port monitor
    serial port monitor freeware
    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!