答えが見つからないようです。私は専門家ではないので、単純なものが欠けている可能性があることを覚えておいてください。おそらく、必要なデバイスをどのように印刷しているかなどです。USBデバイスからデバイスのバージョン番号(ここからはdvm)を保存しようとしています。問題は、USBデバイスにレポート用の2つの列、機能と出力があることです。
したがって、デバイスを印刷すると、2セットの印刷ステートメントを受け取ります。
#def device(target_usage、target_vendor_id):
hidDevice = False
all_devices = hid.HidDeviceFilter(vendor_id = target_vendor_id).get_devices()
print "\n", all_devices
if len(all_devices) == 0:
# Exit if no devices found, report error.
hidDevice = False
time.sleep(0.2)
print "No devices can be detected, please check device is connected."
sys.exit(1)
return
elif len(all_devices) > 2:
# announce there are more than 1 device connected to prevent conflicting upgrades
hidDevice = True
time.sleep(0.2)
print "Too many devices connected, ensure the only device connected is the device needed to test."
sys.exit(1)
else:
# loop through all devices
for device in all_devices:
try:
device.open()
# print device details
device_name = unicode("=== INFO: Found %s %s (vID=[%04x], pID=[%04x], version number [%04x]) ===" % \
(device.vendor_name, device.product_name, device.vendor_id, device.product_id, device.version_number))
dvm = unicode("%04x" % \
(device.version_number))
print dvm;
print device_name;
finally:
device.close()
hidDevice = True
return hidDevice
#
この関数を呼び出すと、すべてのデバイスが印刷されますが、次の結果になります(プライバシーの問題のためにpid / vidsなどを変更しました)。
[HIDデバイス(vID = 0x0000、pID = 0x0000、v = 0x0000); 作る; モデル、パス:\?\ hidden#vid_0000&pid_0000&col01#7&00000000&1&0000#{00000000-0000-0000-0000-000000000000}、HIDデバイス(vID = 0x0000、pID = 0x0000、v = 0x0000); 作る; モデル、パス:\?\ hidden#vid_0000&pid_0000&col02#7&00000000&1&0000#{00000000-0000-0000-0000-000000000000}
重要な部分はcol01とcol02です。
2番目に列挙されたHIDデバイスを除外するにはどうすればよいですか?