mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-17 13:01:12 +00:00
Initial commit
This commit is contained in:
64
unilabos/devices/rotavap/rotavap_one.py
Normal file
64
unilabos/devices/rotavap/rotavap_one.py
Normal file
@@ -0,0 +1,64 @@
|
||||
import json
|
||||
from serial import Serial
|
||||
import time as time_
|
||||
import threading
|
||||
|
||||
class RotavapOne:
|
||||
def __init__(self, port, rate=9600):
|
||||
self.ser = Serial(port,rate)
|
||||
self.pump_state = 'h'
|
||||
self.pump_time = 0
|
||||
self.rotate_state = 'h'
|
||||
self.rotate_time = 0
|
||||
self.success = True
|
||||
if not self.ser.is_open:
|
||||
self.ser.open()
|
||||
|
||||
# self.main_loop()
|
||||
t = threading.Thread(target=self.main_loop ,daemon=True)
|
||||
t.start()
|
||||
|
||||
def cmd_write(self, cmd):
|
||||
self.ser.write(cmd)
|
||||
self.ser.read_all()
|
||||
|
||||
def set_rotate_time(self, time):
|
||||
self.success = False
|
||||
self.rotate_time = time
|
||||
self.success = True
|
||||
|
||||
|
||||
def set_pump_time(self, time):
|
||||
self.success = False
|
||||
self.pump_time = time
|
||||
self.success = True
|
||||
|
||||
def set_timer(self, command):
|
||||
self.success = False
|
||||
timer = json.loads(command)
|
||||
|
||||
rotate_time = timer['rotate_time']
|
||||
pump_time = timer['pump_time']
|
||||
|
||||
self.rotate_time = rotate_time
|
||||
self.pump_time = pump_time
|
||||
|
||||
self.success = True
|
||||
|
||||
|
||||
def main_loop(self):
|
||||
param = ['rotate','pump']
|
||||
while True:
|
||||
for i in param:
|
||||
if getattr(self, f'{i}_time') <= 0:
|
||||
setattr(self, f'{i}_state','l')
|
||||
else:
|
||||
setattr(self, f'{i}_state','h')
|
||||
setattr(self, f'{i}_time',getattr(self, f'{i}_time')-1)
|
||||
cmd = f'1{self.pump_state}2{self.rotate_state}3l4l\n'
|
||||
self.cmd_write(cmd.encode())
|
||||
|
||||
time_.sleep(1)
|
||||
|
||||
if __name__ == '__main__':
|
||||
ro = RotavapOne(port='COM15')
|
||||
Reference in New Issue
Block a user