Просмотр исходного кода

refactor home function

implement retry if not getting a good response
Fabio De Simone 11 месяцев назад
Родитель
Сommit
507e79cb4d
1 измененных файлов с 16 добавлено и 4 удалено
  1. 16 4
      dune_weaver_flask/modules/serial/serial_manager.py

+ 16 - 4
dune_weaver_flask/modules/serial/serial_manager.py

@@ -188,7 +188,7 @@ def send_grbl_coordinates(x, y, speed=600, timeout=2, home=False):
         time.sleep(1)
 
 
-def home():
+def home(retry = 0):
     logger.info(f"Homing with speed {state.speed}")
     
     # Check config for sensorless homing
@@ -204,11 +204,23 @@ def home():
             ser.write("$H\n".encode())
             ser.write("G1 Y0 F100\n".encode())
             ser.flush()
-            
-    else:
-        logger.info("Using sensor-based homing")
+    # we check that we actually got a valid response, if not, we try again a couple of times
+    elif "filename" in response.lower():
+        logger.info("Using brute-force homing")
         send_grbl_coordinates(0, -110/5, state.speed, home=True)
     
+    else:
+        # we wait a bit and cal again increasing retry times
+        # if we are over the third retry, we give up
+        if retry < 3:
+            time.sleep(1)
+            home(retry+1)
+            return
+        else:
+            # after 3 retries we're still not getting a good response
+            # raise an exception
+            raise Exception("Couldn't get a valid response for homing after 3 retries")
+    
     
     state.current_theta = state.current_rho = 0
     update_machine_position()