VB2005 einzelne Bytes über port senden

OP #1512428
Lesenswert?

ich habe schon alle möglichen Varianten versucht, einzelne Bytes über 
den com-Port zu übertragen mit port.write(....), aber es kommen auf der 
anderen Seite immer zwei Bytes an.
in meinem Bsp soll zb 0x40,0x41,0x42 usw übertragen werden.
Die Werte liegen innerhalb einer Zeichenkette vor und ich kann sie auch 
separieren, aber die Übertragung klappt nicht.
Beim Einlesen funktioniert das byteweise einlesen mit port.readbyte.
OP #1512873
Lesenswert?

Inhalt von telegramm="20304010". Die letzte Hex-Zahl 10(LF) soll nicht 
übertragen werden. Die help-u.a.-Variablen sind zur Fehlersuche. Hab es 
auch schon mit convert.ToByte versucht


Public Sub auswertung(ByVal uebergabe As String)
        Dim z = 0
        Dim laenge As Integer
        Dim einer As Char
        Dim help As Char
        Dim help1 As Char



        telegramm = uebergabe
        laenge = telegramm.Length
        einer = Convert.ToChar(telegramm.Substring(0, 2))
        If laenge > 0 Then


            While z < (laenge - 2)
                help = ((Convert.ToChar(telegramm.Substring(z, 2))))
                help1 = ((Convert.ToChar(telegramm.Substring(z, 2))))
                help1 = ((Convert.ToChar(telegramm.Substring(z, 2))))
                COMPort.Write((Convert.ToChar(telegramm.Substring(z, 
2))))

                z = z + 2
            End While
            telegramm = ""
            z = 0
        End If



    End Sub
Gast #1512900
Lesenswert?

kann ja nicht gehen ...


wenn du den String "203040" hast, welche ja scheinbar eine Hex 
darstellung enthählt muss du ihn ja erstmal von hex in byte umwandeln 
und nicht von String nach byte.

1. Zerlegen von "203040" in "20", "30", "40"
2. Umwandeln in byte und in ein arrray speichern
     dim byte = Convert.ToByte("20",16);
3. byte array mit write senden.
OP #1512935
Lesenswert?

Sorry, habe folgendes getestet:

 Dim test As Byte
   test = Convert.ToByte("20", 16)
   COMPort.Write(test)

Es kommt am Empfänger an als Text "32" als Byte 51 52
Er kovertiert als die Hex-Zahl 20 in Dezimalzahl 32 und schickt sie als 
Text (ASCII) zum Empfänger.
Das Problem ist m.E. der write-Befehl, der die Zeichen als Text 
interpretiert.
Oder mach ich etwas falsch?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren