TIA UTF-8 auf SPS

d Martin

Level-2
Beiträge
52
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich muss Strings im UTF-8 Format senden, da die Gegenseite nur UTF-8 annimmt.
Das ist ja alles kein Problem so lange ich im ASCII-Bereich bleiben kann.
Hab mich da gerade erst eingelesen wie das mit UTF-8 funktioniert.
Das Problem, dass ich habe sind aber so tolle Sonderzeichen wie € (oder auch andere)
Kann man das €-Zeichen überhaupt an nem Comfort-Panel eingeben.
Kennt jemand ne sinnvolle/einfache Lösung um W-String in UTF-8 zu wandeln.
Also bei UTF-8 ist ein Zeichen ja abhängig vom Zeichen 1-4 Byte lang.
Das ganze jetzt selbst zu programmieren und zu schauen, welche Sonderzeichen brauch ich welche nicht, will ich nicht wirklich machen.
Die sonstige Ansteuerung der Gegenseite muss halt über die SPS laufen.

Evtl.wäre das schicken der Strings direkt über das Comfort-Panel einfacher? Hab da keine Ahnung.
Mit Scritpen aufm Comfort-Panel bin ich gar nicht vertraut/ hab ich noch nie was gemacht.

Also wenn jemand Erfahrung damit hat, oder Ideen/Lösungsvorschläge. Bin für alles dankbar.
 
Was genau ist den die "Gegenseite"?
Und was bedeutet "schicken"? Per TCP/IP?
Zur Info WSTRING benutzt UCS2 als Codierung.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Gegenseite ist ein Domino D320i CO2-Beschriftungslaser.
Ich baue per TCON eine Verbindung auf und sende dann entsprechend nen Befehl und Text bzw. Zeichen die der Laser schreiben soll bzw die sich ändern.

Also muss ich mir die Konvertierung selber zusammenbauen oder gibt es da vorlagen oder so. Wenn man sucht findet man nichts.
 
Ich weiß nicht inwieweit sich UTF8 und UCS2 unterscheiden (Bis auf: UCS2 ist jedes Zeichen 16Bit lang, bei UTF8 nicht)
Aber zum Beispiel dein € Zeichen ist bei UCS2 und UTF8 gleich. Beides 0x20AC:

1658748143993.png

1658748179547.png
 
Die Zeichencodes sind bei UTF-8 und UCS-2 (und auch bei UTF-16 oder UTF-32) gleich. Nur die Kodierung in Bytes unterscheidet sich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich wusste das bei UTF8 die Länge eines Charakter nicht fix ist.
Hab aber noch nie nachgeschaut wie UTF8 das genau macht.
Das habe ich gerade nachgeholt 😁
So wie Windoze schon geschrieben hat, sind die Zeichencodes gleich.
Sie werden dann nur so kodiert (siehe Wikipedia UTF8):
1658761370131.png

D.h.:
Dein € Zeichen liegt im WSTRING als 0x20AC
Das ist binär dann: 2#00100000 10101100
Das kommt dann laut dritter Zeile (weil 0x20AC zwischen 0x0800 und 0xffff) in das muster 1110xxx 10xxxxxx 10xxxxxx
Raus kommt dann: 2#11100010 10000010 10101100
Was dann 0xe282ac wäre



Habs in Notepad++ überprüft:

Hex:
1658761957799.png
Utf8:
1658762004807.png
 
Hallo,

ich muss Strings im UTF-8 Format senden, da die Gegenseite nur UTF-8 annimmt.
Das ist ja alles kein Problem so lange ich im ASCII-Bereich bleiben kann.
Hab mich da gerade erst eingelesen wie das mit UTF-8 funktioniert.
Das Problem, dass ich habe sind aber so tolle Sonderzeichen wie € (oder auch andere)
Kann man das €-Zeichen überhaupt an nem Comfort-Panel eingeben.
Kennt jemand ne sinnvolle/einfache Lösung um W-String in UTF-8 zu wandeln.
Also bei UTF-8 ist ein Zeichen ja abhängig vom Zeichen 1-4 Byte lang.
Das ganze jetzt selbst zu programmieren und zu schauen, welche Sonderzeichen brauch ich welche nicht, will ich nicht wirklich machen.
Die sonstige Ansteuerung der Gegenseite muss halt über die SPS laufen.

Evtl.wäre das schicken der Strings direkt über das Comfort-Panel einfacher? Hab da keine Ahnung.
Mit Scritpen aufm Comfort-Panel bin ich gar nicht vertraut/ hab ich noch nie was gemacht.

Also wenn jemand Erfahrung damit hat, oder Ideen/Lösungsvorschläge. Bin für alles dankbar.
Im Prinzip läuft die Konvertierung nach Schema F ab und man muss auf keine Sonderzeichen Rücksicht nehmen.
Ich kann dir nach meinem Urlaub Bausteine dafür zukommen lassen. Hab das Thema auch mal umsetzen müssen. WSTRING -> UTF8 und umgekehrt.
Wichtig ist, konsequent mit WSTRING zu arbeiten, weil in den 8 Bit Strings Sonderzeichen per Se zu Problemen führen.
 
Sehr geehrter d Martin,

wir möchten dich gerne unterstützen, die Kommunikation zwischen deiner SPS und dem Domino D320i aufzubauen.
Wende dich dazu gerne an unsere technische Hotline mit der Telefonnummer: 06134 250 618
Schreibe uns gerne auch eine Mail mit deinen Fragen an helpdesk@domino-deutschland.de

Mit freundlichen Grüßen
Andreas Weisenberger
Regionaler Serviceleiter @domino
 
Zurück
Oben