def auto_detect_serial_win32(preferred='*'): '''try to auto-detect serial ports on win32''' try: import scanwin32 list = sorted(scanwin32.comports()) except: return [] ret = [] for order, port, desc, hwid in list: if fnmatch.fnmatch(desc, preferred) or fnmatch.fnmatch(hwid, preferred): ret.append(SerialPort(port, description=desc, hwid=hwid)) if len(ret) > 0: return ret # now the rest for order, port, desc, hwid in list: ret.append(SerialPort(port, description=desc, hwid=hwid)) return ret
def scanSerialPorts(self, debug=False): if not self.useSerial: raise Exception("Serial port operations not allowed") if self.serialPort.isOpen(): self.serialPort.flushInput() self.serialPort.flushOutput() self.serialPort.close() if os.name is "nt": possibleSerPorts = [cp[1] for cp in sorted(scanwin32.comports())] elif os.name is "posix": possibleSerPorts = glob.glob("/dev/ttyS*") + glob.glob("/dev/ttyUSB*") + glob.glob("/dev/ttyACM*") else: raise UnsupportedOSError("Operating system " + os.name + " unsupported.") serPorts = [] for psp in possibleSerPorts: try: # -- Open port with the settings we will use, to make sure these # work on the given port self.openPort(psp) sp = self.serialPort spDict = {} spDict["name"] = sp.portstr spDict["supportedBaudrates"] = sp.getSupportedBaudrates() spDict["supportedByteSizes"] = sp.getSupportedByteSizes() spDict["supportedParities"] = sp.getSupportedParities() spDict["supportedStopbits"] = sp.getSupportedStopbits() self.__closeSerialPort() serPorts.append(spDict) except: # serial.Serial.SerialException, err: # wstderr('ERROR: %s\n' % str(err)) pass self.serPorts = serPorts if debug: wstderr("\nD0 --> serPorts:\n" + PPstderr.pformat(serPorts) + "\n\n") return self.serPorts
def findNextCOM(self): next = True num = 1 used = [] for each in self.comlst: used.append(each[1]) for port in comports(False): used.append(port[1]) while next: name = 'COM' + str(num) try: used.index(name) num += 1 except ValueError: next = False return num if num == 99: next = False return None
def getSerialports(): if sys.platform.startswith('win'): # windows out = [] import scanwin32 for order, port, desc, hwid in sorted(scanwin32.comports()): print( "%-10s: %s (%s) ->" % (port, desc, hwid),) try: s = serial.Serial(port) # test open s.close() except serial.serialutil.SerialException: print( "can't be opened") else: print("Ready") out.append(port) elif sys.platform.startswith('darwin'): # mac out = glob.glob('/dev/tty.usb*') out.sort() else: # assume linux out = glob.glob('/dev/ttyUSB*') out.sort() return out
def getSerialports(): if sys.platform.startswith('win'): # windows out = [] import scanwin32 for order, port, desc, hwid in sorted(scanwin32.comports()): print("%-10s: %s (%s) ->" % (port, desc, hwid), ) try: s = serial.Serial(port) # test open s.close() except serial.serialutil.SerialException: print("can't be opened") else: print("Ready") out.append(port) elif sys.platform.startswith('darwin'): # mac out = glob.glob('/dev/tty.usb*') out.sort() else: # assume linux out = glob.glob('/dev/ttyUSB*') out.sort() return out
def __init__(self, parent=None): super(MonitoringConfigDlg, self).__init__(parent) self.setupUi(self) self.sys_config = model.get_sys_config() self.boiler_configs = model.get_boiler_config() self.cur_boiler = 0 # print self.sys_config # print self.boiler_configs self.spin_boiler_num.setValue(self.sys_config[0]) self.spin_fan_num.setValue(self.sys_config[3]) self.spin_acq_interval.setValue(self.sys_config[4]) self.spin_timeout.setValue(self.sys_config[5]) self.spin_sensor_num.setValue(self.boiler_configs[0][6]) self.cbo_boiler.addItem(u"默认", 0) self.cbo_boiler.addItems( [u"风炉 %02d" % (i + 1) for i in range(self.sys_config[0])]) self.edit_company_info.setText(self.sys_config[2]) for port in sorted(comports()): self.cbo_com.addItem(port[1]) com, port = self.sys_config[1].split(";") self.cbo_com.setCurrentIndex( self.cbo_com.findText(com)) self.cbo_baudrate.setCurrentIndex( self.cbo_baudrate.findText(port))
def populate_combos(self,builder): # populate combo boxes # interfaces combo = builder.get_object("interface") #...(combo,['USB Printer','Printer','Serial']) self.set_model_from_list(combo,['USB Printer','Serial']) combo.set_active(1) # printer options """ Someday we'll add in a check for cups... import cups con = cups.Connection() printers = con.getPrinters() combo = builder.get_object("printer") self.set_model_from_list(combo,printers) combo.set_active(len(printers)-1) """ import glob usbprinters = glob.glob('/dev/usb/lp*') combo = builder.get_object("usbprinter") self.set_model_from_list(combo, usbprinters) combo.set_active(len(usbprinters)-1) """ # populate devices combos combo = builder.get_object("device1") devices = printers devices['Serial Port'] = 'add' self.set_model_from_list(combo,devices) #combo = builder.get_object("device2") #self.set_model_from_list(combo,devices) """ # serial port options if os.name == 'posix': from bin.serial.scanlinux import scan ports = scan() # fk windows elif os.name == 'nt': from scanwin32 import comports ports = [] for order, port, desc, hwid in sorted(comports()): ports.append(port) else: from scan import scan ports = scan() combo = builder.get_object("port") self.set_model_from_list(combo,ports) combo.set_active(len(ports)-1) combo = builder.get_object("baudrate") self.set_model_from_list(combo,[2400,4800,9600,19200,38400,57600,115200]) combo.set_active(2) combo = builder.get_object("parity") self.set_model_from_list(combo,['None','Odd','Even','Mark','Space']) combo.set_active(0) combo = builder.get_object("stopbits") self.set_model_from_list(combo,[1,1.5,2]) combo.set_active(0) combo = builder.get_object("bytesize") self.set_model_from_list(combo,[8,7,6,5]) combo.set_active(0) # optimize order combo = builder.get_object("order_combo") self.set_model_from_list(combo,['Complete one copy at a time (default)','Best tracking (min vinyl movement)','Fastest path (min pen movement)']) combo.set_active(0) # predefined materials parsed from config/materials.xml combo = builder.get_object("material") materials=['User defined'] xml = etree.parse(os.path.join(appPath,'config','materials.xml')).getroot() for material in xml: materials.append(material.attrib['name']) self.set_model_from_list(combo,materials) combo.set_active(0)