mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-17 04:51:10 +00:00
65 lines
1.7 KiB
Python
65 lines
1.7 KiB
Python
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')
|