Improve COM port enumeration on Win32

Resolves #417
This commit is contained in:
Dan Smith 2013-01-09 20:02:59 -08:00
parent b5341644c6
commit 54df1214aa

View file

@ -18,6 +18,36 @@ import sys
import glob
from subprocess import Popen
try:
from serial.tools.list_ports import comports
except:
def comports():
import win32file
import win32con
ports = []
for i in range(1, 257):
portname = "COM%i" % i
print "Trying %s" % portname
try:
mode = win32con.GENERIC_READ | win32con.GENERIC_WRITE
port = \
win32file.CreateFile(portname,
mode,
win32con.FILE_SHARE_READ,
None,
win32con.OPEN_EXISTING,
0,
None)
ports.append((portname,"Unknown","Serial"))
win32file.CloseHandle(port)
port = None
except Exception, e:
print "Failed: %s" % e
pass
return ports
def _find_me():
return sys.modules["chirp.platform"].__file__
@ -296,29 +326,7 @@ class Win32Platform(Platform):
os.system("explorer %s" % path)
def list_serial_ports(self):
import win32file
import win32con
ports = []
for i in range(1, 257):
portname = "COM%i" % i
try:
mode = win32con.GENERIC_READ | win32con.GENERIC_WRITE
port = \
win32file.CreateFile(portname,
mode,
win32con.FILE_SHARE_READ,
None,
win32con.OPEN_EXISTING,
0,
None)
ports.append(portname)
win32file.CloseHandle(port)
port = None
except Exception, e:
pass
return ports
return [port for port, name, url in comports()]
def gui_open_file(self, start_dir=None, types=[]):
import win32gui