Dans les tutoriels jusqu'à présent, nous avons examiné les différentes boîtes disponibles dans Choregraphe. Vous pouvez réaliser une variété d'applications avec juste une boîte, mais vous pouvez faire encore plus en accédant directement à l'API à l'aide de Python.
Lors de la session technique du Pepper Tech Festival 2014, nous avons présenté la boîte Python comme l'une des façons d'utiliser Python. Ce tutoriel donne un aperçu du concept de boîte Python.
La version de Python utilisée dans Choregraphe est la 2.7. Pour les didacticiels de base sur Python, consultez http://docs.python.jp/2/tutorial/ et ainsi de suite. Reportez-vous également au document de l'API [Bumper sensor event detection #Document check](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) Veuillez vous référer à.
Ici, je vais créer une boîte Python vide avec Choregraphe et expliquer la boîte Python en regardant à l'intérieur.
Cliquez avec le bouton droit sur le diagramme de flux et ** sélectionnez Python ... dans le menu Nouvelle boîte **
Entrez ** Test comme nom [A] ** et cliquez sur le bouton ** [OK] [B] **
Cela créera une boîte Python.
Essayez de double-cliquer sur la boîte de test créée. L'éditeur de script s'ouvre avec un code similaire au suivant.
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
Le comportement de la boîte Python est défini par la classe MyClass
. La classe GeneratedClass
est automatiquement générée lorsque le comportement est exécuté et fournit des fonctions intégrées supplémentaires telles que définies dans la boîte.
Dans la classe MyClass
, vous devez définir une méthode qui correspond à l'entrée de la boîte. Ces noms sont définis comme ** onInput_ <nom de l'entrée> ** et sont appelés lorsque l'entrée est effectuée.
L'argument change en fonction du Type d'entrée. Par exemple, si vous créez une entrée nommée * myInput * qui est un simple événement (Bang),
def onInput_myInput(self):
pass
Dans le cas d'un nombre (Number), d'une chaîne (String) ou d'une dynamique (Dynamic),
def onInput_myNumberInput(self, p):
pass
def onInput_myStringInput(self, p):
pass
def onInput_myDynamicInput(self, p):
pass
Et il aura un argument. Dans le cas de Dynamic, il peut être appelé comme Bang (sans passer de valeur), il peut donc être défini comme suit.
def onInput_myDynamicInput(self, p = None):
pass
Par défaut, les entrées * onStart * et * onStop * sont définies, donc deux méthodes sont générées ici: ʻonInput_onStart et ʻonInput_onStop
.
La classe MyClass
définit les méthodes ʻonLoad et ʻonUnload
, qui sont appelées lorsque la boîte est chargée ou déchargée.
def onLoad(self):
#put initialization code here
pass
def onUnload(self):
#put clean-up code here
pass
Il est recommandé d'appeler ʻonUnload` avec la méthode équivalente à l'arrêt de la boîte (entrée onStop, etc.) car elle sera réinitialisée après l'arrêt de la boîte.
Puisque MyClass
hérite de GeneratedClass
, vous pouvez utiliser les fonctions intégrées fournies par GeneratedClass
dans votre script.
Une méthode correspondant à chaque sortie de la boîte est définie avec le nom **
Comme pour l'entrée, les arguments changent en fonction du type de sortie (http://qiita.com/Atelier-Akihabara/items/7a898f5e4d878b1ad889#3-2). Si vous définissez une sortie appelée * myBangOutput *, qui est un simple événement (Bang),
def onInput_onStart(self):
self.myBangOutput()
Vous pouvez transmettre une valeur à la destination de sortie en l'appelant sans argument, tel que, et dans le cas d'un nombre (Number), string (String) ou dynamic (Dynamic), en l'appelant avec un argument.
def onInput_onStart(self):
self.myNumberOutput(1000)
Vous pouvez également utiliser les paramètres spécifiés dans la boîte. Vous pouvez utiliser l'une des méthodes suivantes.
Comment utiliser la méthode getParameter
Pour obtenir le paramètre nommé * param1 *, appelez la méthode getParameter
comme suit:
value = self.getParameter("param1")
Comment remplacer la méthode setParameter
Vous pouvez également décrire ce qui se passe lorsqu'un paramètre change en remplaçant la méthode setParameter
dans la classe MyClass
.
def setParameter(self, parameterName, newValue):
if(parameterName == "param1"):
self.param1 = newValue
Vous pouvez également générer le journal depuis la boîte Python. Le journal de sortie peut être consulté avec la visionneuse de journal.
Méthode | une fonction |
---|---|
self.log("my message") | Sortie de message au niveau info |
self.logger.fatal("my message") | Sortie de message au niveau fatal |
self.logger.error("my message") | Sortie de message au niveau d'erreur |
self.logger.warning("my message") | Sortie de message au niveau d'avertissement |
self.logger.info("my message") | Sortie de message au niveau info |
self.logger.debug("my message") | Sortie de message au niveau de débogage |
L'instruction d'impression ne peut pas être sortie vers la visionneuse de journal. Vous devez utiliser ces méthodes.
En créant une boîte Python comme celle-ci, vous pouvez écrire du code Python directement dans la boîte. En appelant l'API directement dans ce code, vous pouvez faire des choses que la bibliothèque box ne couvre pas. Dans le futur, nous prévoyons de jeter un œil au concept de ces boîtes Python à travers des exemples concrets dans le tutoriel.
Recommended Posts