summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2011-08-22 01:12:44 +0000
committercliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2011-08-22 01:12:44 +0000
commit8d6ae1e32b3a15fc4df63f8bc21605027a2ace53 (patch)
tree8c3ed5da66e1a2486d74cc8b0671ea4d313010da
parentf6ec3eb99061947c30c888b519b47a41c78c9cfe (diff)
downloadpyserial-8d6ae1e32b3a15fc4df63f8bc21605027a2ace53.tar.gz
ensure that a string is returned, also on Py 3.x
git-svn-id: http://svn.code.sf.net/p/pyserial/code/trunk/pyserial@426 f19166aa-fa4f-0410-85c2-fa1106f25c8a
-rw-r--r--serial/tools/list_ports_windows.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/serial/tools/list_ports_windows.py b/serial/tools/list_ports_windows.py
index 90d6b49..6112704 100644
--- a/serial/tools/list_ports_windows.py
+++ b/serial/tools/list_ports_windows.py
@@ -34,7 +34,14 @@ REGSAM = ACCESS_MASK
def byte_buffer(length):
"""Get a buffer for a string"""
- return (ctypes.c_char*length)()
+ return (BYTE*length)()
+
+def string(buffer):
+ s = []
+ for c in buffer:
+ if c == 0: break
+ s.append(chr(c))
+ return ''.join(s)
class GUID(ctypes.Structure):
@@ -185,8 +192,7 @@ def comports():
port_name_length = ULONG(ctypes.sizeof(port_name_buffer))
RegQueryValueEx(hkey, PortName, None, None, ctypes.byref(port_name_buffer), ctypes.byref(port_name_length))
RegCloseKey(hkey)
- port_name = str(port_name_buffer.value)
- yield port_name, szFriendlyName.value, szHardwareID.value
+ yield string(port_name_buffer), string(szFriendlyName), string(szHardwareID)
SetupDiDestroyDeviceInfoList(g_hdi)