Daten zum COM-Port

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Daten zum COM-Port

    Hallo ihr,

    ich habe momentan ein Problem mit meinen Programm und hab zum Glück diese Seite gefunden und hoffe man kann mir helfen.


    Ich habe eine einfach Steuerung aufgabut (von Sprut USB4all). Diese möchte ich gern über USB steuern können.

    Dies geschieht alles über einen simulierten COM-Anschluß.

    Da ich früher viel mit VB gearbeitet hab,dachte ich mir ich bekomm das so hin.

    Momentaner Stand ist:
    Ich kann den COM Port öffnen.


    Ich muss dem Port jetzt aber HEX-Zahlen rüberschicken


    Mein Code sieht momentan so aus:

    VB.NET-Quellcode

    1. ]Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Try
    3. SerialPort1.PortName = TextBox1.Text
    4. SerialPort1.BaudRate = TextBox2.Text
    5. SerialPort1.Open()
    6. Button1.Enabled = False
    7. Button2.Enabled = True
    8. Button3.Enabled = True
    9. Catch ex As Exception
    10. MsgBox("Verbindungsfehler!")
    11. End Try
    12. End Sub
    13. -------------------------------------------------------------------------
    14. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    15. If SerialPort1.IsOpen = True Then
    16. SerialPort1.Close()
    17. End If
    18. End Sub
    19. --------------------------------------------------------------------------------
    20. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    21. SerialPort1.Write("50-01-00-00-00-00-00-00-00-00-00-00-00-00-00-00" & vbCr)
    22. End Sub
    23. -------------------------------------------------------------------------------------
    24. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    25. SerialPort1.Write("50-02-55-55-55-00-00-00-00-00-00-00-00-00-00-00" & vbCr)
    26. End Sub


    Die Zahlen sind halt Hex Zahlen. Aber irgendwie fehlt mir die richtige Syntax.
    Kann mir wer bitte helfen :)

    Danke im vorraus

    Edit by der_Kurt:
    * Thema verschoben *

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „der_Kurt“ ()

    Marcus89 schrieb:

    Ich muss dem Port jetzt aber HEX-Zahlen rüberschicken

    Schwierig. Weil es unklar ist, was du darunter verstehst.
    JEDE Zahl ist "auch" eine Hexadezimal-Zahl bzw läßt sich halt in dieser Form schriftlich darstellen.

    Musst du STRINGS schicken, die eine HEX-Zahl darstellen?

    Denn MEISTENS muss man "nur" zb "16" an die Gegenstelle schicken, wobei die in Dokumentationen etc häufig als "x10" dargestellt wird. Ist aber letztlich alles völlig egal, da ja eigentlich nur 8 Bits in der richtigen Reihenfolge und mit dem richtigen Wert übertragen werden müssen. Ob das dann 65, H41 oder A ist, ist reine Interpretation.

    Das steht in der Anleitung ^^

    Ich habe die CDC Version mit dem ASCII String. Hilft dir das weiter ?














    7 Befehlsübersicht


    Jeder Befehl besteht aus einer kurzen Kette von Bytes (einem String). Dieser String wird


    zum USB4all gesendet. Der USB4all arbeitet den Befehl ab, und sendet dann als Quittung


    einen 16 Byte langen String zurück.


    Bei Schreiboperationen oder Initialisierungsbefehlen dient dieser String nur als


    Lebenszeichen des USB4all. Echte Daten enthält er nur nach Leseoperationen.


    Die Länge des an den USB4all zu sendenden Strings darf 64 Bytes nicht überschreiten.


    Die meisten Befehle kommen aber mit 2 .. 4 Byte aus.


    Beim USB4all-CDC wird der Byte-String in einen ASCII-String “eingebettet”. Dieser ist 3


    mal so lang, wie der Byte-String. Die Länge ASCII-Strings darf 64 Zeichen nicht


    überschreiten, was die Zahl der enthaltenen Daten-Bytes auf 20 begrenzt.


    Das erste Byte des Befehlsstrings adressiert das Subsystem des USB4all, an das der

    Befehl geschickt werden soll.
    Also wenn ich das jetzt richtig verstanden hab. Muss ich keine Hex Zahl sondern eine ASCII Zahl rüber schicken :huh:

    Dann müsste es ja theoretisch so stimmen.



    Kann mir wer erklären wie schauen kann ob mir der PIC antwortet ?



    Es treten auch immer zwei Fehler auf, kann es daran liegen?

    Eine Ausnahme (erste Chance) des Typs "System.IO.IOException" ist in System.dll aufgetreten.

    Eine Ausnahme (erste Chance) des Typs "System.UnauthorizedAccessException" ist in System.dll aufgetrete




    VB.NET-Quellcode

    1. 'SerialPort1.Write("50-01-00-00-00-00-00-00-00-00-00-00-00-00-00-00" & vbCr)
    2. Dim bb() As Byte
    3. ReDim bb(16)
    4. bb(0) = &H50
    5. bb(1) = &H1
    6. ' ...
    7. bb(16) = CByte(vbCr)
    8. SerialPort1.Write(bb, 0, bb.Length)
    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!