ubuntu 9.04でpythonを使用していますが、1台のPCに2台のUSBデバイスが接続されていると言います。Pythonコードでデバイスを特定するにはどうすればよいですか.....たとえば
if usb port id == A デバイス 1 にデータを書き込みます if usb port id == B デバイス 2 にデータを書き込みます
何か案は....
pyUsbを試しましたか?以下を使用してインストールします。
pip install pyusb
ここにあなたができることのスニペットがあります:
import usb
busses = usb.busses()
for bus in busses:
devices = bus.devices
for dev in devices:
print("Device:", dev.filename)
print(" idVendor: %d (0x%04x)" % (dev.idVendor, dev.idVendor))
print(" idProduct: %d (0x%04x)" % (dev.idProduct, dev.idProduct))
ここにpyUsbの良いチュートリアルがあります。
詳細なドキュメントについては、dir() および help() で Python インタラクティブ モードを使用してください。
@systempuntooutの答えは素晴らしいですが、今日、すべてのデバイスを見つけたり反復したりする簡単な方法を見つけました。usb.core.find(find_all=True)
あなたの例に従ってください:
import usb
for dev in usb.core.find(find_all=True):
print "Device:", dev.filename
print " idVendor: %d (%s)" % (dev.idVendor, hex(dev.idVendor))
print " idProduct: %d (%s)" % (dev.idProduct, hex(dev.idProduct))
しかし、何でも..誰かがある時点で答えを探すでしょう:
Mac (osx 10.9) を使用しています。Mac ポートを使用して libusb を正常にインストールしましたが、「バックエンドが利用できません」というメッセージが表示されました。これは、Python が USB dylib を見つけられないためです。
libusb へのパスを $DYLD_LIBRARY_PATH に追加する必要があります (例: macport がインストールした場所の /opt/local/lib)。
追加するとすぐに、pyusb は正常に動作しました。