Easter-Egg Befehle im MPR Part VII - Inter-Robot Talk

Moderator: MVogt

Easter-Egg Befehle im MPR Part VII - Inter-Robot Talk

Beitragvon Theo_Gottwald » 12. Feb 2017, 14:11

Letzte Woche habe ich mal alte Entwickler-Unterlagen nachgesehen von vor etlichen Jahren.
Und tatsächlich es gibt Befehle, die der MPR kann und die gar nicht in der Hilfe stehen.
Undokumentierte "Geheimbefehle".

Thema in Part VII: Inter-Robot Kommunikation.

Mit diesen Befehlen können mehrere zur gleichen Zeit laufende Robots untereinander kommunizieren.
Dabei gibt es zwei Befehlsgruppen: "Signal" und "Flag".

##########################################################################################
SIGNAL-GRUPPE
##########################################################################################

****************************
"csi.","c_create_alive_signal"
****************************

Erzeugt ein systemweites Signal, das von einem anderen Robot via "c_try_signal" abgefragt werden kann.
Signale werden automatisch entfernt, wenn der Robot, der das Signal gesetzt hat beendet wird.
Die Rückgabe ist der Name des Signals, falls ein Name angegeben wurde, dieser.
Falls kein Signal erstellt werden konnte, ist die Rückgabe ein Minuszeichen/Bindestrich "-".

****************************
"tsi.","c_try_alive_signal"
****************************

Fragt ob ein systemweites Signal gesetzt wurde. Rückgabe ist 1/0 je nach dem ob das Signal von irgendwoher gesetzt wurde oder nicht.

****************************
"rsi.","c_remove_alive_signal"
****************************

Entfernt ein systemweites Alive-Signal. Rückgbae ist 0/1 je nach dem ob das Signal entfernt werden konnte oder nicht.
ACHTUNG: Ein globales "Alive Signal" kann NUR von der robot-Instanz gelöscht werden, die es erzeugt hat.
Wenn der Robot sich beendet (egal wie) wird automatisch auch das "Alive Signal" gelöscht.

****************************
"wsi.","c_wait_alive_signal"
****************************

Wartet bis das angegebene Signal erzeugt wird oder verschwindet.
Es kann als weiterer Parameter ein Timeout angegeben werden.
Falls das Timeout erreicht wird, wird das ITO\ (Timeout-Flag) gesetzt, ansonsten ist die Rückgabe "1".
Falls auf das Verschwinden eines Signals gewartet wird, muss das Signal beim Aufruf des Befehls bereits vorhanden sein,
sonst ist die Bedingung sofort erfüllt.

Beispiele:
Code: Alles auswählen
' Signalname "RUN", 10 Sekunden Timeout ob Signal erscheint
GRN\c_wait_alive_signal|RUN|10
ITO\
  MBX\Signal nicht erschienen!
ETO\


' Signalname "RUNX", 360 Sekunden Timeout ob Signal verschwindet
GRN\c_wait_alive_signal|!RUNX|360
ITO\
  MBX\Signal nicht verschwunden!
ETO\


##########################################################################################
FLAG-GRUPPE
##########################################################################################

****************************
"csf.","c_create_signal_flag"
****************************

Erzeugt ein systemweites Flag, das von einem anderen Robot via "c_try_signal_flag" abgefragt werden kann.
Anders als Signale, werden Flags nicht automatisch entfernt, wenn der Robot, der das Flag gesetzt hat beendet wird.
Ausserdem kann ein Flag von jedem Robot gelöscht werden, nicht nur von dem, der es erzeugt hat.
Die Rückgabe ist der Name des Signals, falls ein Name angegeben wurde, dieser.
Falls kein Signal erstellt erden konnte, ist die Rückgabe ein Minuszeichen/Bindestrich "-".
Code: Alles auswählen
' Robot 1
GRN\csf.|Theo
TDL\500
GRN\rsf.|Theo
CAS\2
@

' Robot 2
GRN\wsf.|Theo
GRN\wsf.|!Theo
@



****************************
"tsf.","c_try_signal_flag"
****************************

Fragt ob ein systemweites Flag gesetzt wurde. Rückgabe ist 1/0 je nach dem ob das Flag von irgendwoher gesetzt wurde oder nicht.

****************************
"rsi.","c_remove_alive_signal"
****************************

Entfernt ein systemweites Flag-Signal. Rückgbae ist 0/1 je nach dem ob das Signal entfernt werden konnte oder nicht.
Ein globales "Flag Signal" kann von jeder Robot-Instanz gelöscht werden.
Ein "Flag Signal" ist permanent und besteht auch weiter, wenn der Robot sich beendet, der das "Flag Signal" gesetz hat.

****************************
"wsf.","c_wait_signal_flag"
****************************

Wartet bis das angegebene Flag Signal erzeugt wird oder verschwindet. Es kann als weiterer Parameter ein Timeout angegeben werden.
Falls das Timeout erreicht wird, wird das ITO\ (Timeout-Flag) gesetzt, ansonsten ist die Rückgabe "1".
Falls auf das Verschwinden eines Signals gewartet wird, muss das Signal beim Aufruf des Befehls bereits vorhanden sein, sonst ist die Bedingung sofort erfüllt.

Aber noch Mal der Hinweis: Die Befehls stehe nicht in der Hilfe und sind derzeit offiziell nicht vorhanden obwohl sie jeder MPR Nutzer sofort nutzen kann. Also dazu ist kein Update nötig die Befehle sind da schon drin und zwar seit Jahren.
Benutzeravatar
Theo_Gottwald
 
Beiträge: 291
Registriert: 03. Okt 2009, 08:57
Wohnort: Herrenstr.11 * 76706 Dettenheim

Zurück zu Package Robot

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast