2012-12-08 2 views
20

저는 파이썬 응용 프로그램 인터페이스를 USB를 통해 NFC 장치와 연결하려고합니다. 가장 좋은 옵션은 pyusb 인 것처럼 보이지만 libusb 백엔드에 연결할 수는 없습니다. 내가Pyusb on windows - 백엔드가 없음

ValueError: No backend available

내가 스택 추적을 검토 한 결과를 얻고 유지하고 usb/backend/libusb10.py은 (pyusb의 일부입니다) 백엔드로 사용 libusb-1.0.dll를로드 할 것을 찾았지만 그것을 찾을 수 없습니다. 내 경로에있는 것이 아니라 내 컴퓨터에있는 것이 아닙니다!

libusb-win32 (http://libusb.org/wiki/libusb-win32)를 설치했지만 그 결과 디렉토리에는 libusb0.dll 만있는 것 같습니다. libusb-1.0.dll은 어디에 있습니까?!

나도 어디 유사한 문제가 최근에 내가 개발하고 USB 장치로 얘기하려고했다

답변

6

윈도우 7에서 작동하도록 pyusb를 얻기 위해 그 DLL, 또는 다른 제안을 얻는 방법을 알고 싶어요 . 나는 libusb-1.0.dll을 찾기 위해 웹을 샅샅이 뒤졌고 행운이 없었다. 소스 코드를 찾았지만 설치할 준비가 된 것은 없습니다. 결국 libusb-win32 바이너리 인 libusb0.dll을 설치하게되었습니다.

PyUSB는 libusb-1.0, libusb0 및 openUSB 백엔드를 검색합니다.

libusb0.dll이 이미 내 시스템에 있었지만, 여전히 올바르게 설정되지 않았습니다. PyUSB가 작동하지 않았습니까?

필터 드라이버 및 INF 마법사를 설치하기 위해 제공된 GUI 도구를 사용하여 드라이버를 다운로드하고 설치하려면 here 지침을 따르십시오. INF 마법사를 실행하기 전까지는 작동하지 않았습니다.

저는 프로그래밍에 익숙하지 않습니다.이 모든 문자열을 함께 사용하는 것은 분명한 문서/예제가 부족하다는 것을 알게되었습니다.

+0

예, inf-wizard를 실행하고 시작할 장치를 선택하십시오. – jonincanada

+0

@jonincanada 그것은 내가 Garrett Hyde와 같은 문제를 겪었던 것 같습니다. 하지만 차이점은 파일을 다운로드하고 압축 해제 한 다음 (libusb1.0.20) dll 파일 (특히 libusb-1.0.dll)을 복사하여 시스템 32에 복사 한 것입니다. 그 다음 libusb-1.lib를 python34/Lib에 복사했습니다. 그리고 여전히 '백엔드 없음'오류가 있으므로 문제 해결을 도와 줄 수 있습니까? – Socre

4

Windows XP 시스템에서 Python 2.6.5, libusb-win32-device.bin-0.1.12.1pyusb-1.0.0-a0을 사용 중이며 ValueError: No backend available을 계속 수신합니다.

이 문제에 대한 웹상의 도움이 전혀 없었기 때문에 ctypes util.pyPath 변수를 사용하여 라이브러리 파일을 찾는데 많은 시간을 보냈습니다. 내 pathwindows\system32이없고 PYUSB에서 라이브러리를 찾지 못했습니다. path 변수를 업데이트했는데 이제 USB가 작동합니다.

+0

이것은 XP에 관한 것입니다. (그리고 OP가 Re : Windows 7을 묻고 있습니다) 이것은 주석으로서 더 좋을 수도 있습니다. –

+0

현재 폴더를'PATH'에 추가했습니다. – Liviu

+0

그건 속임수 야! libusb-1.0.dll을 system32 디렉토리에 넣기 위해 필요합니다. 시스템 (32 비트 또는 64 비트)에 맞는지 확인하십시오 – user1495323

0

PYUSB를 사용하여 USB를 통해 NFC 장치에 연결하려면 해당 장치의 백엔드를 설치해야합니다. 내가 libusb 장치 이외의 장치에 대한 백엔드가 있다고 생각하지 않습니다.

백엔드를 빌드하려면. 장치의 드라이버 (.sys 파일)를 알아야하므로 장치의 기능을 표시하는 래퍼 DLL을 작성할 수 있습니다. 당신의 DLL은 PID & VID, 장치를 여는 또 다른 방법 및 데이터를 보내는 또 다른 방법 등등을 기반으로하는 장치를 찾는 방법을 가져야합니다 ...

1

"libusb API에는 두 가지 버전이 있습니다. libusb-1.0 API 및 그 이전의 이전 버전 libusb-0.1. " (http://www.libusb.org/) "libusb-win32은 USB 라이브러리 libusb-0.1의 Microsoft Windows 운영 체제 포트입니다."same page (최신 버전의 tarball을 다운로드하십시오) (1.0.9은 현재 버전 임)은 libusb-1.0과 같으며 폴더 Win32을 찾을 수 있습니다. libusb-1.0.dll과 함께 게임을 즐기실 수 있습니다! 그것을 구축 할 수도 있습니다 : http://www.libusb.org/wiki/windows_backend.

편집 당신은 최신 버전의 소스가 2014년 6월 15일에서 동안 타르가, 2012 년 이후 (/ http://sourceforge.net/projects/libusb/files/libusb-1.0/에서 다운로드)를 구축해야합니다. 이런 경우에

0

은 :

내가 Windows에서이 시도하지 않은하지만 난 Macintosh에서이 오류를 회피 DYLD_LIBRARY_PATH 경로를 설정했다. 이 변수를 설정 여부에

export DYLD_LIBRARY_PATH=/opt/local/lib

논의 here이다.

10

libusb-win32-devel-filter-1.2.6.0.exe을 다운로드하여 설치하십시오. 그것은 작동해야합니다.

+0

감사합니다. 내 Crazyflie에서 일하면서 32 비트 conda로 돌아 가지 않아도됩니다. –