]>
wolfpit.net Git - hardware/fuck_tomatoes/.git/blob - Printer.py
2 from settings
import frameSettings
3 from utils
import MatrixConversion
, Geometry
, Gcode
, PrinterUtils
6 def __init__(self
, PrinterCOM
, bedSize
):
8 self
.max_X
, self
.max_Y
= bedSize
10 self
.sendSerial
= False
11 self
.settings
= frameSettings
.frameSettings()
12 self
.coeffs
= MatrixConversion
.find_coeffs(self
.settings
.image_frame
.corners
, self
.settings
.laser_frame
.corners
)
13 try: self
.printerSerial
= serial
.Serial(PrinterCOM
, 115200, timeout
= 25)
14 except: print("Connection Failure")
17 def writePoint(self
, xy
):
21 command
= 'G0 F5000 X%d Y%d\n'%(x
, y
) + 'G4 P1000\n' + 'G0 F5000 X0 Y0\n'
23 if self
.printerSerial
is not None and Geometry
.pointWithinBounds(xy
, (self
.max_X
, self
.max_Y
)):
24 self
.printerSerial
.write(command
.encode())
29 def writePackage(self
, package
):
30 if self
.printerSerial
is not None:
31 self
.printerSerial
.write(package
.encode())
33 def adjustXY(self
, xy
):
34 printer_points
= [(self
.max_X
,self
.max_Y
), (0,self
.max_Y
), (0,0), (self
.max_X
,0)]
35 self
.coeffs
= MatrixConversion
.find_coeffs(self
.settings
.laser_frame
.corners
, printer_points
)
36 return MatrixConversion
.warped_xy((xy
), self
.coeffs
)
39 self
.writePoint(self
.adjustXY(xy
))
41 #Cannot send packages with over 3 locations at once,
42 #it overflows the printer's serial buffer because it's a peice of dog shit
43 def sendPackage(self
, points
):
44 package
= Gcode
.buildGcodePackage(list(map(self
.adjustXY
, points
)), (self
.max_X
, self
.max_Y
))
45 self
.writePackage(package
)
47 def packageIsExecuting(self
):
48 #Query the printer for position
49 #self.printerSerial.reset_input_buffer()
50 self
.printerSerial
.write('M114'.encode())
52 while self
.printerSerial
.in_waiting
> 0:
53 printerData
+= str(self
.printerSerial
.readline())
54 if 'Count' in printerData
:
55 headPosition
= PrinterUtils
.parsePrinterXY(printerData
)
56 return not PrinterUtils
.isHomed(headPosition
)
60 self
.printerSerial
.write('G0 F5000 Z50\n'.encode())
63 self
.printerSerial
.write('G28\n'.encode())
66 self
.printerSerial
.write('G0 F5000 X0 Y0\n'.encode())
69 print(self
.printerSerial
.readline())