commit
9b1b45d00c
|
@ -7,12 +7,15 @@ n=100 #Default length to extrude
|
|||
m= 0 #User-entered measured extrusion length
|
||||
k=300 #Default amount of steps per mm
|
||||
port='/dev/ttyUSB0' #Default serial port to connect to printer
|
||||
temp=210 #Default extrusion temperature
|
||||
|
||||
tempmax=250 #Maximum extrusion temperature
|
||||
|
||||
try:
|
||||
from printdummy import printcore
|
||||
except ImportError:
|
||||
from printcore import printcore
|
||||
import time,getopt,sys
|
||||
import time,getopt,sys,os
|
||||
|
||||
def float_input(prompt=''):
|
||||
import sys
|
||||
|
@ -35,17 +38,24 @@ def wait(t,m=''):
|
|||
sys.stdout.flush()
|
||||
time.sleep(1.0/5)
|
||||
print
|
||||
def w(s):
|
||||
sys.stdout.write(s)
|
||||
sys.stdout.flush()
|
||||
|
||||
if not os.path.exists(port):
|
||||
port=0
|
||||
|
||||
#Parse options
|
||||
help="""
|
||||
%s [ -l DISTANCE ] [ -s STEPS ] [ -p PORT ]
|
||||
help=u"""
|
||||
%s [ -l DISTANCE ] [ -s STEPS ] [ -t TEMP ] [ -p PORT ]
|
||||
-l --length Length of filament to extrude for each calibration step (default: %d mm)
|
||||
-s --steps Initial amount of steps to use (default: %d steps)
|
||||
-t --temp Extrusion temperature in degrees Celsius (default: %d \xb0C, max %d \xb0C)
|
||||
-p --port Serial port the printer is connected to (default: %s)
|
||||
-h --help This cruft.
|
||||
"""[1:-1]%(sys.argv[0],n,k,port)
|
||||
"""[1:-1].encode('utf-8')%(sys.argv[0],n,k,temp,tempmax,port if port else 'auto')
|
||||
try:
|
||||
opts,args=getopt.getopt(sys.argv[1:],"hl:s:p:",["help","length=","steps=","port="])
|
||||
opts,args=getopt.getopt(sys.argv[1:],"hl:s:t:p:",["help","length=","steps=","temp=","port="])
|
||||
except getopt.GetoptError,err:
|
||||
print str(err)
|
||||
print help
|
||||
|
@ -58,18 +68,44 @@ for o,a in opts:
|
|||
n=float(a)
|
||||
elif o in ('-s','--steps'):
|
||||
k=int(a)
|
||||
elif o in ('-t','--temp'):
|
||||
temp=int(a)
|
||||
if temp>=tempmax:
|
||||
print (u'%d \xb0C? Are you insane?'.encode('utf-8')%temp)+(" That's over nine thousand!" if temp>9000 else '')
|
||||
sys.exit(255)
|
||||
elif o in ('-p','--port'):
|
||||
port=a
|
||||
|
||||
#Show initial parameters
|
||||
print "Initial parameters"
|
||||
print "Steps per mm: %3d steps"%k
|
||||
print "Length extruded: %3d mm"%n
|
||||
print
|
||||
print "Serial port: %s"%port
|
||||
print "Serial port: %s"%(port if port else 'auto')
|
||||
|
||||
#Connect to printer
|
||||
print "Connecting to printer..",
|
||||
p=printcore(port,115200)
|
||||
print "connected."
|
||||
w("Connecting to printer..")
|
||||
try:
|
||||
p=printcore(port,115200)
|
||||
except:
|
||||
print 'Error.'
|
||||
raise
|
||||
while not p.online:
|
||||
time.sleep(1)
|
||||
w('.')
|
||||
print " connected."
|
||||
|
||||
def sendcb(self,l):
|
||||
if l=='G92 E0':
|
||||
self.hot=True
|
||||
w("Heating extruder up..")
|
||||
setattr(p,'hot',False)
|
||||
p.sendcb=sendcb
|
||||
p.send_now('M109 S%03d'%temp)
|
||||
while not p.hot:
|
||||
time.sleep(1)
|
||||
w('.')
|
||||
print " ready."
|
||||
|
||||
#Calibration loop
|
||||
while n!=m:
|
||||
|
|
Loading…
Reference in New Issue