Forum: PC-Programmierung VB TCP-Client 8bit senden


von MOBA 2. (Gast)


Lesenswert?

Hallo Leute,

ich möchte mit VB (2013) über den TCP-CLient Daten zu einem Gerät 
senden. Das klappt soweit alles gut, außer das Senden von vollen 8-Bit.

Bis 127 geht es, danach sendet er 191, 195 für eine normalerweise 255.
1
Sub ConnectToIP(ByVal IP As String)
2
        Try
3
            Client = New TcpClient
4
5
            Client.Connect(IP, Form1.IP_SERVER_PORT)
6
7
            If Client.Connected() = True Then
8
                wifi = Client.GetStream()
9
                wifi_write = New StreamWriter(wifi)
10
                wifi_read = New StreamReader(wifi)
11
            End If
12
        Catch ex As Exception
13
            Notification2.ShowBalloonTip(1500, "IP", "Keine Verbindung zur IP", ToolTipIcon.Error)
14
        End Try
15
    End Sub

Das ist die Sub, mit der man sich mit dem Client verbindet.


Einen Wert schreibe ich dann bspw. so:
1
            ConnectToIP(Form1.IP_TO_CONNECT)
2
3
            If Client.Connected Then
4
                wifi_write.WriteLine(value.ToString() & Chr(255))
5
                wifi_write.Flush()
6
7
                Client.Close()
8
            End If


Die Sache ist jetzt die, wenn Chr(127) geht, dann bekomme ich auch eine 
127 als Byte, alles was darüber geht geht nicht mehr. Ich denke mal da 
ist was falsch im Encoding, habe es leider nicht gefunden, wo man das 
umstellt.

Hoffe mir kann jmd. helfen!

von Planlos (Gast)


Lesenswert?

"StreamWriter" ist nur für Text. Macht z.B Charset-Conversion.

Du brauchst vmtl. stattdessen wifi.Write(byte[], offset, size)

(wifi ist ein "NetworkStream", der arbeitet auf Byte-Ebene)

von MOBA 2. (Gast)


Lesenswert?

Planlos schrieb:
> "StreamWriter" ist nur für Text. Macht z.B Charset-Conversion.
>
> Du brauchst vmtl. stattdessen wifi.Write(byte[], offset, size)
>
> (wifi ist ein "NetworkStream", der arbeitet auf Byte-Ebene)

Das mag zwar auch funktionieren, angenehmer ist das aber mit dem 
Streamwriter, da kann ich direkt einen String übergeben.

ABER: Du hast mir trotzdem geholfen, ich war nen bisschen verplant - 
wenn ich den Streamwriter nutze, muss ich dort auch die Einstellungen 
vornehmen und nicht beim TCP ==> Streamwriter mit Encoding.Default und 
nun kann ich 8-Bit senden/empfangen! Das habe ich die ganze Zeit beim 
TCP gesucht mit dem Default-Encoding ;)

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.