Events

:

:

Elektronik | Funk | Software

Der Technik-Blog

  • Social Media

    Werbung:


    Neue Artikel


    Events

    • Keine zukünftigen Events vorhanden

    Der Technik-Blog

    Arduino Serial COM Connection Windows Visual Basic

    Arduino Serial in VB App

    Alex @ AEQ-WEB

    Zu diesem Artikel gibt es auch ein Video auf Youtube: Arduino Serial Port (COM) zu Visual Basic Software - Windows

    Arduino Serial & Visual Basic

    Dieser Artikel beschreibt, wie Daten (z.B. Messwerte) von einem Arduino Board über die serielle Schnittstelle (COM-Port) an einen Windows Computer gesendet werden können. Als Software wurde ein kleines Programm in Visual Basic geschrieben, dass drei Parameter von Arduino Board auslesen kann und in Textfeldern anzeigt.

    Werbung:

    Funktionsweise der Datenübertragung

    In diesem Beispiel werden Daten vom Arduino zum Computer übertragen. Selbstverständlich ist es auch ohne großen Aufwand möglich, Daten vom Computer an den Arduino zu senden. Die Daten vom Arduino werden mit 9600 Baud gesendet. Dieser Wert ist bei sowohl beim Beispielcode vom Arduino als auch von der Windows Software fest eingestellt und muss immer an beiden Seiten angepasst werden. Der Arduino überträgt drei Parameter. Das ist die Laufzeit in Sekunden, der Wert vom Potentiometer(0 – 1024) und ein statischer Wert (1234). Diese drei Parameter werden gleichzeitig übertragen und mit einem Beistrich getrennt. Die gesamte Zeile hat am Ende ein Semikolon, dass das Ende der Datenreihe kennzeichnet. In unserem Visual Basic Beispiel Code werden dann die Parameter-Pakete in einzelne Werte gesplittet. Dies funktioniert über den Beistrich, der das Ende eines einzelnen Parameters kennzeichnet. Zuletzt werden diese Werte in eine TextBox geladen und bei jedem neuen Datenpaket aktualisiert.

    Windows Software

    Die in Visual Basic geschriebene Software empfängt die Datenpakte über den COM-Port und zeigt diese in drei Felder an. In der Mitte wird der analoge Wert vom Potentiometer an Pin A5 angezeigt. Das erste Feld zeigt die Laufzeit in Sekunden an. Das letzte Feld zeigt den dritten Wert, der vom Arduino gesendet wird und in diesem Beispiel statisch ist.

    Arduino Quellcode
    long timer;
    
    void setup() {
      Serial.begin(9600);
    }
    
    void loop() {
      if(millis() > timer+500){
        timer = millis();
        SendToSerial();
      }
    }
    
    void SendToSerial(){
      int val = analogRead(A5);
      Serial.print(millis()/1000);
      Serial.print(",");
      Serial.print(val);
      Serial.print(",");
      Serial.print("1234");
      Serial.println(";");
    }

    Visual Basic Code
    Imports System
    Imports System.IO.Ports
    
    Public Class Form1
    
        Dim SerialPort As String
        Dim RxData As String = ""
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Timer1.Enabled = False
            SerialPort = ""
            For Each sp As String In My.Computer.Ports.SerialPortNames
                com_port.Items.Add(sp)
            Next
        End Sub
    
    
        Private Sub SerialPort_ComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles com_port.SelectedIndexChanged
            If (com_port.SelectedItem & lt;> "") Then
                SerialPort = com_port.SelectedItem
            End If
        End Sub
    
    
        Private Sub connect_BTN_Click(sender As Object, e As ventArgs) Handles connect_btn.Click
            If (connect_btn.Text = "Connect") Then
                If (SerialPort & lt;> "") Then
                    SerialPort1.Close()
                    SerialPort1.PortName = SerialPort
                    SerialPort1.BaudRate = 9600
                    SerialPort1.DataBits = 8
                    SerialPort1.Parity = Parity.None
                    SerialPort1.StopBits = StopBits.One
                    SerialPort1.Handshake = Handshake.None
                    SerialPort1.Encoding = System.Text.Encoding.Default
                    SerialPort1.ReadTimeout = 10000
    
                    SerialPort1.Open()
                    connect_btn.Text = "Disconnect"
                    Timer1.Enabled = True
                Else
                    MsgBox("Please choose Serial Port")
                End If
            Else
                SerialPort1.Close()
                connect_btn.Text = "Connect"
                Timer1.Enabled = False
            End If
    
    
        End Sub
    
    
        Private Sub Timer1_Tick(sender As Object, e AsEventArgs) Handles Timer1.Tick
    
            'Read Serial Data and split it to text boxes
            RxData = ReceiveSerialData()
            Dim rxpacket As String() = RxData.Split(";")
            Dim rxprams As String() = rxpacket(0).Split(",")
            TB_P1.Text = rxprams(0)
            TB_P2.Text = rxprams(1)
            TB_P3.Text = rxprams(2)
    
        End Sub
    
    
        Function ReceiveSerialData() As String
            Dim Incoming As String
            Try
                Incoming = SerialPort1.ReadExisting()
                If Incoming Is Nothing Then
                    Return "no-data" & vbCrLf
                Else
                    Return Incoming
                End If
            Catch ex As TimeoutException
                Return "Error: Serial Port timeout."
            End Try
    
        End Function
    
    End Class

    Werbung:

    COM Serial VB
    Download

    122X122

    Über den Autor

    Alex, der Gründer von AEQ-WEB. Seit über 10 Jahren beschäftigt er sich mit Computern und elektronischen Bauteilen aller Art. Neben den Hardware-Projekten entwickelt er auch Webseiten, Apps und Software für Computer.

    Top Artikel in dieser Kategorie:

    Arduino IRFZ44N PWM MOSFET Load Control

    Arduino MOSFET Steuerung

    • Video
    • DE/EN

    In diesen Artikel zeigen wir wie man große Lasten mittels eines MOSFET-Transistors über das Arduino Board steuert und die Drehzahl von einem Motor regelt

    Weiterlesen
    Arduino LM358 PT1000 Sensor Converter

    Temperatur messen mit PT1000 & Arduino

    • Video
    • DE/EN

    PT1000 Sensoren können nicht direkt analog mit einem Mikrocontroller gemessen werden. Wie baut man einen Messwandler mit dem LM358 für den PT1000 und Arduino?

    Weiterlesen

    Social Media

    Werbung:


    Neue Artikel


    Events

    • Keine zukünftigen Events vorhanden