+ def supported_devices(self):
+ if not os.path.isfile('escpos_devices.pickle'):
+ return supported_devices.device_list
+ else:
+ try:
+ f = open('escpos_devices.pickle','r')
+ return pickle.load(f)
+ f.close()
+ except Exception as e:
+ self.set_status('error',str(e))
+ return supported_devices.device_list
+
+ def add_supported_device(self,device_string):
+ r = re.compile('[0-9A-Fa-f]{4}:[0-9A-Fa-f]{4}');
+ match = r.search(device_string)
+ if match:
+ match = match.group().split(':')
+ vendor = int(match[0],16)
+ product = int(match[1],16)
+ name = device_string.split('ID')
+ if len(name) >= 2:
+ name = name[1]
+ else:
+ name = name[0]
+ _logger.info('ESC/POS: adding support for device: '+match[0]+':'+match[1]+' '+name)
+
+ device_list = supported_devices.device_list[:]
+ if os.path.isfile('escpos_devices.pickle'):
+ try:
+ f = open('escpos_devices.pickle','r')
+ device_list = pickle.load(f)
+ f.close()
+ except Exception as e:
+ self.set_status('error',str(e))
+ device_list.append({
+ 'vendor': vendor,
+ 'product': product,
+ 'name': name,
+ })
+
+ try:
+ f = open('escpos_devices.pickle','w+')
+ f.seek(0)
+ pickle.dump(device_list,f)
+ f.close()
+ except Exception as e:
+ self.set_status('error',str(e))
+