INT zu CHAR -> Wie als ASCII-Zeichen?

  • Hallo Gemeinde :),


    und zwar habe ich die Aufgabenstellung einen Text (Klartextnamen eines Palettierprogrammes) als Meldung auf dem KCP anzuzeigen.


    Da ich mir aber die Daten von der SPS an den Roboter multiplexe, liegen mir die Zeichen nur als Integer Werte vor.


    Wenn ich nun versuche diese Werte mit swrite in ein CHAR Array zu packen interpretiert er mir das leider nicht als ASCII Zeichen sondern wirklich als Integer :bawling:


    Habt ihr eine Idee wie ich einen Integer Wert in einen ASCII Zeichen umwandle? (z.B. INT "77" = ASCII "M")


    Oder ist das Systematsich überhaupt nicht möglich, leider kann ich an dem Datenübertragungsweg derzeit nichts ändern ;)


    Gruß,
    Ralle

  • Schritt für Schritt zum Roboterprofi!
  • Hatte neulich auch diese Problematik im Bezug auf eine Barcode-Übermittlung. Der Scanner hat mir auch die ASCII-Zeichen als Integer via ProfiNet geschickt. Leider habe ich auch keine Lösung hin bekommen.


    Ich wäre auch sehr interessiert an einer brauchbaren Lösung.


    Letzendlich habe ich mir die ASCII-Tabelle im Programm angelgt (mit SWITCH, CASE, ...) und dann Zeichen für Zeichen einen String gebastelt in einem Unterprogramm.


    Gruß Roland

  • Sollte eigentlich ganz einfach so funktionieren.
    Die ASCII Sonderzeichen hab ich als Ä deklariert.


    DECL CHAR ASCII[128,1]
    ASCII[1,]="Ä"
    ASCII[2,]="Ä"
    ASCII[3,]="Ä"
    ASCII[4,]="Ä"
    ASCII[5,]="Ä"
    ASCII[6,]="Ä"
    ASCII[7,]="Ä"
    ASCII[8,]="Ä"
    ASCII[9,]="Ä"
    ASCII[10,]="Ä"
    ASCII[11,]="Ä"
    ASCII[12,]="Ä"
    ASCII[13,]="Ä"
    ASCII[14,]="Ä"
    ASCII[15,]="Ä"
    ASCII[16,]="Ä"
    ASCII[17,]="Ä"
    ASCII[18,]="Ä"
    ASCII[19,]="Ä"
    ASCII[20,]="Ä"
    ASCII[21,]="Ä"
    ASCII[22,]="Ä"
    ASCII[23,]="Ä"
    ASCII[24,]="Ä"
    ASCII[25,]="Ä"
    ASCII[26,]="Ä"
    ASCII[27,]="Ä"
    ASCII[28,]="Ä"
    ASCII[29,]="Ä"
    ASCII[30,]="Ä"
    ASCII[31,]="Ä"
    ASCII[32,]=" "
    ASCII[33,]="!"
    ASCII[34,]="""
    ASCII[35,]="#"
    ASCII[36,]="$"
    ASCII[37,]="%"
    ASCII[38,]="&"
    ASCII[39,]="'"
    ASCII[40,]="("
    ASCII[41,]=")"
    ASCII[42,]="*"
    ASCII[43,]="+"
    ASCII[44,]=","
    ASCII[45,]="-"
    ASCII[46,]=","
    ASCII[47,]="/"
    ASCII[48,]="0"
    ASCII[49,]="1"
    ASCII[50,]="2"
    ASCII[51,]="3"
    ASCII[52,]="4"
    ASCII[53,]="5"
    ASCII[54,]="6"
    ASCII[55,]="7"
    ASCII[56,]="8"
    ASCII[57,]="9"
    ASCII[58,]=":"
    ASCII[59,]=";"
    ASCII[60,]="<"
    ASCII[61,]="="
    ASCII[62,]=">"
    ASCII[63,]="?"
    ASCII[64,]="@"
    ASCII[65,]="A"
    ASCII[66,]="B"
    ASCII[67,]="C"
    ASCII[68,]="D"
    ASCII[69,]="E"
    ASCII[70,]="F"
    ASCII[71,]="G"
    ASCII[72,]="H"
    ASCII[73,]="I"
    ASCII[74,]="J"
    ASCII[75,]="K"
    ASCII[76,]="L"
    ASCII[77,]="M"
    ASCII[78,]="N"
    ASCII[79,]="O"
    ASCII[80,]="P"
    ASCII[81,]="Q"
    ASCII[82,]="R"
    ASCII[83,]="S"
    ASCII[84,]="T"
    ASCII[85,]="U"
    ASCII[86,]="V"
    ASCII[87,]="W"
    ASCII[88,]="X"
    ASCII[89,]="Y"
    ASCII[90,]="Z"
    ASCII[91,]="["
    ASCII[92,]="\"
    ASCII[93,]="]"
    ASCII[94,]="^"
    ASCII[95,]="_"
    ASCII[96,]="`"
    ASCII[97,]="a"
    ASCII[98,]="b"
    ASCII[99,]="c"
    ASCII[100,]="d"
    ASCII[101,]="e"
    ASCII[102,]="f"
    ASCII[103,]="g"
    ASCII[104,]="h"
    ASCII[105,]="i"
    ASCII[106,]="j"
    ASCII[107,]="k"
    ASCII[108,]="l"
    ASCII[109,]="m"
    ASCII[110,]="n"
    ASCII[111,]="o"
    ASCII[112,]="p"
    ASCII[113,]="q"
    ASCII[114,]="r"
    ASCII[115,]="s"
    ASCII[116,]="t"
    ASCII[117,]="u"
    ASCII[118,]="v"
    ASCII[119,]="w"
    ASCII[120,]="x"
    ASCII[121,]="y"
    ASCII[122,]="z"
    ASCII[123,]="{"
    ASCII[124,]="|"
    ASCII[125,]="}"
    ASCII[126,]="~"
    ASCII[127,]="Ä"



    Länge (I) vom zu übersetzenden String (DISPLAY) ermitteln.


    FOR J = 1 to I
    K = SPS_INT ;Integer von SPS
    DISPLAY[J] = ASCII[K,1]
    ENDFOR


    Servus Roland

    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.<br />Albert Einstein

  • Ich verstehe das Problem nicht.
    Char SIND Integer.


    Probiert es aus:
    test.dat:

    Code
    DEFDAT  test PUBLIC
    
    
    DECL CHAR h[5]
    h[]="     "
    
    
    ENDDAT


    test.src:


    Nach dem Abfahren steht in h[]="MNOPQ".


    SWRITE ist da natürlich zuerst die falsche Option.


    Grüße,
    Michael

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden