From 8537ec89b97af46b0d9bf2a841e68cf141b15ba0 Mon Sep 17 00:00:00 2001 From: Henrik Lemke Date: Sat, 11 Nov 2017 14:58:58 +0100 Subject: [PATCH 01/10] got rid of some __pycache__ stuff --- __pycache__/eco.cpython-35.pyc | Bin 443 -> 0 bytes utilities/__pycache__/elog.cpython-35.pyc | Bin 2181 -> 0 bytes xdiagnostics/__pycache__/__init__.cpython-35.pyc | Bin 143 -> 0 bytes .../__pycache__/profile_monitors.cpython-35.pyc | Bin 1570 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 __pycache__/eco.cpython-35.pyc delete mode 100644 utilities/__pycache__/elog.cpython-35.pyc delete mode 100644 xdiagnostics/__pycache__/__init__.cpython-35.pyc delete mode 100644 xdiagnostics/__pycache__/profile_monitors.cpython-35.pyc diff --git a/__pycache__/eco.cpython-35.pyc b/__pycache__/eco.cpython-35.pyc deleted file mode 100644 index e798083043e84f8a80c81856217a2bb75032d9ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 443 zcmYLFu};G<5IsAIR8?)o#Kgpc!Vv!eLX{Yph>$8VcsWI}Q6rKj*v$}D_!)jFD-+@m zn7DJ4a?*Rb^PS&4=X||hUj9gJ0N{&oiiol;!Cw(k*9fQq8Ub2@xHl3^1Rr!9!Mg-4 zz{IdilW!V^RE)_(du(0F)f|$NEx}(9SqOKCNr)~>*3uEn?b6usY$=F1_{+E>_?U>? z>{5|`(jqM%pB!5a^n0y}XRkV6W#wM=-a1vQ+BPp1_o^AXLD{lpWZf_>5UWFVL}W?N z8$rBng70i@7CNb6-7dO-9TmBJ2>`eXv{)<)d diff --git a/utilities/__pycache__/elog.cpython-35.pyc b/utilities/__pycache__/elog.cpython-35.pyc deleted file mode 100644 index 9bc6a595e75c7ccf7c7d50deb84f013ee223ce88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2181 zcmZuyOOG2x5U!pXj~{Di*Q>;26C#|1Rb&aTIe;ReBnpCn0I@uBNU)GbgQsnecRXXd z+gjQ3o)V70kKn{lqOY9xjJSjgU$yOIL7Ckybyrna*Yk6$(Ww3XPuS1PM1RtS&&U2D zmL7p5_!pEB^@ZDelzBAusUMJFneWaX^-JqBbVKTg+k0i|mnjJ-DbaJ-sL-bgWMw{p zKEu5#+kf1toZ~S%?g(2RNi)|{ZML&m>w#b)z7VU4^#zvx3j}u)xI{D+bmoyT9<4l@ z`1FkE8CX7hxDqr8m~&Dl^`$$O$iNSu44i-_2`CHr`5)CkXz_qdg-n$uHJa?u3g$}e zHG%;B^?=TBC7?;2txOtB&r0+JiTUQ+r%&?RB!n=RI8+!;d^%|HJ7#yI_+2jODL=V( z2ex2+?Tgu?NrhI#7k?Jp>qC!Ib*wla$WQQfY{oX=Y}pDY>aHnZAWmG-buZNBwE`%rh9{qhWUvh)WPz^?VRQ8pMCQ)z<}xzIM8&yv{Sl%xY= zE77JvHYjE?w_c%bzy@qEDbm~qO2&yT!ALr@rI||e%^iLnx1Dq2xD#4`t}+{*oW^RT z-P5Yd?~7sIk7lR8le&iEi}!o+Q1=kc(O}$Tr+Zm1lhYF!jeFC@Y|)d0qBl2bmYP)R z9-BX!Eo=*3ek_OaJTs5L`YhKb&Igh^NV8oMdtx7d2j0H$#Z7SobYEN&El<4(>3~(X zA76Tir9T3Z+ga$N4_y19u+Ihc(Ht)u9UF+yVy@eh3MEx~9`KYTHI#722JDojfe(xP zaprmNI{Pj*#+4o&hw6Wit|p4m2B5CPd4tAA)4AT}Bc3Ff7RQ~Ei@*jEo=_#&vR5KK zP*Uc4T$m_Hl^mEtEz~|_oxlcKW<&J`D_(xB-c^WPG1lZdYgVEt%~KOaEYzGK64yml zEE^oz(N_9$bU8R)Ut#HYK#(AeDv#uW3k31Hgx=dkg*ctYFC3M(tk&9_&xRk)&A3n< z-vy`Mf-!Vpp$#}U-NAL#YrIy65Z}OBJM7m*LoBP#VZQ&#IeR$Zl<`-?;<~t++`-Jj z4uA!z(S=;+^PJV@VL`BUha)@07&;$ zJ1xEL>9W@CCNhf`_Ya3S$IIrS?z;bIyE*4hQg4GSeK427(JUV=ce>qSn#udO4)v`U zqHT9#W8%ShDs!Vd4I9QYAW>o~3{xfraQS(0YOB08^I0YpmvY@LyS&?D!apRc4PryR z&_+(x4s*CgI<<8pm8VkccqIGbX__a+X}_FEePRj#n~Otnk6C{(P5M3_>j%R$k8Op0 zWkme{%+y|`gCo>T2s0C+4KIUU_8MYWTmud@y{4#%tD*@!YKi5pYtdJ?kAa>Tz&xJH zD6+LEnik1C<9$7few@eITB2^lz6(gb$2-Qo3xwxb@ig%0yNRfa-BP{mc%7OJBm+o` uwRkR+$E3mJ3KN$}o@56%?$QP0?yWUa+*^D1fPb|#SE3H=-4j>6dh=gXl+5t} diff --git a/xdiagnostics/__pycache__/__init__.cpython-35.pyc b/xdiagnostics/__pycache__/__init__.cpython-35.pyc deleted file mode 100644 index fce6eb447c7bb68b13467ea6781e9ed3771c11b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143 zcmWgR<>gX(%@oA|1dl-k3@`#24nSPY0whux7=kq!{Z=v*frJsnFB|>Dv|{~&;!M5d z4E@sL)FS;H{hZX??9})S{oKleO8wO2eEo`)%*6D({Nj?#+iu%N5S`^kk`)R*aU3Bi5KD$sq&9(K!IEo-DKF}h z3MwLR&d>Be`W1ZbQ+}aOJ+qW0C1|_g4tFlxIWxP5NBjHT<)1D8OPA;`+8H+1PcRD~ zBElmmAxZ`Lf&}XpB^ISN`8IT$B8L)(QkQ&}#Pi6ds73D()}mXB{1!cr+7xw+sbfq~ z_h{~Q-&;uFiTd7oUgmnH!dypCJ7+5JB$V}*adtxvUh6dVxiNJG4S9wZ+wPXj3M3%dP^jUN-VIkpyS)dWKn6e zX{|a`x*Yo2wB{}d`3Pz3N!5FNKK*ezlNYn;({bfIeldRLwQK8#NOMlVT?YC_l~Crb>pb7e9UHfa(CiFyP$2%tU#iCoH9(znn#Kg1p9=@*a#j>oAP`r$jWSPcU zP{w&Ci!vycXX!4-xNm}FsZ8OG=&`lC`9SSMU&C*SzO^T+0|S2>5ekIx;P(c9A4-W5 z08p$k0^;0bc(wCOo+oRNz~>1A<|7pP09$;DS@5PLs?SW~|EQP;M~Lf)th|HEWx zsxF#hPCj-@Y++6o=NK)xZA_;{r9P From 51d47e1a6ec052c4efe2a2764e808dc0a7cb4227 Mon Sep 17 00:00:00 2001 From: Henrik Lemke Date: Sat, 11 Nov 2017 15:02:19 +0100 Subject: [PATCH 02/10] added .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7a60b85 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +__pycache__/ +*.pyc From 27638f4c18af932734e33bb729c57cfd8bdd813b Mon Sep 17 00:00:00 2001 From: Henrik Lemke Date: Sat, 11 Nov 2017 15:05:13 +0100 Subject: [PATCH 03/10] got rid of some __pycache__ stuff --- .../__pycache__/motors.cpython-35.pyc | Bin 6250 -> 0 bytes eco_epics/__pycache__/__init__.cpython-35.pyc | Bin 193 -> 0 bytes eco_epics/__pycache__/device.cpython-35.pyc | Bin 11123 -> 0 bytes eco_epics/__pycache__/motor.cpython-35.pyc | Bin 20251 -> 0 bytes instruments/__pycache__/bernina.cpython-35.pyc | Bin 1002 -> 0 bytes startup_scripts/__pycache__/eco.cpython-35.pyc | Bin 433 -> 0 bytes .../attenuator_aramis.cpython-35.pyc | Bin 196 -> 0 bytes 7 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 devices_general/__pycache__/motors.cpython-35.pyc delete mode 100644 eco_epics/__pycache__/__init__.cpython-35.pyc delete mode 100644 eco_epics/__pycache__/device.cpython-35.pyc delete mode 100644 eco_epics/__pycache__/motor.cpython-35.pyc delete mode 100644 instruments/__pycache__/bernina.cpython-35.pyc delete mode 100755 startup_scripts/__pycache__/eco.cpython-35.pyc delete mode 100755 xoptics/__pycache__/attenuator_aramis.cpython-35.pyc diff --git a/devices_general/__pycache__/motors.cpython-35.pyc b/devices_general/__pycache__/motors.cpython-35.pyc deleted file mode 100644 index 4cf66f58ae86f7234c5b47e2686becbade1ec350..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6250 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 diff --git a/eco_epics/__pycache__/__init__.cpython-35.pyc b/eco_epics/__pycache__/__init__.cpython-35.pyc deleted file mode 100644 index f258e289bec293a11d1d82bbbe0a94ed86cef569..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193 zcmX|)u?oU45QZ-)6%o2Rh?83vZx%#+0vER~L6S&=i3v$7^pSj}tWM$^IC)t-?)&(M z=63TD02TwCK@IVL~l^LFiy)LLtoE3_@(fl;?Zr L)oAshlqLdx!DuZI diff --git a/eco_epics/__pycache__/device.cpython-35.pyc b/eco_epics/__pycache__/device.cpython-35.pyc deleted file mode 100644 index cc06b2f13151fc28e957e5b4910b1b878dac575a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11123 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 diff --git a/eco_epics/__pycache__/motor.cpython-35.pyc b/eco_epics/__pycache__/motor.cpython-35.pyc deleted file mode 100644 index 8a90b906bd2662b2393d16f7929438a82935185b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20251 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 diff --git a/instruments/__pycache__/bernina.cpython-35.pyc b/instruments/__pycache__/bernina.cpython-35.pyc deleted file mode 100644 index 8530256f5a7037bbaf970958bc926824e5b3aedc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1002 zcmYjP%We}f6uq8jGD%7$s)pI1AW@Yp$Sjd~35l}ErkgH6me6QA<0MY!h3%9kN>+i7 zLEjhtKJvy-g{=$RhTk@K$r{6g3N|6b0Bje^BUcQa7!#o8h^j>_kjB7--4_SKLBV8ZpOfTn73gI zaQ5{L&;YW)KrDdp4!-h0@Oua^L!-6s0kqpQCpZutkr zx?v@pH)LS*TOb>&K^+J;Hmq&KMK~v>HKTZjh@TdOeRGS1bhHy$X@ZPenXI@-H0J1&!gQHM(obfBQO0 zCNioeAEmR%ynK{LIV-MMJd28Dy^JtI#7p#B6s%M-+RwzOUh0E5Q7TDiF~;L5&KN%W z5egv3Bp^?5KO;vd1JuP6#D$rU^I?ZR+7HfXA5EA6qCsq?G3Mo@q6Z7bkrvM6$biB& z25xM|RCsvSt-BVPY$9vtiY;Z+I#v>ov!=TTqTl$uEvjshv-c*QJV0?s4y}Q6NV>hp HnujfDKsYL3mgV zzw{!%Pjl{?#{l>~dANnk^2AakXKJ-Sni-s;JHl|ATbW#gRl8L4(-3}_%5^(jYc z>pT2_I;I(V__<7%O(oJ&RIg&TOsh_IshBtE-gLHGPCM>Ob~e1O8s3)T#%-ZPg4jD@ IXDsl30rJO!g8%>k diff --git a/xoptics/__pycache__/attenuator_aramis.cpython-35.pyc b/xoptics/__pycache__/attenuator_aramis.cpython-35.pyc deleted file mode 100755 index f79287482c211349b4756d6e50b1f3251b8f276a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmWgR<>j)z`8Cprfq~&M5W@izkmUfx#Uel=1&A0Kau^tL85yD&85mQT7=ksKUxL(V zGT!3$%`eF>3QA4RFG}&#WV$7ml3JFToLU^8o|>0hl$fKJ3z9D`0x4g~P{abHz{D?O z{fzwFRQ;UP-0al&4E@~7f=Yd$Df$)p1tpou#rlaQC8>F(i9pTqiA9OInZ Date: Sun, 12 Nov 2017 16:50:56 +0100 Subject: [PATCH 04/10] added more components --- devices_general/detectors.py | 40 +++++++++++++++++++++++++++++- devices_general/motors.py | 7 +++++- instruments/bernina.py | 1 + xdiagnostics/intensity_monitors.py | 9 +++++++ xoptics/attenuator_aramis.py | 22 +++++++++++++++- xoptics/offsetMirrors.py | 14 +++++++++++ xoptics/reflaser.py | 0 xoptics/slits.py | 29 ++++++++++++++++++++++ 8 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 xdiagnostics/intensity_monitors.py create mode 100644 xoptics/offsetMirrors.py create mode 100644 xoptics/reflaser.py create mode 100644 xoptics/slits.py diff --git a/devices_general/detectors.py b/devices_general/detectors.py index d720b10..1497e9d 100755 --- a/devices_general/detectors.py +++ b/devices_general/detectors.py @@ -1,14 +1,20 @@ import numpy as np from epics import caget +from cam_server import PipelineClient +from cam_server.utils import get_host_port_from_stream_address +from bsread import source, SUB + + _cameraArrayTypes = ['monochrome','rgb'] class CameraCA: - def __init__(self, pvname, cameraArrayType='monochrome'): + def __init__(self, pvname, cameraArrayType='monochrome',elog=None): self.Id = pvname self.isBS = False self.px_height = None self.px_width = None + self.elog = elog def get_px_height(self): if not self.px_height: @@ -28,6 +34,38 @@ class CameraCA: return i.reshape(h,w) +class CameraBS: + def __init__(self,Id,elog): + # First create the pipeline for the selected camera. + client = PipelineClient() + + self._instance_id, self._stream_address = \ + client.create_instance_from_config(\ + {"camera_name": Id}) + + # Extract the stream host and port from the stream_address. + self._stream_host, self._stream_port = \ + get_host_port_from_stream_address(stream_address) + self.checkServer() + + def checkServer(self): + # Check if your instance is running on the server. + if self._instance_id not in client.get_server_info()["active_instances"]: + raise ValueError("Requested pipeline is not running.") + def get_message(self): + # Open connection to the stream. When exiting the 'with' section, the source disconnects by itself. + with source(host=self._stream_host, port=self._stream_port, mode=SUB) as input_stream: + input_stream.connect() + + # Read one message. + message = input_stream.receive() + + # Print out the received stream data - dictionary. + # print("Dictionary with data:\n", message.data.data) + + # Print out the X center of mass. + # print("X center of mass: ", message.data.data["x_center_of_mass"].value) + return message.data diff --git a/devices_general/motors.py b/devices_general/motors.py index eeb0b91..2a7f7bb 100755 --- a/devices_general/motors.py +++ b/devices_general/motors.py @@ -12,9 +12,10 @@ def _keywordChecker(kw_key_list_tups): assert tkey in tlist, "Keyword %s should be one of %s"%(tkw,tlist) class MotorRecord: - def __init__(self,pvname): + def __init__(self,pvname, elog=None): self.Id = pvname self._motor = _Motor(pvname) + self._elog = elog # Conventional methods and properties for all Adjustable objects @@ -134,6 +135,10 @@ class MotorRecord: def __repr__(self): return self.__str__() + def __call__(self,value,*args,**kwargs): + self.changeTo(value,*args,**kqwargs) + + diff --git a/instruments/bernina.py b/instruments/bernina.py index db928e6..4d50d76 100755 --- a/instruments/bernina.py +++ b/instruments/bernina.py @@ -18,6 +18,7 @@ def _attach_device(devDict,devId): print(istr) exec(istr) tdev = eval('_%s(Id=\'%s\')'%(eco_type_name,devId)) + tdev.name = dev_alias globals().update([(dev_alias,tdev)]) diff --git a/xdiagnostics/intensity_monitors.py b/xdiagnostics/intensity_monitors.py new file mode 100644 index 0000000..75cb247 --- /dev/null +++ b/xdiagnostics/intensity_monitors.py @@ -0,0 +1,9 @@ + +class GasDetector: + def __init__(self): + pass + +class SolidTargetDetector: + def __init__(self): + pass + diff --git a/xoptics/attenuator_aramis.py b/xoptics/attenuator_aramis.py index 7fb27d8..c33f827 100755 --- a/xoptics/attenuator_aramis.py +++ b/xoptics/attenuator_aramis.py @@ -1,7 +1,27 @@ from ..devices_general.motors import MotorRecord class AttenuatorAramis: - def __init__(idpv='SAROP-OATT135'): + def __init__(Id,elog=None): + self.Id = Id + pass + def __call__(): + pass + def __str__(): + pass + def __status__(): + + def updateE(): + pass + def set_transmission(self,value): + pass + def setE(): + pass + + def get_transmission(self,E=current): + pass + + + diff --git a/xoptics/offsetMirrors.py b/xoptics/offsetMirrors.py new file mode 100644 index 0000000..19bdb12 --- /dev/null +++ b/xoptics/offsetMirrors.py @@ -0,0 +1,14 @@ +class OffsetMirror: + def __init__(self,Id,deflection='up',elog=None): + self.elog = elog + self.deflection = deflection + if deflection is 'up': + self.x + + def out(self): + pass + + def in(self): + pass + + diff --git a/xoptics/reflaser.py b/xoptics/reflaser.py new file mode 100644 index 0000000..e69de29 diff --git a/xoptics/slits.py b/xoptics/slits.py new file mode 100644 index 0000000..99fdd31 --- /dev/null +++ b/xoptics/slits.py @@ -0,0 +1,29 @@ +from ..devices_general.motors import MotorRecord + +class SlitJJ(Id,elog=None): + def __init__(): + pass + + def set_hg(self,value): + pass + + def set_vg(self,value): + pass + + def set_ho(self,value): + pass + + def set_vo(self,value): + pass + + def set_gap(self,hor,ver): + pass + + def set_offs(self,hor,ver): + pass + + def __call__(self,*args): + self.set_gap(*args) + + + From d8fe2462acabdc088098123b04b0418825dffce9 Mon Sep 17 00:00:00 2001 From: Henrik Lemke Date: Sun, 12 Nov 2017 16:52:03 +0100 Subject: [PATCH 05/10] edit gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 7a60b85..5942bbc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ __pycache__/ *.pyc +*.swp From 89d54389263611ee2b54e482502095b70ac1aad0 Mon Sep 17 00:00:00 2001 From: Henrik Lemke Date: Sun, 12 Nov 2017 19:38:30 +0100 Subject: [PATCH 06/10] added empty file --- acquisition/scan.py | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 acquisition/scan.py diff --git a/acquisition/scan.py b/acquisition/scan.py new file mode 100644 index 0000000..33dc359 --- /dev/null +++ b/acquisition/scan.py @@ -0,0 +1,3 @@ +import pyscan + + From 861ac3c0def3d567bacd337e90572aa05993c102 Mon Sep 17 00:00:00 2001 From: Roman Mankowsky Date: Mon, 13 Nov 2017 10:01:37 +0100 Subject: [PATCH 07/10] Changed the get_current_value function in devices_general/motors.py to return the readback value (.RBV) instead of the value (.VAL) of the PV --- aliases/bernina.py | 2 +- devices_general/motors.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/aliases/bernina.py b/aliases/bernina.py index 8053b23..733e81d 100755 --- a/aliases/bernina.py +++ b/aliases/bernina.py @@ -122,7 +122,7 @@ aliases = { 'SARES20-PROF142-M1' : { 'alias' : 'Xeye', 'z_und' : 142, - 'desc' : 'General purpose station', + 'desc' : 'Mobile X-ray eye in Bernina hutch', 'eco_type' : 'xdiagnostics.profile_monitors.Bernina_XEYE'}, 'SLAAR21-LMOT' : { 'alias' : 'LasExp', diff --git a/devices_general/motors.py b/devices_general/motors.py index 2a7f7bb..3cb4422 100755 --- a/devices_general/motors.py +++ b/devices_general/motors.py @@ -44,11 +44,11 @@ class MotorRecord: """ Adjustable convention""" _keywordChecker([('posType',posType,_posTypes)]) if posType == 'user': - return self._motor.get_position() + return self._motor.get_position( readback=True) if posType == 'dial': - return self._motor.get_position(dial=True) + return self._motor.get_position( readback=True, dial=True) if posType == 'raw': - return self._motor.get_position(raw=True) + return self._motor.get_position( readback=True, raw=True) def set_current_value(self,value,posType='user'): """ Adjustable convention""" From 3d4f1574890080d82df4c9fa852828757a626388 Mon Sep 17 00:00:00 2001 From: Roman Mankowsky Date: Mon, 13 Nov 2017 10:49:33 +0100 Subject: [PATCH 08/10] Added gui() function to camera in detectors.py --- aliases/bernina.py | 5 +++++ devices_general/detectors.py | 14 +++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/aliases/bernina.py b/aliases/bernina.py index 733e81d..0e86b2d 100755 --- a/aliases/bernina.py +++ b/aliases/bernina.py @@ -104,6 +104,11 @@ aliases = { 'alias' : 'MonAtt', 'z_und' : 138, 'desc' : 'Intensity/Position monitor after Attenuator'}, + 'SAROP21-PPRM138' : { + 'alias' : 'ProfAtt', + 'z_und' : 138, + 'desc' : 'Profile monitor after Attenuator', + 'eco_type' : 'xdiagnostics.profile_monitors.Pprm'}, 'SAROP21-OKBV139' : { 'alias' : 'KbVer', 'z_und' : 139, diff --git a/devices_general/detectors.py b/devices_general/detectors.py index 1497e9d..780a62f 100755 --- a/devices_general/detectors.py +++ b/devices_general/detectors.py @@ -1,9 +1,11 @@ import numpy as np from epics import caget +from epics import PV from cam_server import PipelineClient from cam_server.utils import get_host_port_from_stream_address from bsread import source, SUB +import subprocess _cameraArrayTypes = ['monochrome','rgb'] @@ -32,7 +34,17 @@ class CameraCA: numpix = int(caget(self.Id+':FPICTURE.NORD')) i = caget(self.Id+':FPICTURE', count=numpix) return i.reshape(h,w) - + + + def gui(self, guiType='xdm'): + """ Adjustable convention""" + cmd = ['caqtdm','-macro'] + + cmd.append('\"NAME=%s,CAMNAME=%s\"'%(self.Id, self.Id)) + cmd.append('/sf/controls/config/qt/Camera/CameraMiniView.ui') + return subprocess.Popen(' '.join(cmd),shell=True) + +#/sf/controls/config/qt/Camera/CameraMiniView.ui" with macro "NAME=SAROP21-PPRM138,CAMNAME=SAROP21-PPRM138 class CameraBS: def __init__(self,Id,elog): From d674965a3c98c491a7ecc0fb2935c486062ea833 Mon Sep 17 00:00:00 2001 From: Roman Mankowsky Date: Mon, 13 Nov 2017 10:50:27 +0100 Subject: [PATCH 09/10] Added empty files to /loptics --- loptics/bernina_smaract_tower.py | 18 ++++++++++++++++++ loptics/standa_mirror.py | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100755 loptics/bernina_smaract_tower.py create mode 100755 loptics/standa_mirror.py diff --git a/loptics/bernina_smaract_tower.py b/loptics/bernina_smaract_tower.py new file mode 100755 index 0000000..7e12ed1 --- /dev/null +++ b/loptics/bernina_smaract_tower.py @@ -0,0 +1,18 @@ +from ..devices_general.motors import MotorRecord +from epics import PV + +class Laser_Exp: + def __init__(self,Id): + self.Id = Id + + ### Mirrors used in the expeirment ### + try: + self.phi = MotorRecord(Id+'-M517:MOT') + except: + print('No Standa steering phi mirror') + pass + try: + self.th = MotorRecord(Id+'-M518:MOT') + except: + print('No Standa steering theta mirror') + pass diff --git a/loptics/standa_mirror.py b/loptics/standa_mirror.py new file mode 100755 index 0000000..7e12ed1 --- /dev/null +++ b/loptics/standa_mirror.py @@ -0,0 +1,18 @@ +from ..devices_general.motors import MotorRecord +from epics import PV + +class Laser_Exp: + def __init__(self,Id): + self.Id = Id + + ### Mirrors used in the expeirment ### + try: + self.phi = MotorRecord(Id+'-M517:MOT') + except: + print('No Standa steering phi mirror') + pass + try: + self.th = MotorRecord(Id+'-M518:MOT') + except: + print('No Standa steering theta mirror') + pass From e919dd6c9e135cb7aff522c233d1d94db0b46c67 Mon Sep 17 00:00:00 2001 From: Roman Mankowsky Date: Mon, 13 Nov 2017 13:16:29 +0100 Subject: [PATCH 10/10] Added get_MoveDone function to motors.py, which returns .DMOV value = 1: move done = 0: still moving --- devices_general/motors.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/devices_general/motors.py b/devices_general/motors.py index 3cb4422..0b28125 100755 --- a/devices_general/motors.py +++ b/devices_general/motors.py @@ -1,6 +1,7 @@ from ..eco_epics.motor import Motor as _Motor import subprocess from threading import Thread +from epics import PV _MotorRocordStandardProperties = \ {} @@ -40,15 +41,15 @@ class MotorRecord: pass - def get_current_value(self,posType='user'): + def get_current_value(self,posType='user',readback=True): """ Adjustable convention""" _keywordChecker([('posType',posType,_posTypes)]) if posType == 'user': - return self._motor.get_position( readback=True) + return self._motor.get_position( readback=readback) if posType == 'dial': - return self._motor.get_position( readback=True, dial=True) + return self._motor.get_position( readback=readback, dial=True) if posType == 'raw': - return self._motor.get_position( readback=True, raw=True) + return self._motor.get_position( readback=readback, raw=True) def set_current_value(self,value,posType='user'): """ Adjustable convention""" @@ -80,6 +81,12 @@ class MotorRecord: """ Adjustable convention""" pass + def get_moveDone(self): + """ Adjustable convention""" + """ 0: moving 1: move done""" + return PV(str(self.Id+".DMOV")).value + + def set_limits(self, values, posType='user', relative_to_present=False): """ Adjustable convention""" _keywordChecker([('posType',posType,_posTypes)]) @@ -122,7 +129,11 @@ class MotorRecord: def wm(self,*args,**kwargs): return self.get_current_value(*args,**kwargs) def mvr(self,value,*args,**kwargs): - startvalue = self.get_current_value(*args,**kwargs) + + if(self.get_moveDone == 1): + startvalue = self.get_current_value(readback=True,*args,**kwargs) + else: + startvalue = self.get_current_value(readback=False,*args,**kwargs) self._currentChange = self.changeTo(value+startvalue,*args,**kwargs) def wait(self): self._currentChange.wait()