Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeichenkodierungsproblem Text (C14) über DPT16 GA an MDT Glastaster II Smart

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Zeichenkodierungsproblem Text (C14) über DPT16 GA an MDT Glastaster II Smart

    Ich steh' gerade etwas auf dem Schlauch:

    Über eine DPT 16 GA sende ich den im EibPC verarbeiteten Temperatursollwert an die Anzeige der zugehörigen Taster eines MDT Glastaster II Smart:

    Code:
    if change(Name_SollTemp) then {
        write(pGATextausgabe, convert(stringformat(Name_SollTemp,4,0,3,1) + $ °C$, $$c14));
    } endif​
    also der Temperaturwert, gefolgt von einer Leerstelle und der Einheit "°C".

    Es gibt wohl ein Problem mit der Zeichenkodierung, das statt der Leerstelle ein "Â" erscheint :

    20260227_141800.jpg

    Kann mir jemand einen Tipp geben, wie der Text richtig angezeigt wird?​

    Vielleicht kann ja hjk da Klarheit reinbringen?

    Laut EibPC-Handbuch sollten C14 Variable eigentlich ISO 8859-1 codiert sein ...
    Zuletzt geändert von klaus_kraemer; 27.02.2026, 16:00.

    #2
    Du musst die Codierung anpassen. Der GT wird auf iso8859-15 codiert sein,
    Code:
    StringAnGT=encode(QuellString,$UTF-8$c14,$ISO-8859-15$c14)
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Ergänzung:
      Zitat von klaus_kraemer Beitrag anzeigen
      Laut EibPC-Handbuch sollten C14 Variable eigentlich ISO 8859-1 codiert sein ...
      Sind sie auch, allerdings erfolgt keine automatische Konvertierung. Deswegen das encode().

      Gibt es auch als Logikknoten "Codierung".

      Kommentar


        #4
        Danke enertegus

        Das endet leider mit einer Fehlermeldung:

        Code:
        //---------------- Aktortasten auswerten
        
        :begin HeizenRaumRadiatorSollwertUeberTasten(Name, pGATastendruck, pGATextausgabe)
        
        :var rawstring@
        rawstring@ = $$c14
        :var isostring@
        isostring@ = $$c14
        
        if event(pGATastendruck) and (pGATastendruck == AUS) then {
            Name_SollTemp = max(Name_SollTemp - Name_SollIncrement, Name_SollMinTemp);
        } endif
        
        if event(pGATastendruck) and (pGATastendruck == EIN) then {
            Name_SollTemp = min(Name_SollTemp + Name_SollIncrement, Name_SollMaxTemp);
        } endif
        
        if change(Name_SollTemp) then {
            rawstring@ = convert(stringformat(Name_SollTemp,4,0,3,1) + $ °C$, $$c14);
            isostring@ = encode(rawstring@,$UTF-8$c14,$ISO-8859-15$c14);
          //  write(pGATextausgabe, isostring@);
        } endif
        
        :end​
        Fehlermeldung ist:

        +---+ EibParser - v5.302 (Windows 64 Bit Version) +---+

        Keine Haftung für Schäden, die durch die Benutzung des Programms entstehen.
        Datei: "S:\EIB_KNX\EibPC2-Projekte\Amselweg7-EibPC02_tmp\tmpMacroOut.txt" wurde geschrieben

        Datei: "S:\EIB_KNX\EibPC2-Projekte\Amselweg7-EibPC02_tmp\tmpMacroFuncOut.txt" wurde geschrieben
        Laufzeitfehler:
        ! Unerlaubter Argumenttyp in : __HeizenRaumRadiatorSollwertUeberTasten_225__rawst ring -> 1-tes Argument von : >encode(__HeizenRaumRadiatorSollwertUeberTasten_ 22 5__rawstring,$UTF-8$,$ISO-8859-15$)< !
        ID:40
        EibParser wurde mit Fehler beendet.


        Das erste Argument von encode ist rawstring@, eine c14 - warum verschluckt sich der Compiler? ​

        Das passiert auch, wenn ich "rawstring"@" als c1400 definiere:

        Code:
        //---------------- Aktortasten auswerten
        
        :begin HeizenRaumRadiatorSollwertUeberTasten(Name, pGATastendruck, pGATextausgabe)
        
        :var rawstring@
        rawstring@ = $$
        :var isostring@
        isostring@ = $$c14
        
        if event(pGATastendruck) and (pGATastendruck == AUS) then {
            Name_SollTemp = max(Name_SollTemp - Name_SollIncrement, Name_SollMinTemp);
        } endif
        
        if event(pGATastendruck) and (pGATastendruck == EIN) then {
            Name_SollTemp = min(Name_SollTemp + Name_SollIncrement, Name_SollMaxTemp);
        } endif
        
        if change(Name_SollTemp) then {
            rawstring@ = stringformat(Name_SollTemp,4,0,3,1) + $ °C$;
            isostring@ = encode(rawstring@,$UTF-8$c14,$ISO-8859-15$c14);
          //  write(pGATextausgabe, isostring@);
        } endif
        
        :end​
        Dann lautet die Fehlermeldung:

        +---+ EibParser - v5.302 (Windows 64 Bit Version) +---+

        Keine Haftung für Schäden, die durch die Benutzung des Programms entstehen.
        Datei: "S:\EIB_KNX\EibPC2-Projekte\Amselweg7-EibPC02_tmp\tmpMacroOut.txt" wurde geschrieben

        Datei: "S:\EIB_KNX\EibPC2-Projekte\Amselweg7-EibPC02_tmp\tmpMacroFuncOut.txt" wurde geschrieben
        Laufzeitfehler:
        ! Benutzten Sie Konvertierungsfunktionen:
        Datentyp der Parameter nicht gleich. Kontrollieren Sie auch die Zuweisung der Funktionsrückgabe. 1-tes Argument von : >__HeizenRaumRadiatorSollwertUeberTasten_226__is os tring=encode(__HeizenRaumRadiatorSollwertUeberTast en_225__rawstring,$UTF-8$,$ISO-8859-15$)--Set< !
        ID:14
        EibParser wurde mit Fehler beendet.​
        Zuletzt geändert von klaus_kraemer; 27.02.2026, 15:57.

        Kommentar


          #5
          rawstring@ darf nicht $$c14 sein.

          isostring@ = convert(encode(rawstring@,$UTF-8$c14,$ISO-8859-15$c14), isostring@);

          Kommentar


            #6
            Danke für den tollen Support, foobar0815 und enertegus , jetzt funktioniert die Geschichte.

            Auf die nochmal notwendige Konvertierung wäre ich selbst wohl kaum gekommen - obwohl, wenn man das Handbuch richtig genau liest, hätte ich eigentlich draufkommen können ...

            Kommentar

            Lädt...
            X