1Danke
ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
3147
3147
EMPFEHLEN
-
18.06.07 11:23 #1
- Registriert seit
- Apr 2007
- Beiträge
- 16
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:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
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 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
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
-
Hi
Entweder du nutzt ein anderes Encoding oder du ersetzt vor dem Codieren die Zeichen durch ein entsprechendes Äquivalent (ä durch ae, ö durch oe, usw).
Grund: Im ASCII - Zeichensatz gibt es keine UmlauteGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
18.06.07 13:56 #3
- Registriert seit
- Apr 2007
- Beiträge
- 16
Das Problem ist, dass das Zielgerät (Lunartec LED-Lauflichtleiste) ä; ö; ü zwar kann, aber es steht nirgends geschrieben wie ich diese Zeichen übertragen muss.
Die Codierung bei der HEX-Umwandlung habe ich aus einem anderen Programm (daher weiss ich erst wie ich die Zeichen ändern muss).
Bei dem Gerät gab es noch ein Programm dazu welches die Zeichen übertragen kann - über Hyperterminal kommen sie auch richtig an, nur über den VB-Code leider nicht ....
Um überhaupt erstmal weiter zu kommen: Wo müsste/muss ich denn eine Codierung einstellen - beim übertragen oder beim umwandeln - oder muss ich überhaupt nicht encodieren da ich die Zeichen schon getauscht habe - ich brauche einen Ansatzpunkt da ich überhaupt nicht mehr aus dem Ausprobieren mehr raus komme
PS: ä --> ae usw. existiert schon aus "Notfallfunktion" ... aber deswegen klappts mit ä trotzdem nicht ...
Gruß, PingOfDeath1983
-
Hallo,
gibt es keine Dokumentation des Protokolls zu diesem Gerät ?
Eventuell hilft auch ein Schnittstellen-Analyser...
Schau dir mal dieses Beispiel hier an:
www.gssg.de -> Visual Basic -> VB.net
-> Serial Port (RS232) Chat
Vielleicht findest du da Ansatzpunkte.
Gruß
Jens
Ähnliche Themen
-
Datenübertragung mit SSH
Von Bobody im Forum JavaAntworten: 3Letzter Beitrag: 15.09.10, 14:06 -
Serielle Datenübertragung
Von neo_polo im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 27.03.08, 16:41 -
Datenübertragung
Von blubbbla im Forum VisualStudio & MFCAntworten: 0Letzter Beitrag: 31.10.07, 13:37 -
VB - Serielle Datenübertragung
Von PingOfDeath1983 im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 18.06.07, 10:44 -
Datenübertragung******
Von igfas im Forum PHPAntworten: 1Letzter Beitrag: 02.03.03, 13:47





Zitieren

Login





