diff options
| author | Sébastien Dailly <sebastien@chimrod.com> | 2013-05-11 15:05:36 +0200 | 
|---|---|---|
| committer | Sébastien Dailly <sebastien@chimrod.com> | 2013-05-11 15:07:45 +0200 | 
| commit | e0036449187bcdb0ba6051c3dd7a0da2b85b9a3f (patch) | |
| tree | 4829ac8d91725c67eca5826a1587b23577b4d96f | |
| parent | ff7677d13a0037d65c1ac96aea4858d79eff87fb (diff) | |
Added translation for article about wiimote
| -rw-r--r-- | content/Informatique/wiimote.rst | 12 | ||||
| -rw-r--r-- | content/Informatique/wiimote_fr.rst | 115 | ||||
| -rw-r--r-- | content/images/wiican.png | bin | 0 -> 4327 bytes | 
3 files changed, 122 insertions, 5 deletions
| diff --git a/content/Informatique/wiimote.rst b/content/Informatique/wiimote.rst index 019d9f2..eb6641d 100644 --- a/content/Informatique/wiimote.rst +++ b/content/Informatique/wiimote.rst @@ -7,6 +7,8 @@ Controling the wiimote (I)  :date: 2009-03-11  :tags: Programmation, Wiimote, Python +:slug: controling-the-wiimote-i +:lang: en  Creating the plugin for wminput @@ -27,7 +29,7 @@ You can get it here :  About the code : -:: +.. code-block:: python          import wmplugin @@ -35,7 +37,7 @@ This import does not exist, but is created by wminput when executed. It provide  the connexion with the wminput core. Just put ( or link ) the script in the  wminput plugin path ( on my debian this is the /usr/lib/cwiid/plugins/ ) -:: +.. code-block:: python      def wmplugin_init(id, wiimote_arg):          wmplugin.set_rpt_mode(id, cwiid.RPT_IR | cwiid.RPT_BTN) @@ -56,7 +58,7 @@ you can get the signification of all the parameters here : `actions list  If we want to define new butons, we just have to name them in the first list,  the'll be accessible in the configuration file as plugin.[buton\_name] = ACTION -:: +.. code-block:: python      def wmplugin_exec(messages):          '''Wiimote callback managing method @@ -81,7 +83,7 @@ way for passing throught is to use global variables. But it is unelegant and  can cause problems if we want to use our code in imports. So we'ill use a list  as default parameter and let python save it as you can see here : -:: +.. code-block:: python      >>> def meth(a=[]):      ...     a.append(1) @@ -97,7 +99,7 @@ as default parameter and let python save it as you can see here :  So the ir\_sensor.get\_movement method is defined with each parameter we  want to save as an optional list -:: +.. code-block:: python      def get_movement(msg, _old_points=[], _old_position = [0, 0]):          return 0, 0 diff --git a/content/Informatique/wiimote_fr.rst b/content/Informatique/wiimote_fr.rst new file mode 100644 index 0000000..ca6ca65 --- /dev/null +++ b/content/Informatique/wiimote_fr.rst @@ -0,0 +1,115 @@ +.. -*- mode: rst -*- +.. -*-  coding: utf-8 -*- + +Controller la wiimote +##################### + + +:date: 2009-03-11 +:tags: Programmation, Wiimote, Python +:slug: controling-the-wiimote-i +:lang: fr +:logo: static/images/wiican.png +:summary: |abstract| + + +Création d'un plugin pour wminput +--------------------------------- + +Il existe de nombreux tutorials sur comment configurer cwiid, je voud laisse +les suivre pour obtenir un système fonctionnel pour la wiimote (vous pourrez +trouver des liens à la fin de cet article). Soyez sûr que la wiimote est +reconnue avant de continuer. + +|abstract| + +.. |abstract| replace:: +    Voici un code que l'on peut utiliser comme base pour la création de notre +    driver. Lancé en tant que main, il utilise pygame pour afficher les sources +    infrarouges captées par la wiimote, mais il peut également être utilisé +    comme plugin pour wminput (même s'il ne fait rien pour l'instant). + + +Vous pouvez le télécharger ici : +`wm\_control.py <http://www.chimrod.com/downloads/wiimote/ir_control_0.py>`_ +(Code disponible sous licence GPL 3+) + +Le code : + +.. code-block:: python + +        import wmplugin + +Cet import n'existe pas, mais est créé par wminput lorsque celui-ci est lancé. +Il fourni la connexion avec le cœur wminput. Il vous suffit de placer le script +dans le répertoire de plugin de wminput (sur ma debian il se situe dans +`/usr/lib/cwiid/plugins/`) + +.. code-block:: python + +    def wmplugin_init(id, wiimote_arg): +        wmplugin.set_rpt_mode(id, cwiid.RPT_IR | cwiid.RPT_BTN) +        return + +    def wmplugin_info(): +        return [],  +          [("X", wmplugin.REL | wmplugin.ABS, 1024, 0, 0, 0),  +           ("Y", wmplugin.REL | wmplugin.ABS, 768, 0, 0, 0)],  +        [] + +On instancie la wiimote ici et actions le mode InfraRouge. Le nom est choisi +par wminput si nous désirons pouvoir l'utiliser comme plugin. On déclare que le  +plugin retourne les coordonées X et Y dans un système de coordonées relative +(l'ensemble des paramètres sont disponibles ici : `actions list +<http://abstrakraft.org/cwiid/browser/trunk/wminput/action_enum.txt>`_) + +Si nous voulons définir de nouvons boutons, nous avons juste à les nommer dans +la première list, ils seront accessibles dans le fichier de configuration sous +le nom `plugin.[buton\_name] = ACTION` + +.. code-block:: python + +    def wmplugin_exec(messages): +        '''Wiimote callback managing method +        Recieves a message list, each element is different, see the libcwiid docs''' +        x = y = 0 + +        for msg in messages: +            if msg[0] == cwiid.MESG_IR: +                x, y = ir_sensor.get_movement(msg) +        return [], (x, y) + +Voici le cœur de notre driver. Le nom de la méthode est également imposé par +wminput, de même que le format de retour. Nous recevons en paramètres la liste +des messages reçus par la wiimote. + +Si nous avons défini des boutons, il nous faut retourner leur état ici. Il +s'agit jute d'un booléen indiquant si le bouton est préssé (`True`) ou non +(`False`). + +Cette méthode ne retourne aucun autre parametres, et cela nous pose problème +car nous avons besoin de sauvegarder l'état du curseur entre deux appels. J'ai +contourné le problème en utilisant des arguments par défaut à la fonction +`get_movement` pour pouvoir stocker l'environnement d'un appel à un autre : + +.. code-block:: python + +    def get_movement(msg, _old_points=[], _old_position = [0, 0]): +        return 0, 0 + +Cette méthode retourne la difference entre la précédente position du curseur et +la nouvelle : `(0, 0)` signifie que le curseur n'a pas bougé, `(-10, 0)` +représente un déplacement vers la gauche. + +Pour l'instant, le plugin ne bouge pas le curseur, et ne lie pas les résultats +envoyés par la wiimote, mais vous avez assez d'information pour créer votre +propre plugin pour controller la wiimote. Vous pouvez accéder aux méthodes de +cwiid pour activer les leds, mettre en marche les differents modes (infrarouge, +accéléromètre, vibration, …) et définir vos propres actions. + +Links : + +`Le projet cwiid <http://abstrakraft.org/cwiid/>`_ + +`Installer Cwiid ( Ubuntu Documentation +) <https://help.ubuntu.com/community/CWiiD>`_ diff --git a/content/images/wiican.png b/content/images/wiican.pngBinary files differ new file mode 100644 index 0000000..266f83a --- /dev/null +++ b/content/images/wiican.png | 
