PyUSB не распознает конкретное USB-устройство

Я пишу программное обеспечение на питоне для обнаружения космических мюонов с помощью детектора излучения, подключенного к USB.

Я пытаюсь использовать модуль PyUSB для взаимодействия с устройством, но PyUSB не находит, в частности, мой детектор излучения. Само устройство имеет последовательный порт, но я использую USB / последовательный адаптер FTDI, и я перепроверил VID / PID для адаптера с компанией и на панели управления.

Следующий код дает <generator object device-iter at 0x02AADA80>. Это одно из четырех USB-устройств на моем ПК (мышь, клавиатура, WiFi-адаптер и детектор излучения).

import usb
import usb.core
import usb.util

dev = usb.core.find(find_all=True)
if dev is None:
    raise ValueError("device not found")
else:
    print(dev)

Код из учебника PyUSB, который я использовал для определения местоположения устройства, также не удался:

import usb
import usb.core
import usb.util

dev  usb.core.find("idVendor="0x0403", idProduct="0x6001") # VID/PID verified by company
if dev is None:
    raise ValueError("device not found")
else:
    print(dev)

Я использую Python 2.7.1 в Windows 7, и у меня есть последние версии PyUSB и libusb. Кажется, я не могу найти причину, по которой мое устройство не может быть найдено, хотя мне, вероятно, не хватает чего-то очень важного.


person zhutchens1    schedule 25.10.2015    source источник
comment
Что вы видите на usb.core.find() и usb.core.show_devices()   -  person flamenco    schedule 25.10.2015
comment
Возможно, драйвер устройства для детектора несовместим с PyUSB?   -  person paisanco    schedule 25.10.2015
comment
В вашем usb.core.find вызове определенно слишком много кавычек. AFAIR вы должны указывать значения как шестнадцатеричные числа, а не как строки. Просто попробуйте убрать кавычки.   -  person Klaus D.    schedule 25.10.2015


Ответы (2)


Я не понимал, что PyUSB требует драйвера (файл .inf) для каждого устройства, с которым вы хотите взаимодействовать с python; Я предположил, что автоматической установки драйверов в Windows будет достаточно. Установщик Windows для libusb поставляется с очень удобным средством создания и установки INF, и проблема была решена после того, как я применил этот инструмент.

person zhutchens1    schedule 27.10.2015
comment
Не удалось установить «неподписанный INF», созданный инструментом inf-wizard libusb. Пришлось выполнить следующие команды oneliner /. bcdedit / set loadoptions DDISABLE_INTEGRITY_CHECKS & bcdedit / set testsigning on - person ; 02.05.2017

В вашем коде в строке dev usb.core.find("idVendor="0x0403", idProduct="0x6001") есть следующие ошибки:

  1. Отсутствует =. Измените его на dev = usb.core.find....
  2. Дополнительно " на find("idVendor
  3. Согласно PyUSB doc, вы можете попробовать dev = usb.core.find(idVendor=0x0403, idProduct=0x6001)
person flamenco    schedule 25.10.2015
comment
Спасибо. Я изменил свой код на основе ваших предложений, но он все еще не работает. Есть другие идеи? - person zhutchens1; 26.10.2015
comment
Что вы видите на usb.core.find () и usb.core.show_devices ()? Прежде чем что-либо делать через PyUSB, нужно убедиться, что устройство видно из Windows. - person flamenco; 26.10.2015
comment
Подстановка usb.core.find () возвращает значение error, а usb.core.show_devices () вообще ничего не возвращает. Но usb.core.find (find_all = True) возвращает ‹объект-генератор device_iter по адресу 0x02AF1A80›. - person zhutchens1; 27.10.2015
comment
Разобрался - PyUSB не любит драйвер windows. Тем не менее, я очень ценю вашу помощь. - person zhutchens1; 27.10.2015