Add files via upload
This commit is contained in:
parent
a8062b75d1
commit
a8ca22f392
8
pipeline/focus.php
Normal file
8
pipeline/focus.php
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?php
|
||||||
|
$nb_step = $_REQUEST["nb_step"];
|
||||||
|
$orientation = $_REQUEST["orientation"];
|
||||||
|
$toggler = $_REQUEST["toggler"];
|
||||||
|
|
||||||
|
|
||||||
|
$output = shell_exec('/usr/bin/python3 focus.py '.$nb_step.' '.$orientation.' '.$toggler);
|
||||||
|
?>
|
54
pipeline/focus.py
Normal file
54
pipeline/focus.py
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
from adafruit_motor import stepper
|
||||||
|
from adafruit_motorkit import MotorKit
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
from thread2 import Thread
|
||||||
|
import sys
|
||||||
|
|
||||||
|
nb_step = int(sys.argv[1])
|
||||||
|
orientation = str(sys.argv[2])
|
||||||
|
toogler = str(sys.argv[3])
|
||||||
|
|
||||||
|
|
||||||
|
#Execute a python cmd with the previous defined variables from php
|
||||||
|
|
||||||
|
|
||||||
|
kit = MotorKit()
|
||||||
|
|
||||||
|
stage = kit.stepper1
|
||||||
|
|
||||||
|
stage.release()
|
||||||
|
|
||||||
|
def focus(steps,orientation):
|
||||||
|
#0.25mm/step
|
||||||
|
#31um/microsteps
|
||||||
|
|
||||||
|
stage.release()
|
||||||
|
|
||||||
|
if orientation == 'up':
|
||||||
|
for i in range(steps):
|
||||||
|
stage.onestep(direction=stepper.FORWARD, style=stepper.MICROSTEP)
|
||||||
|
sleep(0.001)
|
||||||
|
|
||||||
|
if orientation == 'down':
|
||||||
|
for i in range(steps):
|
||||||
|
stage.onestep(direction=stepper.BACKWARD, style=stepper.MICROSTEP)
|
||||||
|
sleep(0.001)
|
||||||
|
|
||||||
|
stage.release()
|
||||||
|
|
||||||
|
focus_thread = Thread(target = focus, name = 'focus_thread', args =(nb_step, orientation) )
|
||||||
|
|
||||||
|
if toogler == "ON":
|
||||||
|
|
||||||
|
focus_thread.start()
|
||||||
|
focus_thread.isAlive()
|
||||||
|
|
||||||
|
if toogler == "OFF":
|
||||||
|
|
||||||
|
focus_thread.terminate()
|
||||||
|
focus_thread.join()
|
||||||
|
focus_thread.isAlive()
|
||||||
|
stage.release()
|
||||||
|
|
|
@ -14,13 +14,23 @@
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<div>
|
||||||
nb_step
|
nb_step
|
||||||
<input type="text" id="nb_step"/>
|
<input type="text" id="nb_step" value="1000"/>
|
||||||
orientation
|
orientation
|
||||||
<input type="text" id="orientation"/>
|
<input type="text" id="orientation" value="up"/>
|
||||||
<button type="button" class="btn btn-primary" id="send_nb_step">Send</button>
|
<button type="button" class="btn btn-primary" id="focus">Send</button>
|
||||||
|
</div>
|
||||||
|
volume(ml)
|
||||||
|
<input type="text" id="volume" value="1"/>
|
||||||
|
flowrate (ml/min) (from 0 to 20)
|
||||||
|
<input type="text" id="flowrate" value="3"/>
|
||||||
|
direction (foward or backward)
|
||||||
|
<input type="text" id="direction" value="foward"/>
|
||||||
|
<button type="button" class="btn btn-primary" id="pump">Send</button>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,31 @@
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|
||||||
$( "#send_nb_step" ).click(function() {
|
$( "#focus" ).click(function() {
|
||||||
pipeline()
|
focus("ON")
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$( "#pump" ).click(function() {
|
||||||
|
pump()
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function pipeline() {
|
function focus(toggler) {
|
||||||
var value = $("#nb_step").val();
|
var value = $("#nb_step").val();
|
||||||
var orientation = $("#orientation").val();
|
var orientation = $("#orientation").val();
|
||||||
|
|
||||||
console.log("pipeline.php?nb_step="+value+"&orientation="+orientation);
|
|
||||||
|
|
||||||
var xmlhttp = new XMLHttpRequest();
|
var xmlhttp = new XMLHttpRequest();
|
||||||
xmlhttp.open("GET", "pipeline.php?nb_step="+value+"&orientation="+orientation, true);
|
xmlhttp.open("GET", "focus.php?nb_step="+value+"&orientation="+orientation+"&toggler="+toggler, true);
|
||||||
xmlhttp.send();
|
xmlhttp.send();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function pump() {
|
||||||
|
var volume = $("#volume").val();
|
||||||
|
var flowrate = $("#flowrate").val();
|
||||||
|
var direction = $("#direction").val();
|
||||||
|
var xmlhttp = new XMLHttpRequest();
|
||||||
|
xmlhttp.open("GET", "pump.php?volume="+volume+"&flowrate="+flowrate+"&direction="+direction, true);
|
||||||
|
xmlhttp.send();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
8
pipeline/pump.php
Normal file
8
pipeline/pump.php
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?php
|
||||||
|
$volume = $_REQUEST["volume"];
|
||||||
|
$flowrate = $_REQUEST["flowrate"];
|
||||||
|
$direction = $_REQUEST["direction"];
|
||||||
|
|
||||||
|
|
||||||
|
$output = shell_exec('/usr/bin/python3 pump.py '.$volume.' '.$flowrate.' '.$direction);
|
||||||
|
?>
|
41
pipeline/pump.py
Normal file
41
pipeline/pump.py
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
from adafruit_motor import stepper
|
||||||
|
from adafruit_motorkit import MotorKit
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
vol = int(sys.argv[1])
|
||||||
|
flowrate = int(sys.argv[2])
|
||||||
|
dir = str(sys.argv[3])
|
||||||
|
|
||||||
|
kit = MotorKit()
|
||||||
|
|
||||||
|
pump_stepper = kit.stepper2
|
||||||
|
|
||||||
|
pump_stepper.release()
|
||||||
|
|
||||||
|
def pump(vol, flowrate, dir):
|
||||||
|
|
||||||
|
if dir == "foward":
|
||||||
|
dir=stepper.FORWARD
|
||||||
|
if dir == "backward":
|
||||||
|
dir=stepper.BACKWARD
|
||||||
|
|
||||||
|
nb_step=vol*507 #if sleep(0.05) in between 2 steps
|
||||||
|
#35000steps for 69g
|
||||||
|
|
||||||
|
#nb_step=vol*460 if sleep(0) in between 2 steps
|
||||||
|
duration=(vol*60)/flowrate
|
||||||
|
|
||||||
|
delay=(duration/nb_step)-0.005
|
||||||
|
|
||||||
|
for i in range(nb_step):
|
||||||
|
pump_stepper.onestep(direction=dir, style=stepper.DOUBLE)
|
||||||
|
sleep(delay)
|
||||||
|
|
||||||
|
sleep(1)
|
||||||
|
pump_stepper.release()
|
||||||
|
|
||||||
|
#volume, flowrate (from 0 to 20), direction (foward or backward)
|
||||||
|
pump(vol, flowrate, dir)
|
||||||
|
|
45
pipeline/thread2.py
Normal file
45
pipeline/thread2.py
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
import threading
|
||||||
|
import inspect
|
||||||
|
import ctypes
|
||||||
|
|
||||||
|
|
||||||
|
def _async_raise(tid, exctype):
|
||||||
|
"""raises the exception, performs cleanup if needed"""
|
||||||
|
if not inspect.isclass(exctype):
|
||||||
|
raise TypeError("Only types can be raised (not instances)")
|
||||||
|
res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(exctype))
|
||||||
|
if res == 0:
|
||||||
|
raise ValueError("invalid thread id")
|
||||||
|
elif res != 1:
|
||||||
|
# """if it returns a number greater than one, you're in trouble,
|
||||||
|
# and you should call it again with exc=NULL to revert the effect"""
|
||||||
|
ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, 0)
|
||||||
|
raise SystemError("PyThreadState_SetAsyncExc failed")
|
||||||
|
|
||||||
|
|
||||||
|
class Thread(threading.Thread):
|
||||||
|
def _get_my_tid(self):
|
||||||
|
"""determines this (self's) thread id"""
|
||||||
|
if not self.isAlive():
|
||||||
|
raise threading.ThreadError("the thread is not active")
|
||||||
|
|
||||||
|
# do we have it cached?
|
||||||
|
if hasattr(self, "_thread_id"):
|
||||||
|
return self._thread_id
|
||||||
|
|
||||||
|
# no, look for it in the _active dict
|
||||||
|
for tid, tobj in threading._active.items():
|
||||||
|
if tobj is self:
|
||||||
|
self._thread_id = tid
|
||||||
|
return tid
|
||||||
|
|
||||||
|
raise AssertionError("could not determine the thread's id")
|
||||||
|
|
||||||
|
def raise_exc(self, exctype):
|
||||||
|
"""raises the given exception type in the context of this thread"""
|
||||||
|
_async_raise(self._get_my_tid(), exctype)
|
||||||
|
|
||||||
|
def terminate(self):
|
||||||
|
"""raises SystemExit in the context of the given thread, which should
|
||||||
|
cause the thread to exit silently (unless caught)"""
|
||||||
|
self.raise_exc(SystemExit)
|
Loading…
Reference in a new issue