Forum: Projekte & Code Serielle Schnittstelle in Visual Basic 2005


von Moritz R. (bugsier3)


Lesenswert?

Code für Visual Basic Express 2005:

Const COM_PORT As String = "COM9"

    Dim PufferString As String

    Private Delegate Sub DelegateSub()
    Private Datenanzeigen As New DelegateSub(AddressOf Anzeigen)



    Private Sub Form1Load(ByVal sender As System.Object, ByVal e As 
System.EventArgs) _
                                Handles MyBase.Load

        Dim EinzelPort As String

        Debug.WriteLine("INFO: Folgende Ports wurden auf dem System 
gefunden:")
        For Each EinzelPort In My.Computer.Ports.SerialPortNames
            Debug.WriteLine(EinzelPort)
        Next EinzelPort

        With SerialPort1
            If Not .IsOpen Then
                Try
                    '.PortName = COM_PORT
                    '.BaudRate = 57600
                    '.DataBits = 8
                    '.WriteTimeout = 2000                        ' 1000 
ms = 1 Sek.
                    '.ReadTimeout = 2000                         ' 1000 
ms = 1 Sek.
                    '.Handshake = IO.Ports.Handshake.None
                    '.ReceivedBytesThreshold = 1
                    .NewLine = vbCr
                    .Open()
                    Debug.WriteLine("Port Open: " & SerialPort1.IsOpen)
                Catch ex As Exception
                    MessageBox.Show(ex.Message, "Fehler beim Open", _
                                    MessageBoxButtons.OK, 
MessageBoxIcon.Error)
                    Exit Sub
                End Try
            End If
        End With

        TextBox1.Multiline = True
        TextBox1.ScrollBars = ScrollBars.Both

    End Sub



    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) _
                                Handles Button1.Click


        Try
            PufferString = ""
            SerialPort1.WriteLine(TextBox1.Text)

        Catch ex As Exception
            MessageBox.Show(ex.Message, "Fehler beim Senden ...")
            Exit Sub
        End Try

        Debug.WriteLine("Daten übermittelt!")
        TextBox1.Text = ""

    End Sub



    Private Sub SerialPort1_DataReceived(ByVal sender As Object, _
                                ByVal e As 
System.IO.Ports.SerialDataReceivedEventArgs) _
                                Handles SerialPort1.DataReceived 
'hier
        Dim response As String

        Try
            'TextBox1.Text = TextBox1.Text & SerialPort1.ReadExisting
            response = SerialPort1.ReadExisting
            Debug.WriteLine(response)
            PufferString &= response
            If PufferString.EndsWith("]") Then
                'event auslösen
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Fehler beim Empfangen ...")
        End Try
    End Sub



    Private Sub Anzeigen()
        Label1.Text = PufferString
    End Sub



    Private Sub Form1_FormClosing(ByVal sender As Object, _
                                ByVal e As 
System.Windows.Forms.FormClosingEventArgs) _
                                Handles Me.FormClosing
        If SerialPort1.IsOpen Then SerialPort1.Close() ' Port wieder 
Schließen
        Debug.WriteLine("Port Open: " & SerialPort1.IsOpen)
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button2.Click
        Anzeigen()
    End Sub


    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button3.Click
        Try
            PufferString = ""
            SerialPort1.WriteLine("XGO")

        Catch ex As Exception
            MessageBox.Show(ex.Message, "Fehler beim Senden ...")
            Exit Sub
        End Try

        Debug.WriteLine("Daten übermittelt!")
        TextBox1.Text = ""

    End Sub

..und die Eigenschaften:
unter serial_port :
                   -DtrEnable auf "True"
                   -RtsEnable auf "True"

Gruß Moritz

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.