-import cv2, sys, Printer
+import cv2, sys, Printer, time
from User_Interface import Draw, MouseManager, Buttons
+start_time = time.time()
+
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
cv2.namedWindow('image')
Draw.drawImage(frame, printer)
cv2.imshow('image', frame)
- print(printer.packageIsExecuting())
+ if time.time() - start_time > 8:
+ res = printer.packageIsExecuting()
+ if not res:
+ print(res)
#if not printer.packageIsExecuting():
# ...Detection and package send... #
#After g-code package send, check for XY reset and update printer execution status
self.writePoint(self.adjustXY(xy))
def sendPackage(self, points):
- package = Gcode.buildGcodePackage(list(map(self.adjustXY, points)))
+ package = Gcode.buildGcodePackage(list(map(self.adjustXY, points)), (self.max_X, self.max_Y))
self.writePackage(package)
def packageIsExecuting(self):
#Query the printer for position
- self.printerSerial.reset_input_buffer()
+ #self.printerSerial.reset_input_buffer()
self.printerSerial.write('M114'.encode())
printerData = ''
while self.printerSerial.in_waiting > 0:
printerData += str(self.printerSerial.readline())
-
if 'Count' in printerData:
- x, y = PrinterUtils.parsePrinterXY(printerData)
- if x == 0 and y == 0: return False
+ headPosition = PrinterUtils.parsePrinterXY(printerData)
+ return not PrinterUtils.isHomed(headPosition)
return True
-
+
def raiseZ(self):
self.printerSerial.write('G0 F5000 Z50\n'.encode())
import Printer, time
+from utils import Gcode
testPoints = [
-(176, 204),
-(306, 208),
-(354, 159),
-(218, 134),
-(277, 126),
-(335, 126),
-(246, 189)
+ (176, 204),
+ (306, 208),
+ (176, 204)
]
+start_time = time.time()
p = Printer.Printer('COM4', (200,200))
-time.sleep(8)
+cum = False
while 1:
- res = p.packageIsExecuting()
-
\ No newline at end of file
+ if time.time() - start_time > 8:
+ if not cum:
+ cum = True
+ p.sendPackage(testPoints)
+
+ res = p.packageIsExecuting()
+ if not res:
+ print('Is HOmed: ' + str(time.time()))
+ p.sendPackage(testPoints)
from utils import Geometry
-def buildGcodePackage(points):
- package = ''
+def buildGcodePackage(points, xyMax):
+ package = 'G0 F5000\n'
for point in points:
- if Geometry.pointWithinBounds(point):
+ if Geometry.pointWithinBounds(point, xyMax):
x,y = point
- package += 'G0 F5000 X{:.3f} Y{:.3f}\n'.format(x, y)
+ package += 'G0 X{:.3f} Y{:.3f}\n'.format(x, y)
package += 'M106 S300\nG4 P500\nM107\n'
package += 'G0 F5000 X0 Y0\n'
return package
\ No newline at end of file
def parsePrinterXY(printerData):
xy = printerData.split('Count')[1].split('Z')[0].strip().replace('Y:', '').split(' ')[1:]
- return (xy[0], xy[1])
-
\ No newline at end of file
+ return (float(xy[0]), float(xy[1]))
+
+def isHomed(xy):
+ x, y = xy
+ tolerence = 0.03
+ return x <= tolerence and x >= -tolerence and y <= tolerence and y >= -tolerence
\ No newline at end of file