Update runze pump format

This commit is contained in:
Xuwznln
2025-09-14 00:22:39 +08:00
parent c7a0ff67a9
commit 2493fb9f94
2 changed files with 80 additions and 81 deletions

View File

@@ -1,10 +1,9 @@
import asyncio
from threading import Lock, Event
from enum import Enum
from dataclasses import dataclass
import time
import traceback
from typing import Any, Union, Optional, overload
from dataclasses import dataclass
from enum import Enum
from threading import Lock, Event
from typing import Union, Optional
import serial.tools.list_ports
from serial import Serial
@@ -18,47 +17,47 @@ class RunzeSyringePumpMode(Enum):
pulse_freq_grades = {
6000: "0" ,
5600: "1" ,
5000: "2" ,
4400: "3" ,
3800: "4" ,
3200: "5" ,
2600: "6" ,
2200: "7" ,
2000: "8" ,
1800: "9" ,
6000: "0",
5600: "1",
5000: "2",
4400: "3",
3800: "4",
3200: "5",
2600: "6",
2200: "7",
2000: "8",
1800: "9",
1600: "10",
1400: "11",
1200: "12",
1000: "13",
800 : "14",
600 : "15",
400 : "16",
200 : "17",
190 : "18",
180 : "19",
170 : "20",
160 : "21",
150 : "22",
140 : "23",
130 : "24",
120 : "25",
110 : "26",
100 : "27",
90 : "28",
80 : "29",
70 : "30",
60 : "31",
50 : "32",
40 : "33",
30 : "34",
20 : "35",
18 : "36",
16 : "37",
14 : "38",
12 : "39",
10 : "40",
800: "14",
600: "15",
400: "16",
200: "17",
190: "18",
180: "19",
170: "20",
160: "21",
150: "22",
140: "23",
130: "24",
120: "25",
110: "26",
100: "27",
90: "28",
80: "29",
70: "30",
60: "31",
50: "32",
40: "33",
30: "34",
20: "35",
18: "36",
16: "37",
14: "38",
12: "39",
10: "40",
}
@@ -100,10 +99,7 @@ class RunzeSyringePump:
# baudrate=9600,
# port=port
# )
self.hardware_interface = Serial(
baudrate=9600,
port=port
)
self.hardware_interface = Serial(baudrate=9600, port=port)
except (OSError, SerialException) as e:
# raise RunzeSyringePumpConnectionError from e
@@ -120,7 +116,7 @@ class RunzeSyringePump:
self.total_steps_vel = 48000 if self.mode == RunzeSyringePumpMode.AccuratePosVel else 6000
def send_command(self, full_command: str):
full_command_data = bytearray(full_command, 'ascii')
full_command_data = bytearray(full_command, "ascii")
response = self.hardware_interface.write(full_command_data)
time.sleep(0.05)
output = self._receive(self.hardware_interface.read_until(b"\n"))
@@ -131,7 +127,7 @@ class RunzeSyringePump:
if self._closing:
raise RunzeSyringePumpConnectionError
run = 'R' if not "?" in command else ''
run = "R" if "?" not in command else ""
full_command = f"/{self.address}{command}{run}\r\n"
output = self.send_command(full_command)[3:-3]
@@ -161,7 +157,7 @@ class RunzeSyringePump:
time.sleep(0.5) # Wait for 0.5 seconds before polling again
status = self.get_status()
if status == 'Idle':
if status == "Idle":
break
finally:
pass
@@ -275,11 +271,11 @@ class RunzeSyringePump:
return self._valve_position
def set_valve_position(self, position: Union[int, str, float]):
if type(position) == float:
if isinstance(position, float):
position = round(position / 120)
command = f"I{position}" if type(position) == int or ord(position) <= 57 else position.upper()
command = f"I{position}" if isinstance(position, int) or ord(position) <= 57 else position.upper()
response = self._run(command)
self._valve_position = f"{position}" if type(position) == int or ord(position) <= 57 else position.upper()
self._valve_position = f"{position}" if isinstance(position, int) or ord(position) <= 57 else position.upper()
return response
def get_valve_position(self) -> str:

View File

@@ -176,6 +176,9 @@ class RunzeMultiplePump:
return output
def _receive(self, data: bytes) -> str:
"""
Do not change this method.
"""
if not data:
return ""
ascii_string = "".join(chr(byte) for byte in data)