
pywws.device_pyusb
******************

Interface USB de bas niveau de la station météo, utilisant PyUSB.


Introduction
============

Ce module gère la communication de bas niveau avec la station météo
via la bibliothèque PyUSB . Un module alternatif,
*pywws.device_cython_hidapi*,  utilise la bibliothèque cython-hidapi.
Le choix du module à utiliser dépend de la disponibilité des
bibliothèques selon votre ordinateur.

Les utilisateurs de versions récentes de Mac OS n'ont pas le choix. Le
système d'exploitation rend très difficile l'accès direct aux
périphériques HID (comme la station météo), de sorte que la
bibliothèque "hidapi" doit être utilisée. "Cython-hidapi" est une
interface Python pour cette bibliothèque.

Les utilisateurs de OpenWRT et plateformes embarquées Linux similaires
ne seront probablement pas en mesure d'installer "cython-hidapi" et
sont donc contraints d'utiliser "libusb" et son interface Python
"PyUSB".


Installation
============

Certains de ces logiciels peuvent être déjà installés sur votre
machine, il faut vérifier avant de télécharger les sources et les
compiler vous-même.

1. Installer libusb et PyUSB.

   Ceux-ci devraient être disponibles sous forme de paquets pour votre
   système d'exploitation, mais leurs noms peuvent varier. Par
   exemple, sous Ubuntu Linux:

      sudo apt-get install libusb-0.1 python-usb

   Sur certains systèmes embarqués sous Linux:

      ipkg install libusb py25-usb


Vérification
============

Exécute "TestWeatherStation.py" avec un niveau de message accru  de
sorte qu'il indique quel module d'accès au dispositif USB est utilisé:

   python TestWeatherStation.py -vv
   18:28:09:pywws.WeatherStation.CUSBDrive:using pywws.device_pyusb
   0000 55 aa ff ff ff ff ff ff ff ff ff ff ff ff ff ff 05 20 01 41 11 00 00 00 81 00 00 0f 05 00 e0 51
   0020 03 27 ce 27 00 00 00 00 00 00 00 12 02 14 18 27 41 23 c8 00 00 00 46 2d 2c 01 64 80 c8 00 00 00
   0040 64 00 64 80 a0 28 80 25 a0 28 80 25 03 36 00 05 6b 00 00 0a 00 f4 01 12 00 00 00 00 00 00 00 00
   0060 00 00 49 0a 63 12 05 01 7f 00 36 01 60 80 36 01 60 80 bc 00 7b 80 95 28 12 26 6c 28 25 26 c8 01
   0080 1d 02 d8 00 de 00 ff 00 ff 00 ff 00 00 11 10 06 01 29 12 02 01 19 32 11 09 09 05 18 12 01 22 13
   00a0 14 11 11 04 15 04 11 12 17 05 12 11 09 02 15 26 12 02 11 07 05 11 09 02 15 26 12 02 11 07 05 11
   00c0 09 10 09 12 12 02 02 12 38 12 02 07 19 00 11 12 16 03 27 12 02 03 11 00 11 12 16 03 27 11 12 26
   00e0 21 32 11 12 26 21 32 12 02 06 19 57 12 02 06 19 57 12 02 06 19 57 12 02 06 19 57 12 02 06 19 57


API
===

-[ Classes ]-

+------------+--------------------------------------------------------------------------------------------+
| "USBDevice | Accès de bas niveau au périphérique USB via la bibliothèque PyUSB.                         |
+------------+--------------------------------------------------------------------------------------------+

class class pywws.device_pyusb.USBDevice(idVendor, idProduct)

   Accès de bas niveau au périphérique USB via la bibliothèque PyUSB.

   Paramètres:
      * **idVendor** (*int*) -- the USB >>``<<vendor ID` number, for
        example 0x1941.

      * **idProduct** (*int*) -- the USB >>``<<product ID` number, for
        example 0x8021.

   read_data(size)

      Reçoit des données de l'appareil.

      Si la lecture échoue pour une raison quelconque, une exception
      "IOError" est levée.

      Paramètres:
         **size** (*int*) -- the number of bytes to read.

      Retourne:
         the data received.

      Type retourné:
         list(int)

   write_data(buf)

      Envoyer donnée au service

      Si l'écriture échoue pour une raison quelconque, une exception
      "IOError" est levée.

      Paramètres:
         **buf** (*list(int)*) -- the data to send.

      Retourne:
         success status.

      Type retourné:
         bool
