From 7a085d382284ea82ba61e3ff26acc2d73e389e0e Mon Sep 17 00:00:00 2001 From: gac-S_Changer Date: Thu, 29 Mar 2018 14:17:40 +0200 Subject: [PATCH] --- config/plugins.properties | 4 +- devices/led_ctrl_1.properties | 2 +- devices/led_ctrl_2.properties | 2 +- devices/led_ctrl_3.properties | 2 +- script/devices/Hexiposi.py | 95 +++++++++++++++++++++++++++++++++++ script/devices/RobotSC.py | 2 +- script/local.py | 4 +- 7 files changed, 103 insertions(+), 8 deletions(-) create mode 100644 script/devices/Hexiposi.py diff --git a/config/plugins.properties b/config/plugins.properties index 3f3132e..c14bc69 100644 --- a/config/plugins.properties +++ b/config/plugins.properties @@ -1,9 +1,7 @@ -MXSC-1.8.0.jar=disabled +MXSC-1.9.0.jar=enabled RobotPanel.java=enabled Wayne.java=disabled LaserUE.java=enabled -MXSC-1.7.0.jar=disabled -MXSC-1.6.0.jar=disabled PuckDetection.java=disabled TestZMQ.java=disabled RobotModbus.java=disabled diff --git a/devices/led_ctrl_1.properties b/devices/led_ctrl_1.properties index 71acac2..0307210 100644 --- a/devices/led_ctrl_1.properties +++ b/devices/led_ctrl_1.properties @@ -1,4 +1,4 @@ -#Fri Mar 09 17:05:09 CET 2018 +#Fri Mar 23 15:41:28 CET 2018 maxValue=0.4 minValue=0.0 offset=0.0 diff --git a/devices/led_ctrl_2.properties b/devices/led_ctrl_2.properties index 71acac2..0307210 100644 --- a/devices/led_ctrl_2.properties +++ b/devices/led_ctrl_2.properties @@ -1,4 +1,4 @@ -#Fri Mar 09 17:05:09 CET 2018 +#Fri Mar 23 15:41:28 CET 2018 maxValue=0.4 minValue=0.0 offset=0.0 diff --git a/devices/led_ctrl_3.properties b/devices/led_ctrl_3.properties index 71acac2..0307210 100644 --- a/devices/led_ctrl_3.properties +++ b/devices/led_ctrl_3.properties @@ -1,4 +1,4 @@ -#Fri Mar 09 17:05:09 CET 2018 +#Fri Mar 23 15:41:28 CET 2018 maxValue=0.4 minValue=0.0 offset=0.0 diff --git a/script/devices/Hexiposi.py b/script/devices/Hexiposi.py new file mode 100644 index 0000000..0d97c92 --- /dev/null +++ b/script/devices/Hexiposi.py @@ -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() \ No newline at end of file diff --git a/script/devices/RobotSC.py b/script/devices/RobotSC.py index 5df0a00..95bd16d 100644 --- a/script/devices/RobotSC.py +++ b/script/devices/RobotSC.py @@ -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) diff --git a/script/local.py b/script/local.py index 1a092e5..5d8ea73 100644 --- a/script/local.py +++ b/script/local.py @@ -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