Asyncroner Prozess im Unterprogramm

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
roch
Beiträge: 1
Registriert: 11 Feb 2012, 10:46

Asyncroner Prozess im Unterprogramm

Beitrag von roch » 11 Feb 2012, 11:07

Guten Tag,
eine Frage zu RoboPro:
Ich möchte vom Hauptprogramm ein Unterprogramm aufrufen. Das Unterprogramm benötigt mit Wartebefehlen ca 10 Sekunden. Das Hauptprogramm soll aber sofort weiter laufen.
Wie kann ich das erreichen?

EIn Ansatz war: Im Unterprogramm einen neuen Prozess starten. Aber der scheint mir beendet zu werden, wenn das Unterprogramm beendet wird.

Hat jemand einen Tipp?

Gruß
Thomas

McDoofi
Beiträge: 80
Registriert: 12 Dez 2011, 15:01

Re: Asyncroner Prozess im Unterprogramm

Beitrag von McDoofi » 11 Feb 2012, 11:49

Hallo roch,

ich würde an deiner Stelle, da wo das Unterprogramm hinsoll ein =1 Befehl an eine Variable schicken und diese in einem anderen Prozess des Hauptprogramms abfragen. Wenn die Variable =1 ist, dann soll das Programm ins Unterprogramm verzweigen, ansonsten einfach weiter warten. Im Hauptprozess würde ich direkt danach noch einen =0 Befehl senden, dass das Unterprogramm nicht dauernd aufgerufen wird, und auch im Nebenprozess dann nach dem das Unterprogramm beendet wurde, warten bis die Variable =0 ist. (J/N-Elemente aus dem Verzweigungsenster).

MfG

McDoofi

Bild

P.S.: Ja, endlich funktioniert auch das Bild! :)
Zuletzt geändert von McDoofi am 11 Feb 2012, 12:06, insgesamt 4-mal geändert.

Benutzeravatar
Dirk Fox
ft:pedia-Herausgeber
Beiträge: 1845
Registriert: 01 Nov 2010, 00:49
Wohnort: Karlsruhe
Kontaktdaten:

Re: Asyncroner Prozess im Unterprogramm

Beitrag von Dirk Fox » 11 Feb 2012, 12:03

Hallo Thomas,

das geht mit RoboPro möglicherweise noch deutlich eleganter: Anstatt ein Unterprogramm aufzurufen, startest Du *zwei parallele* Hauptprogramme, und lässt eines davon z.B. den Wert einer Variable abfragen, der im anderen Hauptprogramm gesetzt wird - damit startest Du dann den zweiten Prozess.

Beste Grüße,
Dirk

Antworten