<b>Hola.</b><br><br>Como primera respuesta, te digo que nunca he hecho nada con los usb pero ya quedo haciendo experimentos.<br><a href="https://sites.google.com/site/flaviodanesse/Home/pyusb-1.0.0-a0.zip?attredirects=0&amp;d=1">Click acá para bajarte pyusb</a> que es el paquete que necesitas para hacer esto con python, se instala haciendo <span style="color: rgb(153, 0, 0);">python setup.py install</span> desde la terminal en el directorio descomprimido.<br>
<br>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.<br><br>Lo otro que habría que investigar es como acceden los de robótica a los usb, pregunta en &quot;proyecto Butiá&quot;.<br>
<br><b style="color: rgb(0, 0, 153);">Acá te dejo un ejemplo de acceso a las impresoras utilizando pyusb:</b><br><br><span style="color: rgb(153, 0, 0);">import usb</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">import os</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">import sys</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">import time</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">import types</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">class Printer:</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">    &#39;&#39;&#39;</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    Clase que maneja directamente el puerto USB, preguntando al hardware conectado</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">    los parametros indicativos del mismo.</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    &#39;&#39;&#39;</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">    def __init__(self, device, configuration, interface):</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        if PRINTER_CLASS != interface.interfaceClass:</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">            raise TypeError, &quot;Tipo de interface non valido!&quot;</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        self.__devhandle = device.open()</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        self.__devhandle.setConfiguration(configuration)</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        self.__devhandle.claimInterface(interface)</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        self.__devhandle.setAltInterface(interface)</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        self.__intf = interface.interfaceNumber</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        self.__alt    = interface.alternateSetting</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        self.__conf = (type(configuration) == types.IntType \</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">                        or type(configuration) == types.LongType) and \</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">                        configuration or \</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">                        configuration.value</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        self.__bulkout    = 1</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        self.__bulkin     = 0x82</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    def __del__(self):</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        try:</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">            self.__devhandle.releaseInterface(self.__intf)</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">            del self.__devhandle</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        except:</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">            pass</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    def getDeviceID(self, maxlen, timeout = 100):</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        return self.__devhandle.controlMsg(requestType = 0xa1,</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">                                           request = 0,</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">                                           value = self.__conf - 1,</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">                                           index = self.__alt + (self.__intf &lt;&lt; 8),</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">                                           buffer = maxlen,</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">                                           timeout = timeout)</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    def getPortStatus(self, timeout = 100):</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        return self.__devhandle.controlMsg(requestType = 0xa1,</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">                                           request = 1,</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">                                           value = 0,</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">                                           index = self.__intf,</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">                                           buffer = 1,</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">                                           timeout = timeout)[0]</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">    def softReset(self, timeout = 100):</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        self.__devhandle.controlMsg(requestType = 0x21,</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">                                       request = 2,</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">                                       value = 0,</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">                                       index = self.__intf,</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">                                       buffer = 0)</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    def write(self, buffer, timeout = 100):</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        return self.__devhandle.bulkWrite(self.__bulkout,</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">                                          buffer,</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">                                          timeout)</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    def read(self, numbytes, timeout = 100):</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        return self.__devhandle.bulkRead(self.__bulkin,</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">                                         numbytes,</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">                                         timeout)</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">class usbDispositivo:</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    &#39;&#39;&#39;</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    Modelo de datos de un dispositivo USB (tipo VO)</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">    &#39;&#39;&#39;</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    def __init__(self,dispositivo):</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        self.archivo = &#39;&#39;</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        self.clase = &#39;&#39;</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        self.subClase = &#39;&#39;</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        self.protocolo = &#39;&#39;</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        self.idFabricante = &#39;&#39;</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        self.idProducto = &#39;&#39;</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        self.version = &#39;&#39;</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        self.descripcion = &#39;&#39;</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        self.archivo = dispositivo.filename</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        self.clase = dispositivo.deviceClass</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        self.subClase = dispositivo.deviceSubClass</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        self.protocolo = dispositivo.deviceProtocol</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        self.idFabricante = dispositivo.idVendor</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        self.idProducto = dispositivo.idProduct</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        self.version = dispositivo.deviceVersion</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        try:</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">            self.descripcion = dispositivo.open().getString(1,30)</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">        except:</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">            self.descripcion = &#39;&#39;</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    def getArchivo(self):</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        return self.archivo</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    def getClase(self):</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        return self.clase</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    def getSubClase(self):</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        return self.subClase</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    def getProtocolo(self):</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        return self.protocolo</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    def getIdFabricante(self):</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        return self.idFabricante</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    def getIdProducto(self):</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        return self.idProducto</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    def getVersion(self):</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        return self.version</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);">    def getDescripcion(self):</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);">        return self.descripcion</span><br><br><br><br><br><div class="gmail_quote">El 24 de septiembre de 2010 22:19, Adrian Silveira <span dir="ltr">&lt;<a href="mailto:adance@gmail.com">adance@gmail.com</a>&gt;</span> escribió:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><blockquote>Hola a Todos,<br>
           mi nombre es Adrián y participo del proyecto de extensión &quot;Isaac, Nikola y Galileo van a la Escuela (INGE) y los estudiantes también&quot; (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.<br>



    <br>
    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.<br>



    <br>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.<br>
    <br>Muchas Gracias<br>
    Saludos<br>Adrián </blockquote>-- <br><font color="#888888">&quot;Podría Estar Encerrado en una Cascara de Nuez y Sentirme Rey de un Espacio Infinito...&quot;<br>
</font><br>_______________________________________________<br>
Olpc-uruguay mailing list<br>
<a href="mailto:Olpc-uruguay@lists.laptop.org">Olpc-uruguay@lists.laptop.org</a><br>
<a href="http://lists.laptop.org/listinfo/olpc-uruguay" target="_blank">http://lists.laptop.org/listinfo/olpc-uruguay</a><br>
<br></blockquote></div><br>