start grbl
This commit is contained in:
@@ -29,7 +29,9 @@ class GRBLController:
|
|||||||
Y_MIN = 0
|
Y_MIN = 0
|
||||||
|
|
||||||
def __init__(self, port='/dev/ttyUSB0', baudrate=115200, timeout=1, send_callback=None, x_max=None, y_max=None):
|
def __init__(self, port='/dev/ttyUSB0', baudrate=115200, timeout=1, send_callback=None, x_max=None, y_max=None):
|
||||||
self.lock = threading.Lock()
|
logger.info(f"GRBLController::init begin {port} device port")
|
||||||
|
|
||||||
|
#self.lock = threading.Lock()
|
||||||
self.port = port
|
self.port = port
|
||||||
self.baudrate = baudrate
|
self.baudrate = baudrate
|
||||||
self.timeout = timeout
|
self.timeout = timeout
|
||||||
@@ -44,9 +46,8 @@ class GRBLController:
|
|||||||
self._state = self._send_msg
|
self._state = self._send_msg
|
||||||
|
|
||||||
self.x, self.y = 0, 0
|
self.x, self.y = 0, 0
|
||||||
self.start_connection()
|
|
||||||
self._wake_up()
|
#self.start_connection()
|
||||||
self._init_machine()
|
|
||||||
|
|
||||||
def wait_for(self, delay=1.0):
|
def wait_for(self, delay=1.0):
|
||||||
threading.Event().wait(delay*1.0)
|
threading.Event().wait(delay*1.0)
|
||||||
@@ -57,7 +58,7 @@ class GRBLController:
|
|||||||
def clear_buffer(self):
|
def clear_buffer(self):
|
||||||
while self.ser.in_waiting >0:
|
while self.ser.in_waiting >0:
|
||||||
msg = self.ser.readline().decode().strip()
|
msg = self.ser.readline().decode().strip()
|
||||||
print(f"Buffer: {msg}")
|
logger.info(f"Buffer: {msg}")
|
||||||
self._state(state='serial', msg=msg)
|
self._state(state='serial', msg=msg)
|
||||||
|
|
||||||
def start_connection(self):
|
def start_connection(self):
|
||||||
@@ -69,9 +70,14 @@ class GRBLController:
|
|||||||
self.ser.setDTR(False)
|
self.ser.setDTR(False)
|
||||||
self.ser.setRTS(False)
|
self.ser.setRTS(False)
|
||||||
self.clear_buffer()
|
self.clear_buffer()
|
||||||
|
|
||||||
|
self._wake_up()
|
||||||
|
self._init_machine()
|
||||||
|
logger.info(f"GRBLController::start_connexion started {self.port}")
|
||||||
break
|
break
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Erreur de connexion (essai {n}): {e}")
|
logger.error(f"GRBLController::start_connexion (essai {n}): {e}")
|
||||||
|
self._state(state='error', msg=f"{e}")
|
||||||
n += 1
|
n += 1
|
||||||
self.wait_for(1.0)
|
self.wait_for(1.0)
|
||||||
|
|
||||||
@@ -100,12 +106,6 @@ class GRBLController:
|
|||||||
self._state(state='error', msg=f"Error send {cmd} command: {e}")
|
self._state(state='error', msg=f"Error send {cmd} command: {e}")
|
||||||
self.close()
|
self.close()
|
||||||
self.start_connection()
|
self.start_connection()
|
||||||
self._wake_up()
|
|
||||||
self._init_machine()
|
|
||||||
'''
|
|
||||||
self.recover()
|
|
||||||
self.reset_grbl()
|
|
||||||
raise'''
|
|
||||||
|
|
||||||
def recover(self):
|
def recover(self):
|
||||||
#print("Récupération de GRBL...")
|
#print("Récupération de GRBL...")
|
||||||
|
|||||||
@@ -228,6 +228,12 @@ class ScannerProcess(Task):
|
|||||||
self.cam._active_median = False
|
self.cam._active_median = False
|
||||||
self.cam.set_circular_crop(None)
|
self.cam.set_circular_crop(None)
|
||||||
|
|
||||||
|
self.grbl = grbl.GRBLController(
|
||||||
|
send_callback=self._display,
|
||||||
|
x_max=self.conf.grbl_xmax,
|
||||||
|
y_max=self.conf.grbl_ymax
|
||||||
|
)
|
||||||
|
|
||||||
self.stop_event.clear()
|
self.stop_event.clear()
|
||||||
self.start_services()
|
self.start_services()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -248,6 +254,7 @@ class ScannerProcess(Task):
|
|||||||
def start_services(self):
|
def start_services(self):
|
||||||
Thread(target=self._listen_to_redis, daemon=True).start()
|
Thread(target=self._listen_to_redis, daemon=True).start()
|
||||||
Thread(target=self._recording, daemon=True).start()
|
Thread(target=self._recording, daemon=True).start()
|
||||||
|
Thread(target=self._init_grbl, daemon=True).start()
|
||||||
self.cam.start()
|
self.cam.start()
|
||||||
|
|
||||||
def _send(self, **payload):
|
def _send(self, **payload):
|
||||||
@@ -288,21 +295,22 @@ class ScannerProcess(Task):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f'recorder: {e}')
|
logger.error(f'recorder: {e}')
|
||||||
|
|
||||||
|
|
||||||
def _init_grbl(self, feed=1000):
|
def _init_grbl(self, feed=1000):
|
||||||
self.grbl = grbl.GRBLController(
|
logger.info(f"==== GRBLController try to start connection!")
|
||||||
send_callback=self._display,
|
self.grbl.start_connection()
|
||||||
x_max=self.conf.grbl_xmax,
|
self._send(state='serial', msg=f"Connected {self.grbl.port}")
|
||||||
y_max=self.conf.grbl_ymax
|
|
||||||
)
|
|
||||||
self.grbl.go_origin(feed=feed)
|
self.grbl.go_origin(feed=feed)
|
||||||
self.grbl.wait_for(2.0)
|
self.grbl.wait_for(2.0)
|
||||||
|
|
||||||
|
|
||||||
def _listen_to_redis(self):
|
def _listen_to_redis(self):
|
||||||
try:
|
try:
|
||||||
logger.info(f"==== Scanner {self.group}: listen via redisDB")
|
logger.info(f"==== Scanner {self.group}: listen via redisDB")
|
||||||
pubsub = redisDB.pubsub()
|
pubsub = redisDB.pubsub()
|
||||||
pubsub.subscribe(self.group)
|
pubsub.subscribe(self.group)
|
||||||
self._init_grbl()
|
#self._init_grbl()
|
||||||
self.manager = MultiWellManager(process=self)
|
self.manager = MultiWellManager(process=self)
|
||||||
|
|
||||||
for message in pubsub.listen():
|
for message in pubsub.listen():
|
||||||
|
|||||||
Reference in New Issue
Block a user