Name des angewählten Progamms auslesen

  • Hallo Zusammen,


    Ich würde gerne im Submitinterpreter eine globale Variable auf True setzen wenn ein bestimmtest Programm angewählt ist. Dazu würde ich eben einfach den Namen des Programmes mit einem Char-Array vergleichen lassen. Allerdings habe ich keine Ahnung wie ich auf den Programmnamen zugreifen kann. Jemand eine Idee?


    Dank und Gruss
    lambert

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


    schau mal ins Handbuch, wo die ganzen Systemvariablen aufgelistet sind. (Neulich hat die hier auch jemand als PDF reingestellt.)
    Dort gibt es u.a. eine Variable $PRO_NAME1.
    Moeglicherweise steht da drin, was Du suchst.


    Gruss, Dirk.

  • Wenn man den PRO_NAME im Submit ausliest (Interpreter 1), bekommt man als Ergebnis "SUB.SPS" oder den Sub den man verwendet. Um den Programmnamen im Interpreter 0 zu bekommen muß man ihn dort abfragen.
    Mir ist es zumindestens beim ersten mal nicht gelungen vom Submit den PRO_NAME "CELL.SRC" oder "MAIN.SRC" zu bekommen.
    Vielleicht kann man über den Submit einen Interrupt der Global ist aufrufen, der dies für einen erledigt. Ist der Rückgabewert "" oder ungültig ist auf jeden Fall ein Programm angewählt, in dem der Globale Interrupt nicht verwendet wird.

  • Hallo Robotnik,


    ich habe sowas änliches schon mal realisiert.
    Dazu hatte ich im Programm einen Interrupt auf "$PRO_MOVE" (Programmbewegung aktiv) declariert.
    Darin wurde der Wert von "$PRO_IP.NAME[]" in eine globale Variable kopiert und diese danach ausgewertet.


    Ich hoffe das hilft dir weiter.


    Gruß notime

    Kontrolle ist eine Illusion, denn niemand weiss was als nächstes passiert.

  • Hallo,


    Also ich habs jetzt so gemacht wie Thilbi empfolen hat. Das funktioniert zumindest sicher. Wäre mir nur lieber gewesen es alleine durchs anwählen schon zu erfahren. So muss ich ja zwangsläufig auch schon starten.


    Denoch Danke für die Lösungen,
    lambert

  • Hallo,


    also es gibt ja 3 verschiedene $PRO_NAME[] variablen. $PRO_NAME[] (ohne nummer) zeigt immer den programm namen des interpreters an, in dem sie abgefragt wird.


    Aber $PRO_NAME0[] und $PRO_NAME1[] sollten immer den Programmnamen des ersten bzw. zweiten Interpreters liefern, egal von wo man sie abfragt.


    greets

  • Abfrage, ob CELL aktiv ist...
    So funktioniert die Sache beim KRC4...
    im $config.dat :
    DEFDAT $CONFIG
    DECL CHAR PROG_NAME[32]
    DECL STATE_T STATUS
    DECL INT OFFSET
    ENDDAT
    und im sps.sub :
    IF $PRO_ACT THEN
    SWRITE(PROG_NAME[], STATUS, OFFSET, "%s", $PRO_IP1.NAME[])
    IF ((PROG_NAME[5]=="C") AND (PROG_NAME[6]=="E") AND (PROG_NAME[7]=="L") AND (PROG_NAME[8]=="L")) THEN
    $OUT[40]=TRUE
    ELSE
    $OUT[40]=FALSE
    ENDIF
    ENDIF

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