aboutsummaryrefslogtreecommitdiff
path: root/content/Informatique
diff options
context:
space:
mode:
Diffstat (limited to 'content/Informatique')
-rw-r--r--content/Informatique/wiimote.rst12
-rw-r--r--content/Informatique/wiimote_fr.rst115
2 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>`_