]>
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
.settings
= frameSettings
.frameSettings()
11 self
.coeffs
= MatrixConversion
.find_coeffs(self
.settings
.image_frame
.corners
, self
.settings
.laser_frame
.corners
)
12 try: self
.printerSerial
= serial
.Serial(PrinterCOM
, 115200, timeout
= 25)
13 except: print("Connection Failure")
16 def writePoint(self
, xy
):
20 command
= 'G0 F5000 X%d Y%d\n'%(x
, y
) + 'G4 P1000\n' + 'G0 F5000 X0 Y0\n'
22 if self
.printerSerial
is not None and Geometry
.pointWithinBounds(xy
, (self
.max_X
, self
.max_Y
)):
23 self
.printerSerial
.write(command
.encode())
28 def writePackage(self
, package
):
29 if self
.printerSerial
is not None:
30 self
.printerSerial
.write(package
.encode())
32 def adjustXY(self
, xy
):
33 printer_points
= [(self
.max_X
,self
.max_Y
), (0,self
.max_Y
), (0,0), (self
.max_X
,0)]
34 self
.coeffs
= MatrixConversion
.find_coeffs(self
.settings
.laser_frame
.corners
, printer_points
)
35 return MatrixConversion
.warped_xy((xy
), self
.coeffs
)
38 self
.writePoint(self
.adjustXY(xy
))
40 def sendPackage(self
, points
):
41 package
= Gcode
.buildGcodePackage(list(map(self
.adjustXY
, points
)))
42 self
.writePackage(package
)
44 def packageIsExecuting(self
):
45 #Query the printer for position
46 self
.printerSerial
.reset_input_buffer()
47 self
.printerSerial
.write('M114'.encode())
49 while self
.printerSerial
.in_waiting
> 0:
50 printerData
+= str(self
.printerSerial
.readline())
52 if 'Count' in printerData
:
53 x
, y
= PrinterUtils
.parsePrinterXY(printerData
)
54 if x
== 0 and y
== 0: return False
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())