summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Liechti <cliechti@gmx.net>2016-08-06 01:54:49 +0200
committerChris Liechti <cliechti@gmx.net>2016-08-06 01:54:49 +0200
commit1532e47a718acacc8cd25b5a155aca38f186f976 (patch)
tree38b27c780a6140de332a2b42ffb29c18a7d5d41d
parent2c84964936cdbe16c623ff874b7a528cc9d7a50d (diff)
downloadpyserial-git-1532e47a718acacc8cd25b5a155aca38f186f976.tar.gz
list_ports_windows: support devices with only VID. fixes #145
- PID field is now optional (regexp) - if vid or pid is None, use a 0 for display
-rw-r--r--serial/tools/list_ports_common.py4
-rw-r--r--serial/tools/list_ports_windows.py9
2 files changed, 7 insertions, 6 deletions
diff --git a/serial/tools/list_ports_common.py b/serial/tools/list_ports_common.py
index e5935c9..df12939 100644
--- a/serial/tools/list_ports_common.py
+++ b/serial/tools/list_ports_common.py
@@ -55,8 +55,8 @@ class ListPortInfo(object):
def usb_info(self):
"""return a string with USB related information about device"""
return 'USB VID:PID={:04X}:{:04X}{}{}'.format(
- self.vid,
- self.pid,
+ self.vid or 0,
+ self.pid or 0,
' SER={}'.format(self.serial_number) if self.serial_number is not None else '',
' LOCATION={}'.format(self.location) if self.location is not None else '')
diff --git a/serial/tools/list_ports_windows.py b/serial/tools/list_ports_windows.py
index 810417e..a070559 100644
--- a/serial/tools/list_ports_windows.py
+++ b/serial/tools/list_ports_windows.py
@@ -209,12 +209,13 @@ def iterate_comports():
# in case of USB, make a more readable string, similar to that form
# that we also generate on other platforms
if szHardwareID_str.startswith('USB'):
- m = re.search(r'VID_([0-9a-f]{4})&PID_([0-9a-f]{4})(\\(\w+))?', szHardwareID_str, re.I)
+ m = re.search(r'VID_([0-9a-f]{4})(&PID_([0-9a-f]{4}))?(\\(\w+))?', szHardwareID_str, re.I)
if m:
info.vid = int(m.group(1), 16)
- info.pid = int(m.group(2), 16)
- if m.group(4):
- info.serial_number = m.group(4)
+ if m.group(3):
+ info.pid = int(m.group(3), 16)
+ if m.group(5):
+ info.serial_number = m.group(5)
# calculate a location string
loc_path_str = ctypes.create_unicode_buffer(250)
if SetupDiGetDeviceRegistryProperty(