RS232 Geräte Kommunikation

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von fraju.

    RS232 Geräte Kommunikation

    Hallo zusammen,

    bin ein absoluter Anfänger was VB angeht! Versuch mich gerade in einem kleineren Programm wo ich eine Kommunikation mit einem Gerät aufbauen will und komm einfach nicht weiter! Das Gerät Sendet gewisse Strings über die Com schnittstelle die ich gerne auswerten möchte bzw. darauf antworten möchte! Eine Verbindung zu dem Gerät hab ich schon hin bekommen und ich kann div. Strings in einer Textbox ausgeben bzw. auch Strings senden! Nun möchte ich aber, das sobald ein String z.B "Alive?" oder ein xbeliebigen anderen String gesendet wird darauf mit "OK" antworten! In dem Gerät kann ich bestimmen was und ob es mit Start/End Zeichen senden soll! Leider hab ich noch wirklich eine schöne Lösung gefunden! Mein Programm antwortet zwar, allerdings ein bisschen undefiniert!

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. '' Laden des Serial Port
    3. Me.mycomPort = New IO.Ports.SerialPort("com1")
    4. Me.mycomPort.BaudRate = 9600
    5. Me.mycomPort.DataBits = 8
    6. Me.mycomPort.StopBits = IO.Ports.StopBits.One
    7. Me.mycomPort.Parity = IO.Ports.Parity.None
    8. Me.mycomPort.ReceivedBytesThreshold = 1
    9. Me.mycomPort.Open()
    10. Timer1.Start()
    11. End Sub
    12. Private Sub myComPort_DataReceived(ByVal sender As Object, ByVal b As System.IO.Ports.SerialDataReceivedEventArgs) Handles mycomPort.DataReceived
    13. Dim msg As String = Me.mycomPort.ReadExisting
    14. Me.ShowText(msg)
    15. Select Case b.EventType
    16. Case IO.Ports.SerialData.Chars
    17. Case IO.Ports.SerialData.Eof
    18. End Select
    19. Me.mycomPort.Write("Ok")
    20. End Sub
    21. Private Sub ShowText(ByVal text As String)
    22. If Me.TextBox1.InvokeRequired Then
    23. Dim d As New TextBoxCallback(AddressOf ShowText)
    24. Me.Invoke(d, New Object() {text})
    25. Else
    26. Me.TextBox1.Text = Me.TextBox1.Text & text
    27. End If
    28. End Sub
    29. Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
    30. Me.mycomPort.Close()
    31. Timer1.Stop()
    32. Me.Close()
    33. End Sub
    34. Private Sub Send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Send.Click
    35. Me.mycomPort.Write(TextBox3.Text & vbCrLf)
    36. Dim TX As String
    37. TX = TextBox3.Text
    38. TextBox2.Text = TX & vbCrLf
    39. End Sub
    40. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    41. ProgressBar1.Value += 1
    42. If ProgressBar1.Value = ProgressBar1.Maximum Then
    43. ProgressBar1.Value = 0
    44. End If
    45. End Sub



    Würd mich ein bisschen Hilfe freuen! Besten Dank im Vorraus 8o

    fraju schrieb:

    Welche Zeichen kommen den ein bisschen undefiniert an?


    Das Gerät sendet z.B. "Alive?" dan Antwortet mein Programm auf "Alive" mit "OK" und auf das "?" mit "OK"! Warum auch immer! Ich sollte es aber so haben dass das Programm erst mir "OK" antwortet wenn die komplette "Alive?" verarbeitet wurde!