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 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...")
+14 -6
View File
@@ -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():