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

  • AD
  • 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
    1. DEFDAT test PUBLIC
    2. DECL CHAR h[5]
    3. h[]=" "
    4. ENDDAT


    test.src:


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


    SWRITE ist da natürlich zuerst die falsche Option.


    Grüße,
    Michael

  • AD