From cb2cace3e02ee53eb70a42e643a5199624d4a446 Mon Sep 17 00:00:00 2001 From: mpboyer Date: Mon, 13 Jan 2025 17:42:12 +0100 Subject: [PATCH] test de socket --- hardware.py | 71 +++++++++++++++++++++++++++++----------------------- simulator.py | 8 ++++++ 2 files changed, 47 insertions(+), 32 deletions(-) create mode 100644 simulator.py diff --git a/hardware.py b/hardware.py index 72b3e31..40e8688 100644 --- a/hardware.py +++ b/hardware.py @@ -1,5 +1,8 @@ +import socket + from GCode_Interpreterdc import GCodeToMotors + class Hardware: def __init__(self): pass @@ -12,54 +15,58 @@ class Hardware: class SimuHardware(Hardware): - def __init__(self, filename): - try: - self.f = open(filename) - except FileNotFoundError: - raise FileNotFoundError + def __init__(self, bind): + self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.s.setblocking(False) + self.s.bind(bind) def probe(self, gtm): - f.write("request") - encoder_x = (int)(f.readline()) - encoder_y = (int)(f.readline()) - encoder_z = (int)(f.readline()) + self.s.send("request") + self.s.listen() + while 1: + try: + encoder_x = (int)(socket.SocketIO(self.s).readline()) + except: + pass + encoder_y = (int)(socket.SocketIO(self.s).readline()) + encoder_z = (int)(socket.SocketIO(self.s).readline()) - last_x,last_y,last_z = gtm.current_steps + last_x, last_y, last_z = gtm.current_steps # We are now at some position which realizes the encoder positions # curr_x = encoder_x + k*X_MOTOR_STEPS # |curr_x - last_x| <= 1/2 * X_MOTOR_STEPS - curr_x = encoder_x + (last_x//gtm.X_MOTOR_STEPS) * gtm.X_MOTOR_STEPS - if(curr_x - last_x > .5 * gtm.X_MOTOR_STEPS): + curr_x = encoder_x + (last_x // gtm.X_MOTOR_STEPS) * gtm.X_MOTOR_STEPS + if curr_x - last_x > .5 * gtm.X_MOTOR_STEPS: curr_x -= gtm.X_MOTOR_STEPS - curr_y = encoder_y + (last_y//gtm.Y_MOTOR_STEPS) * gtm.Y_MOTOR_STEPS - if(curr_y - last_y > .5 * gtm.Y_MOTOR_STEPS): + curr_y = encoder_y + (last_y // gtm.Y_MOTOR_STEPS) * gtm.Y_MOTOR_STEPS + if curr_y - last_y > .5 * gtm.Y_MOTOR_STEPS: curr_y -= gtm.Y_MOTOR_STEPS - curr_z = encoder_z + (last_z//gtm.Z_MOTOR_STEPS) * gtm.Z_MOTOR_STEPS - if(curr_z - last_z > .5 * gtm.Z_MOTOR_STEPS): + curr_z = encoder_z + (last_z // gtm.Z_MOTOR_STEPS) * gtm.Z_MOTOR_STEPS + if curr_z - last_z > .5 * gtm.Z_MOTOR_STEPS: curr_z -= gtm.Z_MOTOR_STEPS # Note that if we don't probe regularly enough, we lose track of the position # Really, we should be able to set_steps - self.set_position([curr_x/gtm.X_STEPS_PER_MM, - curr_y/gtm.Y_STEPS_PER_MM, - curr_z/gtm.Z_STEPS_PER_MM]) + gtm.set_position([curr_x / gtm.X_STEPS_PER_MM, + curr_y / gtm.Y_STEPS_PER_MM, + curr_z / gtm.Z_STEPS_PER_MM]) def realize(self, gtm): - f.write("realize") - - if(gtm.throttle_x == 0): - f.write(gtm.x_direction + " 0") + self.s.send("realize") + + if gtm.throttle_x == 0: + self.s.send(gtm.x_direction + " 0") else: - f.write(gtm.x_direction + " " + gtm.FAST_XY_FEEDRATE/gtm.x_throttle) - - if(gtm.throttle_y == 0): - f.write(gtm.y_direction + " 0") + self.s.send(gtm.x_direction + " " + gtm.FAST_XY_FEEDRATE / gtm.x_throttle) + + if gtm.throttle_y == 0: + self.s.send(gtm.y_direction + " 0") else: - f.write(gtm.y_direction + " " + gtm.FAST_XY_FEEDRATE/gtm.y_throttle) - - if(gtm.throttle_z == 0): - f.write(gtm.z_direction + " 0") + self.s.send(gtm.y_direction + " " + gtm.FAST_XY_FEEDRATE / gtm.y_throttle) + + if gtm.throttle_z == 0: + self.s.send(gtm.z_direction + " 0") else: - f.write(gtm.z_direction + " " + gtm.FAST_Z_FEEDRATE/gtm.z_throttle) + self.s.send(gtm.z_direction + " " + gtm.FAST_Z_FEEDRATE / gtm.z_throttle) diff --git a/simulator.py b/simulator.py new file mode 100644 index 0000000..4d7f210 --- /dev/null +++ b/simulator.py @@ -0,0 +1,8 @@ +import hardware + + +class Simulator: + def __init__(self, port): + self.socket = port + +