]>
wolfpit.net Git - hardware/fuck_tomatoes/.git/blob - Printer.py
2 from settings
import frameSettings
3 from utils
import MatrixConversion
6 def __init__(self
, COM
, bedSize
):
8 self
.max_X
, self
.max_Y
= bedSize
10 self
.packageExecuting
= 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.ser = serial.Serial(self.COM, 115200, timeout = 1)
14 #except: print("Connection Failure")
16 def pointWithinBounds(self
, xy
):
18 return (x
> 0 and x
< self
.max_X
) and (y
> 0 and y
< self
.max_Y
)
20 def writePoint(self
, xy
):
24 command
= 'G0 F5000 X%d Y%d\n'%(x
, y
) + 'G4 P1000\n' + 'G0 F5000 X0 Y0\n'
26 if self
.ser
is not None and self
.pointWithinBounds(xy
):
27 self
.ser
.write(command
.encode())
32 def writePackage(self
, package
):
33 if self
.ser
is not None:
34 self
.packageExecuting
= True
35 self
.ser
.write(package
.encode())
37 def adjustXY(self
, xy
):
38 printer_points
= [(self
.max_X
,self
.max_Y
), (0,self
.max_Y
), (0,0), (self
.max_X
,0)]
39 self
.coeffs
= MatrixConversion
.find_coeffs(self
.settings
.laser_frame
.corners
, printer_points
)
40 return MatrixConversion
.warped_xy((xy
), self
.coeffs
)
43 self
.writePoint(self
.adjustXY(xy
))
45 def buildGcodePackage(self
, points
):
48 if self
.pointWithinBounds(point
):
50 package
+= 'G0 F5000 X{:.3f} Y{:.3f}\n'.format(x
, y
)
51 package
+= 'M106 S300\nG4 P500\nM107\n'
52 package
+= 'G0 F5000 X0 Y0\n'
55 def sendPackage(self
, points
):
56 package
= self
.buildGcodePackage(list(map(self
.adjustXY
, points
)))
57 self
.writePackage(package
)
60 self
.ser
.write('G0 F5000 Z50\n'.encode())
63 self
.ser
.write('G28\n'.encode())
66 self
.ser
.write('G0 F5000 X0 Y0\n'.encode())
69 print(self
.ser
.readline())