KRC2 Über Interrupt Programm zurücksetzen

  • Vermutlich ein einfaches Thema
    Will über einen Interrupt das programm rücksetzen.
    Schreib ich da im aufgerufenen Programm einfach >Resume>

    Einmal editiert, zuletzt von guste ()

  • Schritt für Schritt zum Roboterprofi!
  • Hallo
    Richtig. Das RESUME im aufgerufenen Interruptprogramm bewirkt den Rücksprung in die Aufrufebene.
    Hier mal ein Beispiel für ein solches Programm:


    interrupt off 1 ; Interrupt ausschalten
    brake ; Bewegung anhalten
    wait sec 0 ; Vorlaufzeiger anhalten
    resume ; Rücksprung


    Gruß,
    Olaf

  • Danke werd ich dann morgen mal testen.
    Will einfach daß das aktuelle Programm mit dem Interrupt abebrochen wird.
    So wie unter // Programm zurückstzen (taste Zitter 8)


    Gruß Guste

  • Ähh...ich glaube das geht nicht, wie von OHuuck beschrieben. Hier wird lediglich ein Interruptprogramm ausgeführt, welches ein Unterprogramm abbricht. Dabei wird aber nicht das Hauptprogramm zurückgesetzt!
    Habe jetzt gerade keine Zeit. Falls ich nacheher noch Zeit habe poste ich mal was.

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Könnte so gehen. Kann's nicht testen - Hab keinen Robi da.


    Hauptprogramm: $IN[1] soll das Programm zuruecksetzen

    Code
    INTERRUPT DECL 10 WHEN $IN[1] DO PRG_RESET() ;Interrupt deklarieren: Wenn Eingang 1 dann rufe Programm PRG_RESET auf
    WAIT FOR NOT $IN[1] ; Sicherstellen, das Interrupt-Bedingung nicht gegeben!
    INTERRUPT ON 10  ; Interrupt einschalten


    Das Interruptprogramm (setzt FLAG[1], welcher später im Submit abgefragt wird)

    Code
    DEF PRG_RESET()
    INTERRUPT OFF 10 ; Interrupt ausschalten um Mehrfachaufruf zu verhindern
    BRAKE; Bewegung anhalten
    $FLAG[1]=TRUE ;Merker setzen für "Programm zuruecksetzen" 
    WAIT FOR FALSE ;False wird nie true, Programm läuft nicht weiter
    END


    Im Submit (Irgendwo im LOOP...ENDLOOP):



    Evtl. noch ein wenig ausschmücken...

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Dann schreib mal, wenn's geklappt hat. Hab ich so aus'm Bauch raus gecoded. Wie gedagt, ob's so klappt weiß ich nicht.

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • So wie's der Polterer vorschlägt wird es wohl auch funktionieren, aber der erste Ansatz funktioniert ebenso. Wurde von mir schon in mehreren Anlagen (denke mal dürften deutlich über 100 sein) erfolgreich eingesetzt.
    Entscheidend ist dabei wie man das Hauptprogramm aufbaut:
    - Prozedur verwenden wie von OHuuck skizziert.
    - Endlosschleife vor der man den Interrupt für den Reset deklariert,
    - in dieser Endlosschleife ruft man nun das eigentliche Hauptprogramm auf, und fertig.
    Mir ist diese Lösung lieber, da sie ohne globale Variable mit 'Seiteneffekten', die im Submit ausgelöst werden auskommt.

  • Hermann: Interessant. Aber ich hab's nicht verstanden. Könntest du das noch mal genauer erklären?
    Führst du den Resetbefehl CWRITE($CMD,STAT,MODE,"RESET 1") im Interrupt-Programm aus?

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

    Einmal editiert, zuletzt von IrrerPolterer ()

  • Ahhh. Hab's kapiert. Einfach aber wirkungsvoll. :applaus:

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Also hier für die Begriffsstutzigen :zwink: (hab' ich's so schlecht erklärt?)


  • ...

    Zitat

    ; falls man fähig ist sowas zu programmieren:


    ??? :denk: ???

  • @titan72: Ich glaube er mein die Grundstellungsfahrt...ist ja nicht immer so einfach.

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Jo genau,
    man sieht oder hört manchmal von so seltsamen Dingen die sich Grundstellungsfahrt nennen, und beim näheren Hinsehen dann eher Crashfahrt oder Garnichtfahrt heissen sollten. :mrgreen: War halt etwas Ironie oder Sarkasmus dabei, war niemand persönlich gemeint.

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