In den bisherigen Tutorials haben wir uns die verschiedenen in Choregraphe verfügbaren Boxen angesehen. Boxen allein können eine Vielzahl von Anwendungen ermöglichen, aber Sie können noch mehr tun, indem Sie direkt mit Python auf die API zugreifen.
In der technischen Sitzung des Pepper Tech Festival 2014 haben wir die Python-Box als eine der Möglichkeiten zur Verwendung von Python vorgestellt. Dieses Tutorial gibt einen Überblick über das Python-Box-Konzept.
Die in Choregraphe verwendete Python-Version ist 2.7. Grundlegende Python-Tutorials finden Sie unter http://docs.python.jp/2/tutorial/ usw. Weitere Informationen finden Sie im API-Dokument [Ereigniserkennung für Stoßfängersensor #Dokumentprüfung](http://qiita.com/Atelier-Akihabara/items/d87553893fe2caa26d67#%E3%83%89%E3%82%AD%E3 % 83% A5% E3% 83% A1% E3% 83% B3% E3% 83% 88% E3% 81% AE% E7% A2% BA% E8% AA% 8D) Siehe.
Hier werde ich eine leere Python-Box mit Choregraphe erstellen und die Python-Box erklären, während ich hineinschaue.
Klicken Sie mit der rechten Maustaste auf das Flussdiagramm und ** wählen Sie Python ... aus dem Menü New Box **
Geben Sie ** Test als Namen [A] ** ein und klicken Sie auf die Schaltfläche ** [OK] [B] **
Dadurch wird eine Python-Box erstellt.
Doppelklicken Sie auf das erstellte Testfeld. Der Skripteditor wird mit ähnlichem Code wie folgt geöffnet.
class MyClass(GeneratedClass):
def __init__(self):
GeneratedClass.__init__(self)
def onLoad(self):
#put initialization code here
pass
def onUnload(self):
#put clean-up code here
pass
def onInput_onStart(self):
#self.onStopped() #activate the output of the box
pass
def onInput_onStop(self):
self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
self.onStopped() #activate the output of the box
Das Verhalten der Python-Box wird durch die MyClass-Klasse definiert. Die GeneratedClass
-Klasse wird automatisch generiert, wenn das Verhalten ausgeführt wird, und bietet zusätzliche integrierte Funktionen, wie in der Box definiert.
In der Klasse "MyClass" müssen Sie eine Methode definieren, die der Eingabe der Box entspricht. Diese Namen sind als ** onInput_
Das Argument ändert sich je nach Eingabetyp. Wenn Sie beispielsweise eine Eingabe mit dem Namen * myInput * erstellen, die ein einfaches Ereignis (Bang) ist,
def onInput_myInput(self):
pass
Im Fall einer Zahl (Number), einer Zeichenfolge (String) oder einer Dynamik (Dynamic),
def onInput_myNumberInput(self, p):
pass
def onInput_myStringInput(self, p):
pass
def onInput_myDynamicInput(self, p):
pass
Und es wird einen Streit geben. Im Fall von Dynamic kann es wie Bang aufgerufen werden (ohne einen Wert zu übergeben), daher kann es wie folgt definiert werden.
def onInput_myDynamicInput(self, p = None):
pass
Standardmäßig sind die Eingaben * onStart * und * onStop * definiert, daher werden hier zwei Methoden generiert: onInput_onStart
und onInput_onStop
.
Die Klasse "MyClass" definiert die Methoden "onLoad" und "onUnload", die aufgerufen werden, wenn die Box geladen oder entladen wird.
def onLoad(self):
#put initialization code here
pass
def onUnload(self):
#put clean-up code here
pass
Es wird empfohlen, "onUnload" mit der Methode aufzurufen, die dem Stoppen der Box entspricht (OnStop-Eingabe usw.), da diese nach dem Stoppen der Box neu initialisiert wird.
Da "MyClass" von "GeneratedClass" erbt, können Sie die integrierten Funktionen von "GeneratedClass" in Ihrem Skript verwenden.
Eine Methode, die jeder Ausgabe in der Box entspricht, wird mit dem Namen **
Wie bei der Eingabe ändern sich die Argumente je nach Ausgabetyp (http://qiita.com/Atelier-Akihabara/items/7a898f5e4d878b1ad889#3-2). Wenn Sie eine Ausgabe mit dem Namen * myBangOutput * definieren, bei der es sich um ein einfaches Ereignis (Bang) handelt,
def onInput_onStart(self):
self.myBangOutput()
Sie können einen Wert an das Ausgabeziel übergeben, indem Sie ihn ohne Argument aufrufen, z. B. und im Fall einer Zahl (Zahl), Zeichenfolge (Zeichenfolge) oder dynamisch (Dynamisch), indem Sie ihn mit einem Argument aufrufen.
def onInput_onStart(self):
self.myNumberOutput(1000)
Sie können auch die im Feld angegebenen Parameter verwenden. Sie können eine der folgenden Methoden verwenden.
Verwendung der Methode "getParameter"
Um den Parameter mit dem Namen * param1 * abzurufen, rufen Sie die Methode getParameter
wie folgt auf:
value = self.getParameter("param1")
So überschreiben Sie die setParameter-Methode Sie können auch beschreiben, was passiert, wenn sich ein Parameter ändert, indem Sie die Methode "setParameter" in der Klasse "MyClass" überschreiben.
def setParameter(self, parameterName, newValue):
if(parameterName == "param1"):
self.param1 = newValue
Sie können das Protokoll auch über die Python-Box ausgeben. Das Ausgabeprotokoll kann mit dem Protokoll-Viewer angezeigt werden.
Methode | Funktion |
---|---|
self.log("my message") | Nachrichtenausgabe auf Info-Ebene |
self.logger.fatal("my message") | Nachrichtenausgabe auf schwerwiegender Ebene |
self.logger.error("my message") | Nachrichtenausgabe auf Fehlerebene |
self.logger.warning("my message") | Nachrichtenausgabe auf Warnstufe |
self.logger.info("my message") | Nachrichtenausgabe auf Info-Ebene |
self.logger.debug("my message") | Nachrichtenausgabe auf Debug-Ebene |
Die print-Anweisung kann nicht an den Log Viewer ausgegeben werden. Sie müssen diese Methoden verwenden.
Wenn Sie eine Python-Box wie diese erstellen, können Sie Python-Code direkt in die Box schreiben. Durch Aufrufen der API direkt in diesem Code können Sie Dinge tun, die in der Box-Bibliothek nicht behandelt werden. In Zukunft planen wir, das Konzept dieser Python-Boxen anhand konkreter Beispiele im Tutorial zu betrachten.
Recommended Posts