diff --git a/chirp/platform.py b/chirp/platform.py index 16d8cd9a..882d8982 100644 --- a/chirp/platform.py +++ b/chirp/platform.py @@ -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