Zerstückeln eines Char Arrays und dessen Zuweisung als REAL Variable

  • Hallo zusammen,


    ich habe eine Frage bezüglich des Zerstückelns eines Char Arrays. Und zwar möchte ich mir bestimmte Zahlen aus dem Char Array rauspicken und diese dann in eine Real Variable umwandeln. Ich bekomme folgendes Char Array als Messergebnis ausgegeben und möchte mir einzelne Zahlen davon einem REAL Werten zuweisen.


    Code
    DECL GLOBAL CHAR RawData[850]
    RawData[]="TRXP00R00000048(001,P,777000,296000,89826,420650,555969,976620)


    Wie schaffe ich es hier, z.B. die Zahl 420650 des Char Arrays RawData[] der REAL Variablen x als 420.650 zuzuweisen? (das Messergebnis ist in echt 420.650 mm)


    Vielen Dank für eure Hilfe 8) :S

    Einmal editiert, zuletzt von Aggasan ()

  • Schritt für Schritt zum Roboterprofi!
  • Hallo Aggasan,


    bin gerade an einem ähnlichen Thema mit einer Anyfeeder Anwendung mit Kamerasystem bei.


    Für diesen Fall gibt es die Funktion "SREAD" darüber kannst du ein CHAR auslesen und in eine neue Variable schreiben (Char,Real,Int,Enum). In deinem Fall müsstest du dann einen Offset von 42 angeben.


    SREAD (String, Status, OFFSET, Format, Var1 <, …,Var10>)


    Zu der Funktion gibt es schon mehrere Themen im Forum, entsprechende Doku gibts auch bei Kuka.Xpert ;)


    Viel Erfolg

  • leider im Vergleich mit SWRITE, SREAD ist verkrüppelt und funktioniert nicht mit irgendwelche Trennzeichen. deshalb zuerst mit einer Schleife alle Kommas durch Leerzeichen tauschen und dann mit SREAD bearbeiten


  • danke euch beiden!


    Ich hab den code von panic mode 1:1 genauso ausprobiert und es funktioniert. Wenn ich jedoch meine von der Kamera ausgegebenen Werte in Rawdata[] als src[] gleichsetze, wird mir am SmartPad die Fehlermeldung angezeigt: "KSS01429 Zeichenkette zu lang, Maximum: 80"


    mein Code dazu:



    Ich denke es stört, dass das Array aus Rawdata 850 Stellen besitzen kann und deswegen die Zeichenkette zu groß ist. Wenn ich das src Array auf 850 ändere bekomme ich ebenfalls eine Fehlermeldung ("KSS01429 Zeichenkette zu lang, Maximum: 470"). Ändere ich das src Array ebenfalls auf 470, bekomme ich die gleiche Fehlermeldung wieder.


    Ich kann die ausgegeben Werte der Kamera nicht ändern und bin deswegen unschlüssig, wie ich meinen Kamera Array RawData[] ohne Fehler zerstückelt bekomme. Vielleicht indem ich nur die Stelle 42 bis 62 im RawData Array betrachte, aber wie stelle ich das an ? :/

    3 Mal editiert, zuletzt von Aggasan ()

  • Wenn Du doch ein CHAR-Array von 850er Länge hast, offensichtlich weisst, welche Zahlen Du brauchst (Zählst Du die Kommas?), dann kannst Du doch das Array einmal komplett durchgehen und die Zeichen zwischen den Kommata in einzelne, kurze CHAR-Arrays extrahieren, die dann viel besser und sinnvoller zu handeln sind. Warum sollte man das ganze Riesending denn auf einmal anfassen?

  • Zeile 8, fehlt Anfuhrungzeichen am Ende. Also RawData ist nur 63 Character lang, nicht 850.

    Zeile 9, nein, so geht es nicht... arrays mit einer Schleife kopieren - oder auch StrCopy() fuer CHAR arrays.

    Zeile 11, nein, Zeichenkette ist in RawData[]


    oder liber so, da Queldata format mehrere Trennzeichen hat:

    Code
    FOR i=1 to slen
    SWITCH RawData[i]
      CASE ",", "(", ")" 
        src[i]=" "
      DEFAULT
        src[i]=RawData[i]
      ENDSWTICH
    ENDFOR

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