Serialport und Encoding; Problem beim Konvertieren ASCII in Prüfziffer
- From: Jo Neigel <nospam_joneigel@xxxxxx>
- Date: Wed, 29 Apr 2009 09:15:33 -0700 (PDT)
Hi Group,
um Daten an ein serielles Gerät zu senden, muss ich am Ende zwei
Prüfziffern dranhängen.
Dazu muss man die Summe aller Ascii-Werte nehmen und durch 256
dividieren.
Der Rest ergibt die 2te Checksumme.
Beide Checksum werden an das Satzende angehängt.
Meine Umsetzung sieht so aus:
------
For i As Integer = 0 To sLine.Length - 1
sReadByte = sLine.Substring(i, 1)
iChecksum += Asc(sReadByte)
sWriteLine &= sReadByte
Next
iCheck1 = iChecksum \ 256
iCheck2 = iChecksum Mod 256
If iCheck1 = 13 Then iCheck1 = 14 'Ausnahmebehandlung für chr13
If iCheck2 = 13 Then iCheck2 = 14 'Ausnahmebehandlung für chr13
sWriteLine &= Chr(iCheck1) & Chr(iCheck2)
-------
Der String wird dann an das serielle Gerät gesendet:
serialPort1.Write(sWriteLine & vbCr)
-------
Das klappt auch soweit, nur nicht immer :-((
Wenn aber sLine z.B. den Wert 'test' hat, wird die Checksum vom
seriellen Gerät abgewiesen.
Mit einem Portmonitor ist mir aufgefallen, dass die Anwendung des
Herstellers in diesem Fall einen andere Checksum ermittelt:
Korrekt wäre (HEX): 74 65 73 74 01 C0 0D
Ich sende:74 65 73 74 01 3F 0D
Meine Vermutung:
Wahrscheinlich taucht das Problem ab dem erweiterten Zeichensatz (ab
128) auf.
Muss ich hier mit eine Encoding Parameter bei SerialPort arbeiten?
Das habe ich ohne Erfolg versucht: serial.Encoding =
System.Text.Encoding.GetEncoding("Windows-1252")
Hat mir jemand einen Tipp?
gruß Jo
.
- Follow-Ups:
- Re: Serialport und Encoding; Problem beim Konvertieren ASCII in Prüfziffer
- From: Karsten Sosna
- Re: Serialport und Encoding; Problem beim Konvertieren ASCII in Prüfziffer
- From: Armin Zingler
- Re: Serialport und Encoding; Problem beim Konvertieren ASCII in Prüfziffer
- Prev by Date: Methode indirekt aufrufen
- Next by Date: Re: WMI ManagementClass-Klasse
- Previous by thread: Methode indirekt aufrufen
- Next by thread: Re: Serialport und Encoding; Problem beim Konvertieren ASCII in Prüfziffer
- Index(es):
Relevant Pages
|