This commit is contained in:
gac-S_Changer
2018-03-29 14:17:40 +02:00
parent 388734cb8b
commit 7a085d3822
7 changed files with 103 additions and 8 deletions

View 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()

View File

@@ -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)

View File

@@ -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