Skip to content

Commit 4713c2c

Browse files
authored
USB2CAN: Faster channel detection on Windows (#1480)
Co-authored-by: zariiii9003 <[email protected]>
1 parent fabcdf7 commit 4713c2c

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

can/interfaces/usb2can/serial_selector.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,13 @@ def find_serial_devices(serial_matcher: str = "") -> List[str]:
4949
:param serial_matcher:
5050
only device IDs starting with this string are returned
5151
"""
52-
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
53-
objSWbemServices = objWMIService.ConnectServer(".", "root\\cimv2")
54-
query = "SELECT * FROM CIM_LogicalDevice where Name LIKE '%USB2CAN%'"
55-
devices = objSWbemServices.ExecQuery(query)
56-
serial_numbers = [device.DeviceID.split("\\")[-1] for device in devices]
52+
serial_numbers = []
53+
wmi = win32com.client.GetObject("winmgmts:")
54+
for usb_controller in wmi.InstancesOf("Win32_USBControllerDevice"):
55+
usb_device = wmi.Get(usb_controller.Dependent)
56+
if "USB2CAN" in usb_device.Name:
57+
serial_numbers.append(usb_device.DeviceID.split("\\")[-1])
58+
5759
if serial_matcher:
5860
return [sn for sn in serial_numbers if serial_matcher in sn]
5961
return serial_numbers

0 commit comments

Comments
 (0)