Esempio n. 1
0
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
Esempio n. 2
0
    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
Esempio n. 3
0
 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
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
 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))
Esempio n. 7
0
	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)