Cleanup and refactor a little
parent
ee5e41bcd1
commit
a6df0acfa1
|
@ -109,84 +109,70 @@ class printcore():
|
||||||
self.printer.setDTR(1)
|
self.printer.setDTR(1)
|
||||||
self.printer.setDTR(0)
|
self.printer.setDTR(0)
|
||||||
|
|
||||||
|
def _readline(self):
|
||||||
|
try:
|
||||||
|
line = self.printer.readline()
|
||||||
|
return line
|
||||||
|
except SelectError, e:
|
||||||
|
if 'Bad file descriptor' in e.args[1]:
|
||||||
|
print "Can't read from printer (disconnected?)."
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
except SerialException, e:
|
||||||
|
print "Can't read from printer (disconnected?)."
|
||||||
|
return None
|
||||||
|
except OSError, e:
|
||||||
|
print "Can't read from printer (disconnected?)."
|
||||||
|
return None
|
||||||
|
|
||||||
def _listen(self):
|
def _listen(self):
|
||||||
"""This function acts on messages from the firmware
|
"""This function acts on messages from the firmware
|
||||||
"""
|
"""
|
||||||
self.clear=True
|
self.clear = True
|
||||||
if self.printer.inWaiting(): # flush receive buffer
|
if not self.printing:
|
||||||
self.printer.read(self.printer.inWaiting())
|
|
||||||
while not self.printer.inWaiting(): # wait for new data to read
|
|
||||||
time.sleep(0.5)
|
|
||||||
if (not self.online and not self.printing): # send M105 to initiate connection
|
|
||||||
self._send("M105")
|
self._send("M105")
|
||||||
while(True):
|
time.sleep(1)
|
||||||
if self.stop_read_thread:
|
while not self.stop_read_thread and self.printer and self.printer.isOpen():
|
||||||
return
|
line = self._readline()
|
||||||
if(not self.printer or not self.printer.isOpen):
|
if line == None:
|
||||||
break
|
break
|
||||||
try:
|
if len(line) > 1:
|
||||||
line=self.printer.readline()
|
self.log.append(line)
|
||||||
except SelectError, e:
|
if self.recvcb:
|
||||||
if 'Bad file descriptor' in e.args[1]:
|
try: self.recvcb(line)
|
||||||
print "Can't read from printer (disconnected?)."
|
except: pass
|
||||||
break
|
if self.loud: print "RECV: ",line.rstrip()
|
||||||
else:
|
if line.startswith('DEBUG_'):
|
||||||
raise
|
|
||||||
except SerialException, e:
|
|
||||||
print "Can't read from printer (disconnected?)."
|
|
||||||
break
|
|
||||||
except OSError, e:
|
|
||||||
print "Can't read from printer (disconnected?)."
|
|
||||||
break
|
|
||||||
|
|
||||||
if(len(line)>1):
|
|
||||||
self.log+=[line]
|
|
||||||
if self.recvcb is not None:
|
|
||||||
try:
|
|
||||||
self.recvcb(line)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
if self.loud:
|
|
||||||
print "RECV: ",line.rstrip()
|
|
||||||
if(line.startswith('DEBUG_')):
|
|
||||||
continue
|
continue
|
||||||
if(line.startswith(tuple(self.greetings)) or line.startswith('ok')):
|
if line.startswith(tuple(self.greetings)) or line.startswith('ok'):
|
||||||
self.clear=True
|
self.clear = True
|
||||||
if(line.startswith(tuple(self.greetings)) or line.startswith('ok') or "T:" in line):
|
if line.startswith(tuple(self.greetings)) or line.startswith('ok') or "T:" in line:
|
||||||
if (not self.online or line.startswith(tuple(self.greetings))) and self.onlinecb is not None:
|
if (not self.online or line.startswith(tuple(self.greetings))) and self.onlinecb is not None:
|
||||||
try:
|
try: self.onlinecb()
|
||||||
self.onlinecb()
|
except: pass
|
||||||
except:
|
self.online = True
|
||||||
pass
|
if line.startswith('ok'):
|
||||||
self.online=True
|
|
||||||
if(line.startswith('ok')):
|
|
||||||
#self.resendfrom=-1
|
#self.resendfrom=-1
|
||||||
#put temp handling here
|
#put temp handling here
|
||||||
if "T:" in line and self.tempcb is not None:
|
if "T:" in line and self.tempcb is not None:
|
||||||
try:
|
#callback for temp, status, whatever
|
||||||
self.tempcb(line)
|
try: self.tempcb(line)
|
||||||
except:
|
except: pass
|
||||||
pass
|
elif line.startswith('Error'):
|
||||||
#callback for temp, status, whatever
|
|
||||||
elif(line.startswith('Error')):
|
|
||||||
if self.errorcb is not None:
|
if self.errorcb is not None:
|
||||||
try:
|
#callback for errors
|
||||||
self.errorcb(line)
|
try: self.errorcb(line)
|
||||||
except:
|
except: pass
|
||||||
pass
|
|
||||||
#callback for errors
|
|
||||||
pass
|
|
||||||
if line.lower().startswith("resend") or line.startswith("rs"):
|
if line.lower().startswith("resend") or line.startswith("rs"):
|
||||||
try:
|
try:
|
||||||
toresend=int(line.replace("N:"," ").replace("N"," ").replace(":"," ").split()[-1])
|
toresend = int(line.replace("N:"," ").replace("N"," ").replace(":"," ").split()[-1])
|
||||||
except:
|
except:
|
||||||
if line.startswith("rs"):
|
if line.startswith("rs"):
|
||||||
toresend=int(line.split()[1])
|
toresend = int(line.split()[1])
|
||||||
self.resendfrom=toresend
|
self.resendfrom = toresend
|
||||||
self.clear=True
|
self.clear = True
|
||||||
self.clear=True
|
self.clear = True
|
||||||
#callback for disconnect
|
|
||||||
|
|
||||||
def _checksum(self,command):
|
def _checksum(self,command):
|
||||||
return reduce(lambda x,y:x^y, map(ord,command))
|
return reduce(lambda x,y:x^y, map(ord,command))
|
||||||
|
|
Loading…
Reference in New Issue