-1

考えられるすべての方法を試しましたが、このエラーを解決できませんでした。誰かこの問題を解決しましたか?

>>> import usb.core
>>> import usb.util
>>> dev=usb.core.find(idVendor=0x04D8)

私が得ているエラーは次のとおりです。

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    dev=usb.core.find(idVendor=0x04D8)
  File "C:\Python27\lib\site-packages\usb\core.py", line 1199, in find
    raise ValueError('No backend available')
ValueError: No backend available

そのような問題が表示されない前に、最近そのエラーが表示されています。ディレクトリ C:\Python27 に libusb0_x​​86.dll を含めようとしましたが、それでもエラーが表示されます。また、デバイス ドライバー用に libusb-win32 inf ウィザードをインストールしました。ここにいるPythonの専門家がこのエラーを手伝ってくれます。

4

2 に答える 2

-1

PC との USB 通信に PyUSB モジュールを使用するときはいつでも、PyUSB モジュールは libusb0.dll および libusb-1.0.dll ファイル (バックエンドとして機能する) をPATH environment variableおよび のC:\windows\System32場所でチェックし、USB デバイスとの通信を確立します。デバイスドライバーの作成に libusb-win32-wizard を使用しているため、libusb0.dll を使用します。実行プロセスは、次の DEBUG プログラムを使用して見つけることができます。

import os
os.environ['PYUSB_DEBUG'] = 'debug'
import usb.core
print list(usb.core.find(find_all=True))

Shellで上記のプログラムを実行すると、得られた出力は次のとおりです。

2016-03-26 11:41:44,280 ERROR:usb.libloader:'Libusb 1' could not be found
2016-03-26 11:41:44,280 ERROR:usb.backend.libusb1:Error loading libusb 1.0 backend
2016-03-26 11:41:44,280 ERROR:usb.libloader:'OpenUSB library' could not be found
2016-03-26 11:41:44,280 ERROR:usb.backend.openusb:Error loading OpenUSB backend
2016-03-26 11:41:44,280 INFO:usb.core:find(): using backend "usb.backend.libusb0"
2016-03-26 11:41:44,280 DEBUG:usb.backend.libusb0:_LibUSB.enumerate_devices()
2016-03-26 11:41:44,296 DEBUG:usb.backend.libusb0:_LibUSB.get_device_descriptor(<usb.backend.libusb0._usb_device object at 0x0200E530>)
2016-03-26 11:41:44,296 DEBUG:usb.backend.libusb0:_LibUSB.get_device_descriptor(<usb.backend.libusb0._usb_device object at 0x0200E5D0>)
2016-03-26 11:41:44,296 DEBUG:usb.backend.libusb0:_LibUSB.get_device_descriptor(<usb.backend.libusb0._usb_device object at 0x0200E6C0>)
2016-03-26 11:41:44,296 DEBUG:usb.backend.libusb0:_LibUSB.get_device_descriptor(<usb.backend.libusb0._usb_device object at 0x0200E7B0>)
2016-03-26 11:41:44,296 DEBUG:usb.backend.libusb0:_LibUSB.get_device_descriptor(<usb.backend.libusb0._usb_device object at 0x0200E8A0>)
2016-03-26 11:41:44,296 DEBUG:usb.backend.libusb0:_LibUSB.get_device_descriptor(<usb.backend.libusb0._usb_device object at 0x0200E990>)
2016-03-26 11:41:44,296 DEBUG:usb.backend.libusb0:_LibUSB.get_device_descriptor(<usb.backend.libusb0._usb_device object at 0x0200EA80>)
2016-03-26 11:41:44,296 DEBUG:usb.backend.libusb0:_LibUSB.get_device_descriptor(<usb.backend.libusb0._usb_device object at 0x0200EB70>)
[<DEVICE ID 046d:c05a on Bus 000 Address 001>, <DEVICE ID 046d:c31d on Bus 000 Address 002>, <DEVICE ID 046d:c31d on Bus 000 Address 003>, <DEVICE ID 046d:c31d on Bus 000 Address 004>, <DEVICE ID 04d8:feaa on Bus 000 Address 005>, <DEVICE ID 046d:082b on Bus 000 Address 006>, <DEVICE ID 046d:082b on Bus 000 Address 007>, <DEVICE ID 046d:082b on Bus 000 Address 008>]

したがって、ここでfind_all=Trueusb.core.find()関数のように引数を指定したため、PC に接続されているすべてのデバイス ID が返されます。また、最初の 4 行では、libusb0.dll を使用する lib-usb-win32-wizard を使用しているため、エラーが発生します。5 行目でINFO:usb.core:find(): using backend "usb.backend.libusb0"は、USB デバイスとの通信に libusb0.dll を使用していることを意味します。

于 2016-04-06T05:56:06.923 に答える