PingOfDeath1983
Grünschnabel
Hallo,
ich habe noch ein Problem in einem Projekt von mir. Und zwar müssen Zeichen wie Ö,ä usw. (mehrere) in einen bestimmten Hex-Wert umgewandelt werden bevor sie seriell gesendet werden.
Hier mal der Code:
......
Leider geht dabei etwas schief - was weiss ich auch nicht!
Es ist jedenfalls so, dass wenn ich den vom VB-Programm gesendeten String im HyperTerminal auslese nur ein "Kästchen" ankommt und nicht das gewünschte Zeichen. Das passiert NUR bei Zeichen die das 8te Bit nutzen .... also Umlaute/Sonderzeichen.
Jemand eine Idee?
Gruß, PingOfDeath1983
ich habe noch ein Problem in einem Projekt von mir. Und zwar müssen Zeichen wie Ö,ä usw. (mehrere) in einen bestimmten Hex-Wert umgewandelt werden bevor sie seriell gesendet werden.
Hier mal der Code:
Code:
Function LED_Zeichensatz(ByVal sText As String) As String
Dim sRepWhat$, sRepWith$, sTemp$, iWhere$
Dim cnt As Integer
'System.Text.Encoding.
'sText = System.Text.Encoding.GetEncoding(850).GetString(System.Text.Encoding.Default.GetBytes(sText))
sRepWhat = "C3.C2.C1.C0.C4.C5.C6.DF.C7.D0.C9.CA.C8.CB.CD.CC.CE.CF.D1.D3.D4.D2.D6.D5.D8.DE.DA.D9.DB.DC.BE.DD.E3.E2.E1.E0.E4.E5.E6.E7.E9.EA.E8.EB.ED.EC.EE.EF.F1.F3.F4.F2.F6.F5.F8.FE.FA.F9.FB.FC.FF.FD.A5.A3.A4.0A.0D" '"falsche" Werte
sRepWith = "7F.80.81.82.83.84.85.86.87.88.89.8A.8B.8C.8D.8E.8F.90.91.92.93.94.95.96.97.98.99.9A.9B.9C.9D.9E.9F.A0.A1.A2.A3.A4.A5.A6.A7.A8.A9.AA.AB.AC.AD.AE.AF.B0.B1.B2.B3.B4.B5.B6.B7.B8.B9.BA.BB.BC.BD.BE.BF.20.20"
'sRepWith = "7F.80.81.82.83.84.85.86.87.88.89.8A.8B.8C.8D.8E.8F.90.91.92.93.94.95.96.97.98.99.9A.9B.9C.9D.9E.9F.A0.A1.A2.A3.A4.A5.A6.A7.A8.A9.AA.AB.AC.AD.AE.AF.B0.B1.B2.B3.B4.B5.B6.B7.B8.B9.BA.BB.BC.BD.BE.BF.20.20" 'richtige Werte laut Perl
For cnt = 1 To Len(sText) 'Gehe alle Buchstaben des Textes durch
sTemp = Hex(Asc(Mid(sText, cnt, 1))) 'Extrahiere den nächsten Buchstaben
iWhere = InStr(sRepWhat, sTemp) 'Wenn gefunden
If iWhere > 0 Then
sTemp = Mid(sRepWith, iWhere, 2) 'und finde sein Äquivalent in der Codetabelle
Mid(sText, cnt, 1) = Chr(Val("&H" & sTemp)) 'Dann noch im Text ersetzen
End If
Next cnt
Form1.Label3.Text = sText
'sText = System.Text.Encoding.ASCII.GetString(System.Text.Encoding.Default.GetBytes(sText))
'sText = System.Text.Encoding.GetEncoding(850).GetString(System.Text.Encoding.Default.GetBytes(sText))
Form1.Label4.Text = sText
Return sText
End Function
......
Code:
Sub SendSerialData(ByVal data As String)
If strComport = "COM ?" Then
Form1.ComboBoxCOM.Enabled = True
Form1.credits.Enabled = False
Form1.credit_timer = 0
Else
Using com As IO.Ports.SerialPort = _
My.Computer.Ports.OpenSerialPort(strComport, 9600, IO.Ports.Parity.None, 8, IO.Ports.StopBits.One)
com.Encoding = System.Text.Encoding.ASCII 'GetEncoding(850)
'portName ,baudRate ,parity ,dataBits ,stopBits
'com.Encoding.CodePage()
com.Encoding = System.Text.Encoding.UTF8
com.WriteLine(data)
Form1.Label5.Text = data
End Using
End If
End Sub
Leider geht dabei etwas schief - was weiss ich auch nicht!
Es ist jedenfalls so, dass wenn ich den vom VB-Programm gesendeten String im HyperTerminal auslese nur ein "Kästchen" ankommt und nicht das gewünschte Zeichen. Das passiert NUR bei Zeichen die das 8te Bit nutzen .... also Umlaute/Sonderzeichen.
Jemand eine Idee?
Gruß, PingOfDeath1983