start grbl

This commit is contained in:
2026-04-24 09:34:22 +02:00
parent 4bf9bbd3da
commit 2df57ef9d7
2 changed files with 26 additions and 18 deletions
+12 -12
View File
@@ -29,7 +29,9 @@ class GRBLController:
Y_MIN = 0
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.baudrate = baudrate
self.timeout = timeout
@@ -44,9 +46,8 @@ class GRBLController:
self._state = self._send_msg
self.x, self.y = 0, 0
self.start_connection()
self._wake_up()
self._init_machine()
#self.start_connection()
def wait_for(self, delay=1.0):
threading.Event().wait(delay*1.0)
@@ -57,7 +58,7 @@ class GRBLController:
def clear_buffer(self):
while self.ser.in_waiting >0:
msg = self.ser.readline().decode().strip()
print(f"Buffer: {msg}")
logger.info(f"Buffer: {msg}")
self._state(state='serial', msg=msg)
def start_connection(self):
@@ -69,9 +70,14 @@ class GRBLController:
self.ser.setDTR(False)
self.ser.setRTS(False)
self.clear_buffer()
self._wake_up()
self._init_machine()
logger.info(f"GRBLController::start_connexion started {self.port}")
break
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
self.wait_for(1.0)
@@ -100,12 +106,6 @@ class GRBLController:
self._state(state='error', msg=f"Error send {cmd} command: {e}")
self.close()
self.start_connection()
self._wake_up()
self._init_machine()
'''
self.recover()
self.reset_grbl()
raise'''
def recover(self):
#print("Récupération de GRBL...")
+14 -6
View File
@@ -228,6 +228,12 @@ class ScannerProcess(Task):
self.cam._active_median = False
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.start_services()
except Exception as e:
@@ -248,6 +254,7 @@ class ScannerProcess(Task):
def start_services(self):
Thread(target=self._listen_to_redis, daemon=True).start()
Thread(target=self._recording, daemon=True).start()
Thread(target=self._init_grbl, daemon=True).start()
self.cam.start()
def _send(self, **payload):
@@ -288,21 +295,22 @@ class ScannerProcess(Task):
except Exception as e:
logger.error(f'recorder: {e}')
def _init_grbl(self, feed=1000):
self.grbl = grbl.GRBLController(
send_callback=self._display,
x_max=self.conf.grbl_xmax,
y_max=self.conf.grbl_ymax
)
logger.info(f"==== GRBLController try to start connection!")
self.grbl.start_connection()
self._send(state='serial', msg=f"Connected {self.grbl.port}")
self.grbl.go_origin(feed=feed)
self.grbl.wait_for(2.0)
def _listen_to_redis(self):
try:
logger.info(f"==== Scanner {self.group}: listen via redisDB")
pubsub = redisDB.pubsub()
pubsub.subscribe(self.group)
self._init_grbl()
#self._init_grbl()
self.manager = MultiWellManager(process=self)
for message in pubsub.listen():