[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