This commit is contained in:
95
script/devices/Hexiposi.py
Normal file
95
script/devices/Hexiposi.py
Normal file
@@ -0,0 +1,95 @@
|
||||
import ch.psi.pshell.device.DiscretePositionerBase as DiscretePositionerBase
|
||||
import requests
|
||||
import json
|
||||
|
||||
class Hexiposi(DiscretePositionerBase):
|
||||
def __init__(self, name, url):
|
||||
DiscretePositionerBase.__init__(self, name, ["1","2","3","4","5","6"])
|
||||
if not url.startswith("http://"):
|
||||
url = "http://" + url
|
||||
if not url.endswith("/"):
|
||||
url = url + "/"
|
||||
self.url = url
|
||||
self.setState(State.Ready)
|
||||
self.val = self.doReadReadback()
|
||||
|
||||
def get_response(self, response):
|
||||
if (response.status_code!=200):
|
||||
raise Exception (response.text)
|
||||
return json.loads(response.text)
|
||||
|
||||
def get_status(self):
|
||||
self.status = self.get_response(requests.get(url=self.url+"get"))
|
||||
self.estop = self.status["estop"]
|
||||
self.homed = self.status["homed"]
|
||||
self.error = self.status["errorCode"]
|
||||
self.remote = self.status["mode"] == "remote"
|
||||
self.moving = self.status["errorCode"]
|
||||
self.pos = self.status["position"]
|
||||
self.moving = self.status["moving"]
|
||||
self.dpos = self.status["discretePosition"]
|
||||
if self.dpos == 1: self.rback = 1
|
||||
elif self.dpos == 2: self.rback = 2
|
||||
elif self.dpos == 4: self.rback = 3
|
||||
elif self.dpos == 8: self.rback = 4
|
||||
elif self.dpos == 16: self.rback = 5
|
||||
elif self.dpos == 32: self.rback = 6
|
||||
else: self.rback = None
|
||||
self.rbackstr = self.UNKNOWN_POSITION if self.rback is None else str(self.rbackstr)
|
||||
return self.status
|
||||
|
||||
def move_pos(self, pos):
|
||||
return self.get_response(requests.get(url=self.url+"set?pos=" + str(pos)))
|
||||
|
||||
def move_home(self):
|
||||
return self.get_response(requests.get(url=self.url+"set?home=1"))
|
||||
|
||||
def stop(self):
|
||||
return self.get_response(requests.get(url=self.url+"set?stop=1"))
|
||||
|
||||
|
||||
def doUpdate(self):
|
||||
self.get_status()
|
||||
super(Hexiposi, self).doUpdate()
|
||||
|
||||
|
||||
def doStop(self):
|
||||
self.stop()
|
||||
|
||||
def doRead(self):
|
||||
return str(self.val)
|
||||
|
||||
def doReadReadback(self):
|
||||
self.get_status()
|
||||
return self.rbackstr
|
||||
|
||||
def doWrite(self, val):
|
||||
val = int(val)
|
||||
moving = val != self.val
|
||||
self.val = val
|
||||
self.move_pos(self.val)
|
||||
#Workaround as state does not changes immediatelly
|
||||
if moving:
|
||||
try:
|
||||
self.waitState(State.Busy,1200)
|
||||
except:
|
||||
pass
|
||||
|
||||
#def isReady(self):
|
||||
# self.get_status()
|
||||
# return self.moving == False
|
||||
|
||||
def updateState(self):
|
||||
if self.state ==State.Busy and self.moving==False:
|
||||
self.setState(State.Ready)
|
||||
elif self.state == State.Ready and self.moving==True:
|
||||
self.setState(State.Busy)
|
||||
|
||||
|
||||
#http://129.129.110.83:8002/hexiposi/get
|
||||
dev = Hexiposi("hexiposi", "129.129.110.83:8002/hexiposi")
|
||||
|
||||
add_device(dev, True)
|
||||
hexiposi.polling=500
|
||||
#print dev.url
|
||||
#print dev.get_status()
|
||||
@@ -62,7 +62,7 @@ class RobotSC(RobotTCP):
|
||||
|
||||
if simulation:
|
||||
#add_device(RobotSC("robot","129.129.126.92:1000"),force = True)
|
||||
add_device(RobotSC("robot","129.129.110.99:1000"),force = True)
|
||||
add_device(RobotSC("robot","129.129.110.81:1000"),force = True)
|
||||
else:
|
||||
add_device(RobotSC("robot", "129.129.110.100:1000"), force = True)
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ run("setup/Layout")
|
||||
###################################################################################################
|
||||
|
||||
for script in ["devices/RobotSC", "devices/Wago", "devices/BarcodeReader", "devices/LaserDistance", \
|
||||
"devices/LedCtrl"]:
|
||||
"devices/LedCtrl", "devices/HexiPosi"]:
|
||||
try:
|
||||
run(script)
|
||||
except:
|
||||
@@ -50,6 +50,8 @@ img.camera.setGain(0.0)
|
||||
release_local_safety.write(False)
|
||||
release_psys_safety.write(False)
|
||||
|
||||
hexiposi.polling=500
|
||||
|
||||
|
||||
###################################################################################################
|
||||
# Global variables
|
||||
|
||||
Reference in New Issue
Block a user