Serielle Kommunikation Beetle USB ATMEGA32U4 (Arduino Leonardo)

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von camouflage81.

    Serielle Kommunikation Beetle USB ATMEGA32U4 (Arduino Leonardo)

    Hallo zusammen,

    ich habe ein kleines Problem, dass ich nicht gelöst bekomme.
    Gleich vorab, ich habe einen Post mit dem gleichen Thema auch schon im Arduino-Forum eröffnet.
    Leider kommen wir dort nicht weiter, da wohl das Problem am vb.net Code bzw. PC liegt.
    Ich hoffe das dies nicht als Crosspost geahndet wird, da dies nicht meine Absicht war.

    Zum Thema:
    Ich möchte über die serielle Schnittstelle Daten zwischen dem "ATMEGA32U4" und einem VB.net Programm übertragen.

    Hierzu habe ich einen kleinen Beispiel-Code, das auf dem Mirko-Controller läuft.

    C-Quellcode

    1. int count = 0;
    2. void setup() {
    3. Serial.begin(9600);
    4. while (!Serial);
    5. }
    6. void loop() {
    7. Serial.println("Hallo Welt!!");Serial.println(count++);
    8. delay(1000);
    9. }


    In vb.net verwende ich folgendes Code-Beispiel.

    VB.NET-Quellcode

    1. Imports System.IO.Ports
    2. Public Class Form1
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. SerialPort1.PortName = "COM5"
    5. SerialPort1.BaudRate = 9600
    6. SerialPort1.DataBits = 8
    7. SerialPort1.Parity = Parity.None
    8. SerialPort1.StopBits = StopBits.One
    9. SerialPort1.Handshake = Handshake.None
    10. SerialPort1.Encoding = System.Text.Encoding.Default
    11. SerialPort1.ReadTimeout = 10000
    12. SerialPort1.Open()
    13. End Sub
    14. Private Sub SerialPort_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
    15. Dim strDataRec As String = ""
    16. Try
    17. Do Until strDataRec.Contains(vbCrLf) Or strDataRec.Contains(vbCr)
    18. strDataRec &= SerialPort1.ReadExisting
    19. Loop
    20. Catch ex As Exception
    21. MsgBox(ex.Message)
    22. End Try
    23. strDataRec = strDataRec.Replace(vbCrLf, "").Replace(Chr(29), "").Replace(vbCr, "")
    24. Me.Invoke(Sub() Call SNCamRecive(strDataRec))
    25. SerialPort1.DiscardInBuffer()
    26. End Sub
    27. Private Sub SNCamRecive(strReciveValue As String)
    28. Console.WriteLine(strReciveValue)
    29. End Sub
    30. End Class


    (Beide Programmteile habe ich schon länger im Einsatz und hat bis jetzt mit allen Mikro-Controllern (z. B. Arduino Nano, Wemos D1 Mini, usw.) wunderbar funktioniert und tut es noch immer)

    Jedoch empfange ich keine Daten vom "ATMEGA32U4".

    Im seriellen Monitor der Arduino IDE kann ich die seriellen Daten vom "ATMEGA32U4" empfangen.



    Auch in PuTTY kann ich die Daten sehen.


    In meinem vb.net Programm kommen Sie jedoch niemals an.
    Die Funktion "Private Sub SerialPort_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived" wird schon überhaupt nicht ausgeführt.
    Quelle Arduino-Forum: "Der Unterchied zwischen den Mikro-Kontrollern ist wohl der, dass der "ATMEGA32U4" eine native USB Schnittstelle hat. Auf dem ganzen Übertragungsweg zwischen 32u4 und dem seriellen Monitor ist nirgends eine 'klassische' serielle Schnittstelle involviert".

    Hier noch zum Beweis das der vb.net Code mit anderen Mikro-Controllern funktioniert (Screenshot mit Arduino Nano):


    Ich hoffe Ihr könnt mir weiterhelfen.
    Komme nicht mehr weiter.


    Dank und Grüße