]>
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 def sendPackage(self
, points
):
42 package
= Gcode
.buildGcodePackage(list(map(self
.adjustXY
, points
)), (self
.max_X
, self
.max_Y
))
43 self
.writePackage(package
)
45 def packageIsExecuting(self
):
46 #Query the printer for position
47 #self.printerSerial.reset_input_buffer()
48 self
.printerSerial
.write('M114'.encode())
50 while self
.printerSerial
.in_waiting
> 0:
51 printerData
+= str(self
.printerSerial
.readline())
52 if 'Count' in printerData
:
53 headPosition
= PrinterUtils
.parsePrinterXY(printerData
)
54 return not PrinterUtils
.isHomed(headPosition
)
58 self
.printerSerial
.write('G0 F5000 Z50\n'.encode())
61 self
.printerSerial
.write('G28\n'.encode())
64 self
.printerSerial
.write('G0 F5000 X0 Y0\n'.encode())
67 print(self
.printerSerial
.readline())