[pyar] Pyusb + hid en linux

Marcos Wolff wmarcos en gmail.com
Jue Dic 16 15:21:02 ART 2010


Buenas gente,

Les cuento que como conseguí más información sobre el tema volví a postear
nuevamente todo más prolijo en el post:

http://permalink.gmane.org/gmane.org.user-groups.python.argentina/44372

Ahí están los fuentes del PIC que me pidió Adrían y las salidas de los
sniffers tanto en windows como en linux.

Por ahí ahora alguno me puede dar una mano más fácil.

Gracias a todos !
Marcos.

2010/12/15 Marcos Wolff <wmarcos en gmail.com>

> Hola Adrian! gracias por contestar .. te dejo un update de hasta donde
> llegue ayer
>
> este es el lsusb -vv 04d8:0020
>
> Bus 002 Device 062: ID 04d8:0020 Microchip Technology, Inc.
> Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               1.10
>   bDeviceClass            0 (Defined at Interface level)
>   bDeviceSubClass         0
>   bDeviceProtocol         0
>   bMaxPacketSize0        64
>   idVendor           0x04d8 Microchip Technology, Inc.
>   idProduct          0x0020
>   bcdDevice            1.00
>   iManufacturer           1 DZE
>   iProduct                2 CDI TEST v1.0
>   iSerial                 0
>   bNumConfigurations      1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength           41
>     bNumInterfaces          1
>     bConfigurationValue     1
>     iConfiguration          0
>     bmAttributes         0xc0
>       Self Powered
>     MaxPower              100mA
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass         3 Human Interface Device
>       bInterfaceSubClass      0 No Subclass
>       bInterfaceProtocol      0 None
>       iInterface              0
>         HID Device Descriptor:
>           bLength                 9
>           bDescriptorType        33
>           bcdHID               1.00
>           bCountryCode            0 Not supported
>           bNumDescriptors         1
>           bDescriptorType        34 Report
>           wDescriptorLength      32
>          Report Descriptors:
>            ** UNAVAILABLE **
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x81  EP 1 IN
>         bmAttributes            3
>           Transfer Type            Interrupt
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0008  1x 8 bytes
>         bInterval               1
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x01  EP 1 OUT
>         bmAttributes            3
>           Transfer Type            Interrupt
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0008  1x 8 bytes
>         bInterval              10
> Device Status:     0x0001
>   Self Powered
>
>
> y en el programa logré enviar datos pero recibo respuesta vacía :(  (el
> programa debería enviar 283 datos y recibir sus respectivas respuestas):
>
>
> #prueba.py
>
> import usb.core
>
> dev = usb.core.find(idVendor=1240,idProduct=32)
> if dev is None:
>     raise ValueError('Device not found')
>
> interface = dev.get_interface_altsetting()
> if dev.is_kernel_driver_active(interface.bInterfaceNumber) is True:
>         dev.detach_kernel_driver(interface.bInterfaceNumber)
>
> dev.set_configuration()
>
> msg = [0x01,0x03,0x00]
>
> print dev.write(1, msg, 0)
> ret = dev.read(1, 5, 0)
>
> while msg[1] < 0xEE :
>         msg[1]+=0x1
>         msg[2]+=0x1
>         print dev.write(1, msg, 0)
>         ret = dev.read(1, 5, 0)
>         print "mensaje: "
>         print msg
>         print "\nrespuesta: "
>         print ret
>
> ---- resultado ------------
>
>
> mensaje:
> [1, 3, 0]
>
> respuesta:
> array('B', [0, 0, 0, 0, 0])
> .
> .
> .
> .
> .
> mensaje:
> [1, 238, 235]
>
> respuesta:
> array('B', [0, 0, 0, 0, 0])
>
> en vb6 (que usa el driver HID) funciona :S no se bien por donde es que
> tendría que recibir los datos
>
> Alguna idea ? leer del otro endpoint (0x81) me resulta en un error de
> timeout
>
>
> Gracias !
> Marcos.
>
>
> 2010/12/14 Adrian Pardini <pardo.bsso en gmail.com>
>
> On 14/12/2010, Marcos Wolff <wmarcos en gmail.com> wrote:
>> [...]
>> > *usb.core.USBError: Pipe error*
>>
>> Hola, normalmente el Pipe error significa que el request no está
>> soportado por el dispositivo.
>>
>> [...]
>> > Estoy teniendo un inconveniente con pyusb y el manejo de un dispositivo
>> usb
>> > hid (en realidad es una placa hecha manual con un microcontrolador PIC
>> > 18F4550)
>> >
>> > A la cual bajo windows se comunican enviandole a través del driver HID 3
>> > bytes de información y este devuelve otros 3 bytes como respuesta.
>>
>> Podés subir a algún lado el código que corre en el pic para
>> chusmearlo? Tenés los fuentes o información sobre la aplicación en
>> windows? Fijate también si con lsusb -v -d vendor:product obtenés algo
>> consistente con lo que estás programando.
>>
>> salute
>>
>> --
>> Adrian.
>> http://ovejafm.com
>> http://elesquinazotango.com.ar
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20101216/9d0df1a9/attachment.html>


More information about the pyar mailing list