2015-10-25 88 views
1

我正在用python編寫軟件來使用USB連接的輻射探測器來檢測宇宙μ子。PyUSB無法識別特定的USB設備

我想使用PyUSB模塊與設備進行交互,但PyUSB沒有找到我的輻射探測器。該設備本身有一個串行端口,但我使用的是FTDI USB /串行適配器,並且已經在公司和控制面板上交叉檢查適配器的VID/PID。

以下代碼產生<generator object device-iter at 0x02AADA80>。這是我PC上的四個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) 

我在Windows 7上運行的Python 2.7.1,我有PyUSB的最新版本和libusb的。我似乎無法找到我的設備無法找到的原因,儘管我可能錯過了一些非常基本的東西。

+0

你在'usb.core.find()'和'usb.core.show_devices()'上看到了什麼? – flamenco

+0

檢測器的設備驅動程序可能與PyUSB不兼容? – paisanco

+0

你的'usb.core.find'調用中肯定有太多引號。 AFAIR你必須提供值作爲十六進制,而不是字符串。試着刪除引號。 –

回答

1

我不知道PyUSB需要你想給每個設備的驅動程序(.inf文件)與python進行交互;我認爲在Windows上自動安裝驅動程序就足夠了。 libusb的Windows Installer附帶了一個非常方便的INF創建者和安裝程序,並且在應用該工具後問題得到了解決。

+0

無法安裝由libusb的inf-wizard工具生成的'unsigned INF'。必須運行以下oneliner /命令。 bcdedit/set loadoptions DDISABLE_INTEGRITY_CHECKS&bcdedit/set testsigning on – BiTinerary

0

你就行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)
+0

謝謝。我根據您的建議更改了我的代碼,但仍然無效。任何其他想法? – zhutchens1

+0

你在usb.core.find()和usb.core.show_devices()上看到了什麼?在通過PyUSB進行任何操作之前,您需要確保設備在Windows中可見。 – flamenco

+0

替換usb.core.find()返回值錯誤,並且usb.core.show_devices()根本不返回任何內容。但是usb.core.find(find_all = True)在0x02AF1A80>處返回<生成器對象device_iter>。 – zhutchens1