On Fri, Jan 27, 2012 at 9:58 PM, Xiaofan Chen <xiaof...@gmail.com> wrote:
>>> It seems that this issue has been reported before.
>>> http://comments.gmane.org/gmane.comp.python.pyusb.user/386
>>>
> As mentioned in that thread, the problem is with
> the enumeration codes.
>
> # implementation of libusb 0.1.x backend
> class _LibUSB(usb.backend.IBackend):
>    @methodtrace(_logger)
>    def enumerate_devices(self):
>        _check(_lib.usb_find_busses())
>        _check(_lib.usb_find_devices())
>        bus = _lib.usb_get_busses()
>        while bool(bus):
>            dev = bus[0].devices
>            while bool(dev):
>                yield dev[0]
>                dev = dev[0].next
>            bus = bus[0].next
>
> The problem is that under Mac OS X, bool(bus)
> returns False.

Hmm, that analysis is not correct. The issue is actually
bool(dev) returns false.

mymacmini:~ xiaofanc$ python
Python 2.7.1 (r271:86832, Jul 31 2011, 19:30:53)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import usb.core
i>>> import usb.util
>>> import usb.backend.libusb01
>>> usbe=usb.backend.libusb01.get_backend()
>>> usbe
<usb.backend.libusb01._LibUSB object at 0x103a04ed0>
>>> libusb=usb.backend.libusb01._lib
>>> libusb
<CDLL '/usr/local/lib/libusb.dylib', handle 1037d6160 at 1039f85d0>
>>> libusb.usb_find_busses()
2
>>> libusb.usb_find_devices()
12
>>> busses=libusb.usb_get_busses()
>>> print busses
<usb.backend.libusb01.LP__usb_bus object at 0x1039987a0>
>>> print bool(busses)
True
>>> print busses.contents
<usb.backend.libusb01._usb_bus object at 0x103998950>
>>> dev=busses[0].devices
>>> dev
<usb.backend.libusb01.LP__usb_device object at 0x1039989e0>
>>> print bool(dev)
False
>>> busses=busses[0].next
>>> busses
<usb.backend.libusb01.LP__usb_bus object at 0x103998c20>
>>> print bool(busses)
True
>>> dev=busses[0].devices
>>> print bool(dev)
False
>>> busses=busses[0].next
>>> print bool(busses)
False


Under Ubuntu Linux 11.04, which uses libusb-0.1
legacy, it seems to work fine.

mcuee@GX620Ubuntu:~/Desktop/build/pyusb/pyusb$ python
Python 2.7.2+ (default, Oct  4 2011, 20:03:08)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import usb.core
>>> import usb.util
>>> import usb.backend.libusb01
>>> usbe=usb.backend.libusb01.get_backend()
>>> usbe
<usb.backend.libusb01._LibUSB object at 0xb73a732c>
>>> libusb=usb.backend.libusb01._lib
>>> libusb
<CDLL 'libusb-0.1.so.4', handle 9b8db78 at b73a418c>
>>> libusb.usb_find_busses()
5
>>> libusb.usb_find_devices()
10
>>> busses=libusb.usb_get_busses()
>>> print busses
<usb.backend.libusb01.LP__usb_bus object at 0xb7431734>
>>> print bool(busses)
True
>>> print busses.contents
<usb.backend.libusb01._usb_bus object at 0xb743165c>
>>> dev=busses[0].devices
>>> print dev
<usb.backend.libusb01.LP__usb_device object at 0xb74316ec>
>>> print bool(dev)
True


-- 
Xiaofan

------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
pyusb-users mailing list
pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to