1

Beagleboard 用に Angstrom で書いている Python スクリプトで usb.find コマンドを正しく動作させようとしています。

これが私のコードです:

#!/usr/bin/env python

import usb.core 
import usb.util 
import usb.backend.libusb01 as libusb


PYUSB_DEBUG_LEVEL = 'debug'
# find our device
# Bus 002 Device 006: ID 1208:0815
#  idVendor           0x1208
#  idProduct          0x0815
# dev = usb.core.find(idVendor=0xfffe, idProduct=0x0001)
# iManufacturer           1 TOROBOT.com

dev = usb.core.find(idVendor=0x1208, idProduct=0x0815,
backend=libusb.get_backend() )

何が欠けているのかわかりませんが、ここに私が知っていることがあります。バックエンドを指定しないと、バックエンドが見つかりません。バックエンド「usb.backend.libusb01」を指定すると、次のエラーが発生します。

root@beagleboard:~/servo# ./pyServo.py
Traceback (most recent call last):
  File "./pyServo.py", line 17, in <module>
    dev = usb.core.find(idVendor=0x1208, idProduct=0x0815, backend=libusb.get_backend() )
  File "/usr/lib/python2.6/site-packages/usb/core.py", line 854, in find
    return _interop._next(device_iter(k, v))
  File "/usr/lib/python2.6/site-packages/usb/_interop.py", line 60, in _next
    return next(iter)
  File "/usr/lib/python2.6/site-packages/usb/core.py", line 821, in device_iter
    for dev in backend.enumerate_devices():
  File "/usr/lib/python2.6/site-packages/usb/backend/libusb01.py", line 390, in enumerate_devices
    _check(_lib.usb_find_busses())
  File "/usr/lib/python2.6/ctypes/__init__.py", line 366, in __getattr__
    func = self.__getitem__(name)
  File "/usr/lib/python2.6/ctypes/__init__.py", line 371, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: python: undefined symbol: usb_find_busses

これが正しく機能するために何が欠けていますか?

ありがとうございました。

4

1 に答える 1

0

Python、pyusb、libusb。それだけだと思います。もちろん、libc、ld-linux.so もそうですが、これらはデフォルトでシステムに組み込まれています。

シンボルが本当にそこにあるnm -D /path-to/libusb.soかどうかを確認してください。usb_find_busseslibusb が古くなっているか、何らかの形で特別にコンパイルされている可能性は常にあります。

ログを取得するかどうかを確認してください。

于 2014-04-17T10:23:15.317 に答える