[Olpc-uruguay] Consulta Programacion USB

Flavio Danesse fdanesse en gmail.com
Vie Sep 24 23:25:32 EDT 2010


*Hola.*

Como primera respuesta, te digo que nunca he hecho nada con los usb pero ya
quedo haciendo experimentos.
Click acá para bajarte
pyusb<https://sites.google.com/site/flaviodanesse/Home/pyusb-1.0.0-a0.zip?attredirects=0&d=1>que
es el paquete que necesitas para hacer esto con python, se instala
haciendo python setup.py install desde la terminal en el directorio
descomprimido.

Esto no viene en la xo, y no lo vas a poder instalar, al menos yo no pude,
tendrás que hacer algunos malabares para que funcione, pero vete
acostumbrando porque sin root no hay más remedio.

Lo otro que habría que investigar es como acceden los de robótica a los usb,
pregunta en "proyecto Butiá".

*Acá te dejo un ejemplo de acceso a las impresoras utilizando pyusb:*

import usb
import os
import sys
import time
import types

class Printer:

    '''
    Clase que maneja directamente el puerto USB, preguntando al hardware
conectado
    los parametros indicativos del mismo.
    '''

    def __init__(self, device, configuration, interface):

        if PRINTER_CLASS != interface.interfaceClass:
            raise TypeError, "Tipo de interface non valido!"

        self.__devhandle = device.open()
        self.__devhandle.setConfiguration(configuration)
        self.__devhandle.claimInterface(interface)
        self.__devhandle.setAltInterface(interface)

        self.__intf = interface.interfaceNumber
        self.__alt    = interface.alternateSetting

        self.__conf = (type(configuration) == types.IntType \
                        or type(configuration) == types.LongType) and \
                        configuration or \
                        configuration.value

        self.__bulkout    = 1
        self.__bulkin     = 0x82

    def __del__(self):

        try:
            self.__devhandle.releaseInterface(self.__intf)
            del self.__devhandle
        except:
            pass

    def getDeviceID(self, maxlen, timeout = 100):

        return self.__devhandle.controlMsg(requestType = 0xa1,
                                           request = 0,
                                           value = self.__conf - 1,
                                           index = self.__alt + (self.__intf
<< 8),
                                           buffer = maxlen,
                                           timeout = timeout)

    def getPortStatus(self, timeout = 100):

        return self.__devhandle.controlMsg(requestType = 0xa1,
                                           request = 1,
                                           value = 0,
                                           index = self.__intf,
                                           buffer = 1,
                                           timeout = timeout)[0]
    def softReset(self, timeout = 100):

        self.__devhandle.controlMsg(requestType = 0x21,
                                       request = 2,
                                       value = 0,
                                       index = self.__intf,
                                       buffer = 0)


    def write(self, buffer, timeout = 100):

        return self.__devhandle.bulkWrite(self.__bulkout,
                                          buffer,
                                          timeout)

    def read(self, numbytes, timeout = 100):

        return self.__devhandle.bulkRead(self.__bulkin,
                                         numbytes,
                                         timeout)

class usbDispositivo:

    '''
    Modelo de datos de un dispositivo USB (tipo VO)
    '''

    def __init__(self,dispositivo):

        self.archivo = ''
        self.clase = ''
        self.subClase = ''
        self.protocolo = ''
        self.idFabricante = ''
        self.idProducto = ''
        self.version = ''
        self.descripcion = ''
        self.archivo = dispositivo.filename
        self.clase = dispositivo.deviceClass
        self.subClase = dispositivo.deviceSubClass
        self.protocolo = dispositivo.deviceProtocol
        self.idFabricante = dispositivo.idVendor
        self.idProducto = dispositivo.idProduct
        self.version = dispositivo.deviceVersion

        try:
            self.descripcion = dispositivo.open().getString(1,30)
        except:
            self.descripcion = ''

    def getArchivo(self):
        return self.archivo

    def getClase(self):
        return self.clase

    def getSubClase(self):
        return self.subClase

    def getProtocolo(self):
        return self.protocolo

    def getIdFabricante(self):
        return self.idFabricante

    def getIdProducto(self):
        return self.idProducto

    def getVersion(self):
        return self.version

    def getDescripcion(self):
        return self.descripcion




El 24 de septiembre de 2010 22:19, Adrian Silveira <adance en gmail.com>escribió:

> Hola a Todos,
>        mi nombre es Adrián y participo del proyecto de extensión "Isaac,
> Nikola y Galileo van a la Escuela (INGE) y los estudiantes también" (INGE)
> de la Facultad de Ingeniería. Se trata de desarrollar actividades
> relacionadas con la física en escuelas de contexto crítico en Canelones y de
> esta forma mostrarles que hay otra profesión a la que pueden aspirar. Es una
> propuesta muy rica, interesante, alentadora, ambiciosa, esperamos que tenga
> un gran impacto en ellos.
>
> Como parte de nuestras actividades, queríamos mostrarles a escolares
> de cuarto año de escuela como controlar por software un ventilador enchufado
> a un puerto USB. Ellos lo armarían con los materiales que les damos (cable
> de datos usb, motor, cartulina) y luego enchufándolo a la ceibalita por el
> puerto usb se alimentaría de energía para funcionar. Lo que nos gustaría es
> poder desarrollar un programita bien sencillo, que haga de on/off de la
> corriente en el puerto usb para así enceder/apagar el ventilador.
>
> Agradezco en base a su experiencia si me pueden orientar en si es factible
> desarrollar un programa que haga esto y todo lo que me puedan aportar para
> hacerlo se los agradezco.
>
> Muchas Gracias
> Saludos
> Adrián
>
> --
> "Podría Estar Encerrado en una Cascara de Nuez y Sentirme Rey de un Espacio
> Infinito..."
>
> _______________________________________________
> Olpc-uruguay mailing list
> Olpc-uruguay en lists.laptop.org
> http://lists.laptop.org/listinfo/olpc-uruguay
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://lists.laptop.org/pipermail/olpc-uruguay/attachments/20100925/27988d16/attachment-0001.htm 


More information about the Olpc-uruguay mailing list