diff options
author | cliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a> | 2009-08-07 18:19:47 +0000 |
---|---|---|
committer | cliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a> | 2009-08-07 18:19:47 +0000 |
commit | 52f73e7dfbcdfcafed71dad3d047b2da6246d4ad (patch) | |
tree | 2d7e582296ba09234422dd63d247522258b5c4a6 | |
parent | 65722c94a0ee7313660ae6cd7fd42a50115351ad (diff) | |
download | pyserial-git-52f73e7dfbcdfcafed71dad3d047b2da6246d4ad.tar.gz |
improve output
-rw-r--r-- | pyserial/examples/scanwin32.py | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/pyserial/examples/scanwin32.py b/pyserial/examples/scanwin32.py index 090d7d6..2d3249d 100644 --- a/pyserial/examples/scanwin32.py +++ b/pyserial/examples/scanwin32.py @@ -99,8 +99,10 @@ SPDRP_LOCATION_INFORMATION = 13 ERROR_NO_MORE_ITEMS = 259 def comports(available_only=True): - """This generator scans the device registry for com ports and yields port, desc, hwid. - If available_only is true only return currently existing ports.""" + """This generator scans the device registry for com ports and yields + (order, port, desc, hwid). If available_only is true only return currently + existing ports. Order is a helper to get sorted lists. it can be ignored + otherwise.""" flags = DIGCF_DEVICEINTERFACE if available_only: flags |= DIGCF_PRESENT @@ -153,7 +155,7 @@ def comports(available_only=True): raise ctypes.WinError() # hardware ID - szHardwareID = ctypes.create_string_buffer('\0' * 250) + szHardwareID = ctypes.create_string_buffer(250) if not SetupDiGetDeviceRegistryProperty( g_hdi, ctypes.byref(devinfo), @@ -190,25 +192,41 @@ def comports(available_only=True): None ): port_name = "\\\\.\\" + szFriendlyName.value + order = None + else: + port_name = szFriendlyName.value + order = None else: try: - port_name = re.search(r"\((.*)\)", szFriendlyName.value).group(1) + m = re.search(r"\((.*?(\d+))\)", szFriendlyName.value) + #~ print szFriendlyName.value, m.groups() + port_name = m.group(1) + order = int(m.group(2)) except AttributeError, msg: port_name = szFriendlyName.value - yield port_name, szFriendlyName.value, szHardwareID.value + order = None + yield order, port_name, szFriendlyName.value, szHardwareID.value SetupDiDestroyDeviceInfoList(g_hdi) if __name__ == '__main__': import serial - for port, desc, hwid in comports(): + print "-"*78 + print "Serial ports" + print "-"*78 + for order, port, desc, hwid in sorted(comports()): + print "%-10s: %s (%s) ->" % (port, desc, hwid), try: - print "%s: %s (%s)" % (port, desc, hwid) - print " "*10, serial.Serial(port) #test open + serial.Serial(port) # test open except serial.serialutil.SerialException: - print "can't be openend." + print "can't be openend" + else: + print "Ready" + print # list of all ports the system knows - print "-"*60 - for port, desc, hwid in comports(False): + print "-"*78 + print "All serial ports (registry)" + print "-"*78 + for order, port, desc, hwid in sorted(comports(False)): print "%-10s: %s (%s)" % (port, desc, hwid) |