diff --git a/.gitignore b/.gitignore index 37cbf09b..fe0d44f6 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ O.* bin/ /db/ dbd/ +/iocsh/ html/ include/ lib/ @@ -16,3 +17,4 @@ auto_settings.sav* auto_positions.sav* *.local makelog.txt +.loglogin diff --git a/.loglogin b/.loglogin deleted file mode 100644 index f989b568..00000000 --- a/.loglogin +++ /dev/null @@ -1,2 +0,0 @@ -02/17/2021 - 08:26:06 - bm17-bluesky -02/17/2021 - 08:34:14 - bm17-bluesky diff --git a/configure/RELEASE b/configure/RELEASE index f1908cec..59171a2a 100644 --- a/configure/RELEASE +++ b/configure/RELEASE @@ -9,14 +9,16 @@ # # Add your declarations here + + # SUPPORT=/home/oxygen/MOONEY/epics/synAppsSVN/support -SUPPORT=/APSshare/epics/synApps_6_1/support-v7 +SUPPORT=/APSshare/epics/synApps_6_2_1/support -ASYN=$(SUPPORT)/asyn-R4-36 -IPAC=$(SUPPORT)/ipac-2-15 -SNCSEQ=$(SUPPORT)/seq-2-2-6 +ASYN=$(SUPPORT)/asyn-R4-42 +IPAC=$(SUPPORT)/ipac-2-16 +SNCSEQ=$(SUPPORT)/seq-2-2-9 -EPICS_BASE=/APSshare/epics/base-7.0.3 +EPICS_BASE=/APSshare/epics/base-7.0.4.1 # These lines allow developers to override these RELEASE settings # without having to modify this file directly. diff --git a/ipApp/Db/KeyenceCL3000.proto b/ipApp/Db/KeyenceCL3000.proto new file mode 100644 index 00000000..2c7e3162 --- /dev/null +++ b/ipApp/Db/KeyenceCL3000.proto @@ -0,0 +1,97 @@ +Terminator = CR; + +emission_ctrl { + out "LC,%i"; + in "LC"; + @mismatch {in "%(\$1:errorString)s";} +} + +setMode { + out "%s"; + in "%(\$1:mode_RBV)s"; + @mismatch {in "%(\$1:errorString)s";} +} + +autoZero { + out "ZS,%i,\$1"; + in "ZS"; + @mismatch {in "%(\$2:\$1:errorString)s";} +} + +setOffset { + out "SW,OF,\$1,%+08.4f"; + in "SW,OF"; + @mismatch {in "%(\$2:\$1:errorString)s";} +} + +setOffsetStr { + out "SW,OF,\$1,%s"; + in "SW,OF"; + @mismatch {in "%(\$2:\$1:errorString)s";} +} + +getOffset { + out "SR,OF,\$1"; + in "SR,OF,\$1,%f"; + @mismatch {in "%(\$2:\$1:errorString)s";} +} + +setScaling { + out "SW,SC,\$1,+00.0000,+00.0000,+01.0000,%+08.4f"; + in "SW,SC"; + @mismatch {in "%(\$2:\$1:errorString)s";} +} + +setScalingStr { + out "SW,SC,\$1,%s"; + in "SW,SC"; + @mismatch {in "%(\$2:\$1:errorString)s";} +} + + +getScaling { + out "SR,SC,\$1"; + in "SR,SC,\$1,%*f,%*f,%*f,%f"; + @mismatch {in "%(\$2:\$1:errorString)s";} +} + +# Measurement value get request options. +# 0: Measurement value only +# 1: Measurement value + Measurement result information +# 2: Measurement value + Judgment result +# 3: Measurement value + Measurement result information + Judgment result +# 4: Count value + Measurement value +# 5: Count value + Measurement value + Measurement result information +# 6: Count value + Measurement value + Judgment result +# 7: Count value + Measurement value + Measurement result information + Judgment result + + +getMeas { + out "MS,%(\$2:\$1:measType)i,\$1"; + in "MS,%(\$2:\$1:measString)s"; + @mismatch {in "%(\$2:\$1:errorString)s";} +} + +# generic send/receive a command. Note that it requires the first two chars of +# the send string to be the length, so external formatting is required. +sendCmd { + out "%s"; + in "%(\$2:\$1:replyString)s"; +} + +# Unused/not fully tested or troubleshot + + +startAuto { + out "NS,%(\$2:\$1:measType),\$1"; + in "NS"; + @mismatch {in "%(\$2:\$1:errorString)s";} +} + +stopAuto { + out "NT"; + in "NT"; + @mismatch {in "%(\$2:\$1:errorString)s";} +} + + diff --git a/ipApp/Db/KeyenceCL3000_chan.db b/ipApp/Db/KeyenceCL3000_chan.db new file mode 100644 index 00000000..bf8715a1 --- /dev/null +++ b/ipApp/Db/KeyenceCL3000_chan.db @@ -0,0 +1,302 @@ +# Channel specific control of Keyence CL-3000 + +record(bo, "$(P)$(S):$(CHAN):autoZero") +{ + field(DTYP, "stream") + field(OUT, "@KeyenceCL3000.proto autoZero($(CHAN), $(P)$(S)) $(PORT)") + field(DESC, "Turn on/off automatic zeroing") + field(ZNAM, "OFF") + field(ONAM, "ON") +} + +record(ao, "$(P)$(S):$(CHAN):offset_set") +{ +# field(DTYP, "stream") +# field(OUT, "@KeyenceCL3000.proto setOffset($(CHAN), $(P)$(S)) $(PORT)") + field(DESC, "Offset setting") + field(FLNK, "$(P)$(S):$(CHAN):offset_string PP") + field(PREC, "4") + field(PINI, "1") +} + +record(scalcout, "$(P)$(S):$(CHAN):offset_string") +{ + field(DTYP, "stream") + field(INPA, "$(P)$(S):$(CHAN):offset_set PP") + field(AA, "$(MINDISP)") +# field(BB, "SW,OF,$(CHAN),") + field(CALC, "$P(AA,A)") + field(OUT, "@KeyenceCL3000.proto setOffsetStr($(CHAN), $(P)$(S)) $(PORT)") + field(DESC, "Offset setting string") + field(FLNK, "$(P)$(S):$(CHAN):offset_RBV PP") +} + +record(ai, "$(P)$(S):$(CHAN):offset_RBV") +{ + field(DTYP, "stream") + field(INP, "@KeyenceCL3000.proto getOffset($(CHAN), $(P)$(S)) $(PORT)") + field(DESC, "Offset readback") + field(PREC, "4") +} + +record(ao, "$(P)$(S):$(CHAN):scaling_set") +{ +# field(DTYP, "stream") +# field(OUT, "@KeyenceCL3000.proto setScaling($(CHAN), $(P)$(S)) $(PORT)") + field(DESC, "Scaling setting") + field(FLNK, "$(P)$(S):$(CHAN):scaling_string PP") + field(PREC, "4") + field(PINI, "1") +} + +record(scalcout, "$(P)$(S):$(CHAN):scaling_string") +{ + field(DTYP, "stream") + field(A, "0") + field(B, "0") + field(C, "1") + field(INPD, "$(P)$(S):$(CHAN):scaling_set PP") + field(AA, "$(MINDISP)") +# field(BB, "SW,SC,$(CHAN),") + field(CALC, "$P(AA,A)+','+$P(AA,B)+','+$P(AA,C)+','+$P(AA,D)") + field(OUT, "@KeyenceCL3000.proto setScalingStr($(CHAN), $(P)$(S)) $(PORT)") + field(DESC, "Scaling setting string") + field(FLNK, "$(P)$(S):$(CHAN):scaling_RBV PP") +} + +record(ai, "$(P)$(S):$(CHAN):scaling_RBV") +{ + field(DTYP, "stream") + field(INP, "@KeyenceCL3000.proto getScaling($(CHAN), $(P)$(S)) $(PORT)") + field(DESC, "Scaling readback") + field(PREC, "4") +} + +# Measurement value get request options. +# 0: Measurement value only +# 1: Measurement value + Measurement result information +# 2: Measurement value + Judgment result +# 3: Measurement value + Measurement result information + Judgment result +# 4: Count value + Measurement value +# 5: Count value + Measurement value + Measurement result information +# 6: Count value + Measurement value + Judgment result +# 7: Count value + Measurement value + Measurement result information + Judgment result + +record(mbbo, "$(P)$(S):$(CHAN):measType") +{ + field(DTYP, "Soft Channel") + field(ZRST, "Meas value only") + field(ONST, "Meas value + result info") + field(TWST, "Meas value + judgement") + field(THST, "Meas + result + judgement") + field(FRST, "Count + Meas value") + field(FVST, "Count + Meas + result") + field(SXST, "Count + Meas + judgement") + field(SVST, "All") +} + +record(ao, "$(P)$(S):$(CHAN):measurement") +{ + field(DTYP, "stream") + field(OUT, "@KeyenceCL3000.proto getMeas($(CHAN), $(P)$(S)) $(PORT)") + field(DESC, "Measurement value") + field(FLNK, "$(P)$(S):$(CHAN):measString") +} + +record(ai, "$(P)$(S):$(CHAN):measurement_RBV") +{ + field(DTYP, "Soft Channel") + field(PREC, "4") + field(EGU, "mm") + field(DESC, "Measurement value") +} + +record(ai, "$(P)$(S):$(CHAN):resultInfo_RBV") +{ + field(DTYP, "Soft Channel") + field(DESC, "Result Info") +} + +record(stringin, "$(P)$(S):$(CHAN):judgement_RBV") +{ + field(DTYP, "Soft Channel") + field(DESC, "Judgement value") +} + +record(ai, "$(P)$(S):$(CHAN):Count_RBV") +{ + field(DTYP, "Soft Channel") + field(DESC, "Count value") +} + +######################################################################## +# When an error occurs on command acceptance An error response “ER, **, nn” will be returned. +# The error response consists of the following information: +# ○○ Received command that caused the error +# +# 2-digit error code +# • 72: Timeout error +# • 73: Command length error +# • 74: Undefined command error +# nn • 81: State error +# • 82: Parameter count error +# • 83: Parameter range error +# • 84: Command specific error (Refer to the command +# details) +######################################################################## + +record(stringin, "$(P)$(S):$(CHAN):errorString") +{ + field(DTYP, "Soft Channel") + field(DESC, "Last error") +} + +record(stringin, "$(P)$(S):$(CHAN):measString") +{ + field(DESC, "Measurement string") + field(FLNK, "$(P)$(S):$(CHAN):parseSeq") +} + +######################################################################## +# Parsing measurement string +# +# 4x sCalcouts -- called selectively based on measurement type +# 1. Get first float (either counts or measurement); all types (0-7) +# 2. Get second float/string (either measurement, result or judgment); types 1-7 +# 3. Get third float/string (either result or judgment; types 3, 5-7 +# 4. Get fourth string (judgement); type 7 +# +# 2x sseq +# 1. Choose sCalcouts based on calcMask +# 2. distribute parsed strings based on distMask +# +# 2x calcouts +# 1. calcMask: Calc mask to choose which sCalcouts to complete based on measurement type +# 0 --> calc1 +# 1,2,4 --> calc1, calc2 +# 3,5,6 --> calc1, calc2, calc3 +# 7 --> calc1, calc2, calc3, calc4 +# 2. distMask: Calc mask for sseq to send correct strings to correct RBV PV +# 0 --> 1; 1 --> 9; 2 --> 33; 3 --> 73; 4 --> 6; 5 --> 22; 6 --> 70; 7 --> 150 +# +######################################################################## + + +record(scalcout, "$(P)$(S):$(CHAN):parseMeasStr1") +{ + field(DESC, "Get first element of return string") + field(INAA, "$(P)$(S):$(CHAN):measString NPP") + field(CALC, "BB:=$S(AA,\"%f,%*s\");B:=DBL(BB);BB") +} + +record(scalcout, "$(P)$(S):$(CHAN):parseMeasStr2") +{ + field(DESC, "Get second element - if there") + field(INAA, "$(P)$(S):$(CHAN):measString NPP") + field(INPA, "$(P)$(S):$(CHAN):measType") + field(CALC, "BB:=(A=2?$S(AA,\"%*f,%s\"):$S(AA,\"%*f,%f,%*s\"));BB") +} + +record(scalcout, "$(P)$(S):$(CHAN):parseMeasStr3") +{ + field(DESC, "Get third element - if there") + field(INAA, "$(P)$(S):$(CHAN):measString NPP") + field(INPA, "$(P)$(S):$(CHAN):measType") + field(CALC, "BB:=((A%3)=0?$S(AA,\"%*f,%*f,%s\"):$S(AA,\"%*f,%*f,%f,%*s\"));BB") +} + +record(scalcout, "$(P)$(S):$(CHAN):parseMeasStr4") +{ + field(DESC, "Get fourth element - if there") + field(INAA, "$(P)$(S):$(CHAN):measString NPP") + field(CALC, "BB:=$S(AA,\"%*f,%*f,%*f,%s\");BB") +} + +# Use Meas Type as mask to process the RBVs which pull in various elements of earlier string calc +record(seq, "$(P)$(S):$(CHAN):parseSeq") +{ + field(LNK1, "$(P)$(S):$(CHAN):parseMeasStr1.PROC PP") + field(LNK2, "$(P)$(S):$(CHAN):parseMeasStr2.PROC PP") + field(LNK3, "$(P)$(S):$(CHAN):parseMeasStr3.PROC PP") + field(LNK4, "$(P)$(S):$(CHAN):parseMeasStr4.PROC PP") + field(SELM, "2") + field(SELL, "$(P)$(S):$(CHAN):parseMask PP") + field(FLNK, "$(P)$(S):$(CHAN):distSeq") +} + + +record(sseq, "$(P)$(S):$(CHAN):distSeq") +{ + field(DOL1, "$(P)$(S):$(CHAN):parseMeasStr1.VAL PP") + field(LNK1, "$(P)$(S):$(CHAN):measurement_RBV PP") + field(DOL2, "$(P)$(S):$(CHAN):parseMeasStr2.VAL PP") + field(LNK2, "$(P)$(S):$(CHAN):measurement_RBV PP") + field(DOL3, "$(P)$(S):$(CHAN):parseMeasStr1.VAL PP") + field(LNK3, "$(P)$(S):$(CHAN):Count_RBV PP") + field(DOL4, "$(P)$(S):$(CHAN):parseMeasStr2.VAL PP") + field(LNK4, "$(P)$(S):$(CHAN):resultInfo_RBV PP") + field(DOL5, "$(P)$(S):$(CHAN):parseMeasStr3.VAL PP") + field(LNK5, "$(P)$(S):$(CHAN):resultInfo_RBV PP") + field(DOL6, "$(P)$(S):$(CHAN):parseMeasStr2.SVAL PP") + field(LNK6, "$(P)$(S):$(CHAN):judgement_RBV PP") + field(DOL7, "$(P)$(S):$(CHAN):parseMeasStr3.SVAL PP") + field(LNK7, "$(P)$(S):$(CHAN):judgement_RBV PP") + field(DOL8, "$(P)$(S):$(CHAN):parseMeasStr4.SVAL PP") + field(LNK8, "$(P)$(S):$(CHAN):judgement_RBV PP") + field(SELM, "2") + field(SELL, "$(P)$(S):$(CHAN):distMask PP") +} + +# Calcs for Masks to determine which elements of the sequences get run +record(acalcout, "$(P)$(S):$(CHAN):parseMask") +{ + field(DESC, "Mask for string parse seq") + field(INPA, "$(P)$(S):$(CHAN):measType CP") + field(INPB, "1") + field(INPC, "3") + field(INPD, "3") + field(INPE, "7") + field(INPF, "3") + field(INPG, "7") + field(INPH, "7") + field(INPI, "15") + field(CALC, "@(A+1)") +# field(CALC, "A=0?1:(A=7?15:(A<3?3:(A=4?3:7)))") +# field(OUT, "$(P)$(S):$(CHAN):parseSeq.SELN") +} + +record(acalcout, "$(P)$(S):$(CHAN):distMask") +{ + field(DESC, "Mask for string parse seq") + field(INPA, "$(P)$(S):$(CHAN):measType CP") + field(INPB, "1") + field(INPC, "9") + field(INPD, "33") + field(INPE, "73") + field(INPF, "6") + field(INPG, "22") + field(INPH, "70") + field(INPI, "150") + field(CALC, "@(A+1)") +# field(OUT, "$(P)$(S):$(CHAN):distSeq.SELN") +} + + +######################################################################## +# +# Generic command handlers +# +######################################################################## + +record(stringout, "$(P)$(S):$(CHAN):sendCmd") +{ + field(DTYP, "stream") + field(OUT, "@KeyenceCL3000.proto sendCmd($(CHAN), $(P)$(S)) $(PORT)") + field(DESC, "Measurement string") + field(FLNK, "$(P)$(S):$(CHAN):replyString PP") +} + +record(stringin, "$(P)$(S):$(CHAN):replyString") +{ + field(DESC, "Measurement string") +} diff --git a/ipApp/Db/KeyenceCL3000_chan_settings.req b/ipApp/Db/KeyenceCL3000_chan_settings.req new file mode 100644 index 00000000..441f4b78 --- /dev/null +++ b/ipApp/Db/KeyenceCL3000_chan_settings.req @@ -0,0 +1,4 @@ +$(P)$(S):$(CHAN):measurement.SCAN +$(P)$(S):$(CHAN):measType +$(P)$(S):$(CHAN):offset_set +$(P)$(S):$(CHAN):scaling_set diff --git a/ipApp/Db/KeyenceCL3000_main.db b/ipApp/Db/KeyenceCL3000_main.db new file mode 100644 index 00000000..e056fd07 --- /dev/null +++ b/ipApp/Db/KeyenceCL3000_main.db @@ -0,0 +1,41 @@ +record(bo, "$(P)$(S):setMode") +{ + field(DESC, "Set mode of device") + field(ZNAM, "Measurement") + field(ONAM, "Setup") +} + +record(scalcout, "$(P)$(S):calcMode") +{ + field(DTYP, "stream") + field(INPA, "$(P)$(S):setMode CP") + field(AA, "R0") + field(BB, "Q0") + field(DTYP, "stream") + field(CALC, "A=0?AA:BB") + field(OUT, "@KeyenceCL3000.proto setMode($(P)$(S)) $(PORT)") + field(FLNK, "$(P)$(S):mode_RBV") +} + +record(stringin, "$(P)$(S):mode_RBV") +{ + field(DESC, "Mode of device") +} + +record(bo, "$(P)$(S):emissControl") +{ + field(DTYP, "stream") + field(OUT, "@KeyenceCL3000.proto emission_ctrl($(P)$(S)) $(PORT)") + field(DESC, "Turn on/off emission control") + field(ZNAM, "OFF") + field(ONAM, "ON") +} + +record(stringin, "$(P)$(S):errorString") +{ + field(DTYP, "Soft Channel") + field(DESC, "Last error") +} + + + diff --git a/ipApp/Db/Thorlabs_SC10.db b/ipApp/Db/Thorlabs_SC10.db new file mode 100644 index 00000000..dd96b53c --- /dev/null +++ b/ipApp/Db/Thorlabs_SC10.db @@ -0,0 +1,247 @@ +# Database for the Thorlabs SC10 shutter controller + + +############################################################################### +# Binary control and readbacks +# +# Note: baud control is not implemented but only has two options 0 (9600) and 1 +# (115k) +############################################################################### + +record(bo, "$(P)$(S):Enable") +{ + field(DTYP, "stream") + field(OUT, "@Thorlabs_SC10.proto setEnable $(PORT)") + field(DESC, "Shutter enable") + field(ZNAM, "Disabled") + field(ONAM, "Enabled") + field(FLNK, "$(P)$(S):Enable_RBV PP") +} + +record(bi, "$(P)$(S):Enable_RBV") +{ + field(DTYP, "stream") + field(INP, "@Thorlabs_SC10.proto getEnable $(PORT)") + field(DESC, "Shutter enable status") + field(ZNAM, "Disabled") + field(ONAM, "Enabled") +} + +record(bo, "$(P)$(S):TriggerMode") +{ + field(DTYP, "stream") + field(OUT, "@Thorlabs_SC10.proto setTrig $(PORT)") + field(DESC, "Shutter trigger mode") + field(ZNAM, "Internal") + field(ONAM, "External") + field(FLNK, "$(P)$(S):TriggerMode_RBV PP") +} + +record(bi, "$(P)$(S):TriggerMode_RBV") +{ + field(DTYP, "stream") + field(INP, "@Thorlabs_SC10.proto getTrig $(PORT)") + field(DESC, "Shutter trigger mode status") + field(ZNAM, "Internal") + field(ONAM, "External") +} + +record(bo, "$(P)$(S):ExtTriggerOutMode") +{ + field(DTYP, "stream") + field(OUT, "@Thorlabs_SC10.proto setXTO $(PORT)") + field(DESC, "External trigger out mode") + field(ZNAM, "Shutter") + field(ONAM, "Controller") + field(FLNK, "$(P)$(S):ExtTriggerOutMode_RBV PP") +} + +record(bi, "$(P)$(S):ExtTriggerOutMode_RBV") +{ + field(DTYP, "stream") + field(INP, "@Thorlabs_SC10.proto getXTO $(PORT)") + field(DESC, "External trigger out mode") + field(ZNAM, "Shutter") + field(ONAM, "Controller") +} + +record(bi, "$(P)$(S):ClosedStatus_RBV") +{ + field(DTYP, "stream") + field(INP, "@Thorlabs_SC10.proto getClosed $(PORT)") + field(DESC, "Shutter Closed status") + field(ZNAM, "Open") + field(ONAM, "Closed") +} + +record(bi, "$(P)$(S):InterlockStatus_RBV") +{ + field(DTYP, "stream") + field(INP, "@Thorlabs_SC10.proto getInterlock $(PORT)") + field(DESC, "Shutter Closed status") + field(ZNAM, "Un-tripped") + field(ONAM, "Tripped") +} + +############################################################################### +# Multi-bit Binary control and readbacks +############################################################################### + +record(mbbo, "$(P)$(S):Mode"){ + field(DTYP, "Soft Channel") + field(ZRST, "Manual") + field(ONST, "Auto") + field(TWST, "Single") + field(THST, "Repeat") + field(FRST, "External Gate") +} + +record(calcout, "$(P)$(S):ModeCalc"){ + field(INPA, "$(P)$(S):Mode CP") + field(CALC, "A+1") + field(OUT, "$(P)$(S):ModeSet PP") +} + +record(ao, "$(P)$(S):ModeSet") { + field(DTYP, "stream") + field(OUT, "@Thorlabs_SC10.proto setMode $(PORT)") + field(PREC, "0") + field(FLNK, "$(P)$(S):ModeSet_RBV PP") +} + +record(ai, "$(P)$(S):ModeSet_RBV") { + field(DTYP, "stream") + field(INP, "@Thorlabs_SC10.proto getMode $(PORT)") + field(PREC, "0") +} + +record(calcout, "$(P)$(S):ModeRBVCalc"){ + field(INPA, "$(P)$(S):ModeSet_RBV CP") + field(CALC, "A-1") + field(OUT, "$(P)$(S):Mode_RBV PP") +} + +record(mbbi, "$(P)$(S):Mode_RBV"){ + field(DTYP, "Soft Channel") + field(ZRST, "Manual") + field(ONST, "Auto") + field(TWST, "Single") + field(THST, "Repeat") + field(FRST, "External Gate") +} + +############################################################################### +# Integer control and readbacks +############################################################################### + +record(ao, "$(P)$(S):Reps") { + field(DTYP, "stream") + field(OUT, "@Thorlabs_SC10.proto setRep $(PORT)") + field(PREC, "0") + field(DRVH, "99") + field(DRVL, "1") + field(FLNK, "$(P)$(S):Reps_RBV PP") +} + +record(ai, "$(P)$(S):Reps_RBV") { + field(DTYP, "stream") + field(INP, "@Thorlabs_SC10.proto getRep $(PORT)") + field(PREC, "0") +} + +record(ao, "$(P)$(S):OpenTime") { + field(DTYP, "stream") + field(OUT, "@Thorlabs_SC10.proto setOpen $(PORT)") + field(PREC, "0") + field(DRVH, "999999") + field(DRVL, "1") + field(EGU, "ms") + field(FLNK, "$(P)$(S):OpenTime_RBV PP") +} + +record(ai, "$(P)$(S):OpenTime_RBV") { + field(DTYP, "stream") + field(INP, "@Thorlabs_SC10.proto getOpen $(PORT)") + field(PREC, "0") + field(EGU, "ms") +} + +record(ao, "$(P)$(S):ShutTime") { + field(DTYP, "stream") + field(OUT, "@Thorlabs_SC10.proto setShut $(PORT)") + field(PREC, "0") + field(DRVH, "999999") + field(DRVL, "1") + field(EGU, "ms") + field(FLNK, "$(P)$(S):ShutTime_RBV PP") +} + +record(ai, "$(P)$(S):ShutTime_RBV") { + field(DTYP, "stream") + field(INP, "@Thorlabs_SC10.proto getShut $(PORT)") + field(PREC, "0") + field(EGU, "ms") +} + +############################################################################### +# Stream Commands +############################################################################### + +#save (save baud rate and output mode) +record(bo, "$(P)$(S):Save") +{ + field(DTYP, "stream") + field(OUT, "@Thorlabs_SC10.proto saveComm $(PORT)") + field(DESC, "Shutter trigger mode") +} + +#savp (save settings [ex mode, open time, closed time] to EEPROM) +record(bo, "$(P)$(S):SaveProg") +{ + field(DTYP, "stream") + field(OUT, "@Thorlabs_SC10.proto saveProg $(PORT)") + field(DESC, "Shutter trigger mode") +} + +#resp (load settings [ex mode, open time, closed time] from EEPROM) +record(bo, "$(P)$(S):RestoreProg") +{ + field(DTYP, "stream") + field(OUT, "@Thorlabs_SC10.proto restoreProg $(PORT)") + field(DESC, "Shutter trigger mode") +} + +############################################################################### +# Readback updates +############################################################################### + +# seq for updates of all RBVs +record(seq, "$(P)$(S):UpdateRBVs") { + field(SCAN, "1 second") + field(LNK1, "$(P)$(S):Enable_RBV.PROC PP") + field(DLY2, "0.1") + field(LNK2, "$(P)$(S):TriggerMode_RBV.PROC PP") + field(DLY3, "0.1") + field(LNK3, "$(P)$(S):ExtTriggerOutMode_RBV.PROC PP") + field(DLY4, "0.1") + field(LNK4, "$(P)$(S):ClosedStatus_RBV.PROC PP") + field(DLY5, "0.1") + field(LNK5, "$(P)$(S):InterlockStatus_RBV.PROC PP") + field(DLY6, "0.1") + field(LNK6, "$(P)$(S):ModeSet_RBV.PROC PP") + field(DLY7, "0.1") + field(LNK7, "$(P)$(S):Reps_RBV.PROC PP") + field(DLY8, "0.1") + field(LNK8, "$(P)$(S):OpenTime_RBV.PROC PP") + field(DLY9, "0.1") + field(LNK9, "$(P)$(S):ShutTime_RBV.PROC PP") +} + +############################################################################### +# Other +############################################################################### +record(stringin, "$(P)$(S):ID"){ + field(SCAN, "Passive") + field(DTYP, "stream") + field(INP, "@Thorlabs_SC10.proto getID $(PORT)") +} diff --git a/ipApp/Db/Thorlabs_SC10.proto b/ipApp/Db/Thorlabs_SC10.proto new file mode 100644 index 00000000..9e1a8375 --- /dev/null +++ b/ipApp/Db/Thorlabs_SC10.proto @@ -0,0 +1,125 @@ +######################################################################## +# Protocol file for the Thorlabs SC10 shutter controller +# +# Author: M. Wyman (APS) +# Date: July 2023 +######################################################################## + + +ExtraInput = Ignore; +timeout = 2000; +ReadTimeout = 500; + +#Terminator set to be \r for output and \r> for input in asyn options +#Terminator = CR; + + +####################################### +getID { + out "id?"; + in "id?\x0d%s" +} + +####################################### + +setEnable{ + out "ens"; + in "ens"; +} + +getEnable{ + out "ens?"; + in "ens?\x0d%{0|1}"; +} + +setTrig{ + out "trig=%{0|1}"; + in "trig=%{0|1}"; +} + +getTrig{ + out "trig?"; + in "trig?\x0d%{0|1}"; +} + +setXTO{ + out "xto=%{0|1}"; + in "xto=%{0|1}"; +} + +getXTO{ + out "xto?"; + in "xto?\x0d%{0|1}"; +} + +getClosed{ + out "closed?"; + in "closed?\x0d%{0|1}"; +} + +getInterlock{ + out "interlock?"; + in "interlock?\x0d%{0|1}"; +} + +####################################### +#multi-bit binary + +setMode{ + out "mode=%i"; + in "mode=%i"; +} + +getMode{ + out "mode?"; + in "mode?\x0d%i"; +} + +####################################### + +setRep{ + out "rep=%i"; + in "rep=%i"; +} + +getRep{ + out "rep?"; + in "rep?\x0d%i"; +} + +setOpen{ + out "open=%i"; + in "open=%i"; +} + +getOpen{ + out "open?"; + in "open?\x0d%i"; +} + +setShut{ + out "shut=%i"; + in "shut=%i"; +} + +getShut{ + out "shut?"; + in "shut?\x0d%i"; +} + +####################################### + +saveComm{ + out "save"; + in "save"; +} + +saveProg{ + out "savp"; + in "savp"; +} + +restoreProg{ + out "resp"; + in "resp"; +} diff --git a/ipApp/Db/Thorlabs_SC10_settings.req b/ipApp/Db/Thorlabs_SC10_settings.req new file mode 100644 index 00000000..29bf8daf --- /dev/null +++ b/ipApp/Db/Thorlabs_SC10_settings.req @@ -0,0 +1,8 @@ +$(P)$(S):UpdateRBVs.SCAN +$(P)$(S):ShutTime +$(P)$(S):OpenTime +$(P)$(S):Reps +$(P)$(S):Mode +$(P)$(S):ExtTriggerOutMode +$(P)$(S):TriggerMode +$(P)$(S):Enable diff --git a/ipApp/Db/XIA_pfcu_filters.db b/ipApp/Db/XIA_pfcu_filters.db new file mode 100644 index 00000000..7567ccec --- /dev/null +++ b/ipApp/Db/XIA_pfcu_filters.db @@ -0,0 +1,353 @@ +######################################################################## +# +# XIA PFCU 4-filter stream support +# +# +# Author: M. Wyman (APS) +# Date: March 2023 +######################################################################## + +######################################################################## +# Mode configuration PVs +######################################################################## + +record(bo, "$(P)$(F):mode"){ + field(ZNAM,"Filter") + field(ONAM,"Shutter") + field(PINI, "YES") + field(VAL, "0") +} + +record(calcout, "$(P)$(F):calcMode"){ + field(INPA, "$(P)$(F):setMode CP") + field(CALC, "A=0?4:2") + field(DTYP, "stream") + field(OUT, "@XIA_pfcu_filters.proto setMode($(ADDR), $(P)$(F):calcModeRBV.AA) $(PORT)") +# field(OUT, "$(P)$(F):setMode PP") + field(FLNK, "$(P)$(F):calcModeRBV PP") +} + +#record(bo, "$(P)$(F):setMode"){ +# field(DTYP, "stream") +# field(OUT, "@XIA_pfcu_filters.proto setMode($(ADDR), $(P)$(F):calcModeRBV.AA) $(PORT)") +# field(FLNK, "$(P)$(F):calcModeRBV PP") +#} + +record(scalcout, "$(P)$(F):calcModeRBV"){ + field(BB, "Disabled") + field(CALC, "AA=BB?0:1") + field(OUT, "$(P)$(F):modeRBV PP") +} + +record(bi, "$(P)$(F):modeRBV") { + field(ZNAM,"Filter") + field(ONAM,"Shutter") +} + +######################################################################## +# Filter configuration PVs +######################################################################## + +record(mbbo, "$(P)$(F):config"){ + field(DTYP, "Soft Channel") + field(ZRST, "0000") + field(ONST, "0001") + field(TWST, "0010") + field(THST, "0011") + field(FRST, "0100") + field(FVST, "0101") + field(SXST, "0110") + field(SVST, "0111") + field(EIST, "1000") + field(NIST, "1001") + field(TEST, "1010") + field(ELST, "1011") + field(TVST, "1100") + field(TTST, "1101") + field(FTST, "1110") + field(FFST, "1111") + field(OUT, "$(P)$(F):setConfig PP") +} + +record(transform, "$(P)$(F):configTransform"){ + field(INPA, "$(P)$(F):config CP") + field(CLCB, "(A>>3)%2") + field(OUTB, "$(P)$(F):filter1 PP") + field(CLCC, "(A>>2)%2") + field(OUTC, "$(P)$(F):filter2 PP") + field(CLCD, "(A>>1)%2") + field(OUTD, "$(P)$(F):filter3 PP") + field(CLCE, "A%2") + field(OUTE, "$(P)$(F):filter4 PP") +} + +record(calcout, "$(P)$(F):calcConfig") +{ + field(DISV, "1") + field(SDIS, "$(P)$(F):setConfig.PACT") + field(INPA, "$(P)$(F):filter1 CP") + field(INPB, "$(P)$(F):filter2 CP") + field(INPC, "$(P)$(F):filter3 CP") + field(INPD, "$(P)$(F):filter4 CP") + field(CALC, "A*8+B*4+C*2+D") + field(OUT, "$(P)$(F):setConfig PP") +} + +record(mbbo, "$(P)$(F):setConfig"){ + field(DISV, "1") + field(SDIS, "$(P)$(F):config_sync.PACT") + field(DTYP, "stream") + field(ZRST, "0000") + field(ONST, "0001") + field(TWST, "0010") + field(THST, "0011") + field(FRST, "0100") + field(FVST, "0101") + field(SXST, "0110") + field(SVST, "0111") + field(EIST, "1000") + field(NIST, "1001") + field(TEST, "1010") + field(ELST, "1011") + field(TVST, "1100") + field(TTST, "1101") + field(FTST, "1110") + field(FFST, "1111") + + field(OUT, "@XIA_pfcu_filters.proto setState($(ADDR), $(P)$(F):) $(PORT)") + field(FLNK, "$(P)$(F):calcConfigRBV") +} + +record(calcout, "$(P)$(F):readConfig") { + field(DTYP, "stream") + field(CALC, "0") + field(OUT, "@XIA_pfcu_filters.proto getState($(ADDR), $(P)$(F):) $(PORT)") + field(PINI, "YES") + field(FLNK, "$(P)$(F):calcConfigRBV") +} + +record(scalcout, "$(P)$(F):calcConfigRBV"){ + field(INPA, "$(P)$(F):filter1_RBV PP") + field(INPB, "$(P)$(F):filter2_RBV PP") + field(INPC, "$(P)$(F):filter3_RBV PP") + field(INPD, "$(P)$(F):filter4_RBV PP") + field(CALC, "AA:=PRINTF('%i',A)+PRINTF('%i',B)+PRINTF('%i',C)+PRINTF('%i',D);AA") + field(OUT, "$(P)$(F):config_RBV PP") +} + +record(mbbi, "$(P)$(F):config_RBV"){ + field(ZRST, "0000") + field(ONST, "0001") + field(TWST, "0010") + field(THST, "0011") + field(FRST, "0100") + field(FVST, "0101") + field(SXST, "0110") + field(SVST, "0111") + field(EIST, "1000") + field(NIST, "1001") + field(TEST, "1010") + field(ELST, "1011") + field(TVST, "1100") + field(TTST, "1101") + field(FTST, "1110") + field(FFST, "1111") + field(FLNK, "$(P)$(F):config_sync") +} + +record(mbbo, "$(P)$(F):config_sync"){ + field(DOL, "$(P)$(F):config_RBV NPP") + field(OMSL, "closed_loop") + field(OUT, "$(P)$(F):config PP") +} + +record(bo, "$(P)$(F):filter1"){ + field(ZNAM,"OUT") + field(ONAM,"IN") +} + +record(bo, "$(P)$(F):filter2"){ + field(ZNAM,"OUT") + field(ONAM,"IN") +} + +record(bo, "$(P)$(F):filter3"){ + field(ZNAM,"OUT") + field(ONAM,"IN") +} + +record(bo, "$(P)$(F):filter4"){ + field(ZNAM,"OUT") + field(ONAM,"IN") +} + +record(mbbi, "$(P)$(F):filter1_RBV"){ + field(ZRST,"Out") + field(ONST,"In") + field(TWST,"Short Circuit") + field(THST,"Open Circuit") +} + +record(mbbi, "$(P)$(F):filter2_RBV"){ + field(ZRST,"Out") + field(ONST,"In") + field(TWST,"Short Circuit") + field(THST,"Open Circuit") +} + +record(mbbi, "$(P)$(F):filter3_RBV"){ + field(ZRST,"Out") + field(ONST,"In") + field(TWST,"Short Circuit") + field(THST,"Open Circuit") +} + +record(mbbi, "$(P)$(F):filter4_RBV"){ + field(ZRST,"Out") + field(ONST,"In") + field(TWST,"Short Circuit") + field(THST,"Open Circuit") +} + +record(ao,"$(P)$(F):filter1_thick") +{ + field(VAL,"0.1626") + field(DESC,"filter 1") + field(EGU, "mm") + field(PREC,"3") +} + +record(ao,"$(P)$(F):filter2_thick") +{ + field(VAL,"0.3226") + field(DESC,"filter 2") + field(EGU, "mm") + field(PREC,"3") +} + +record(ao,"$(P)$(F):filter3_thick") +{ + field(VAL,"0.6325") + field(DESC,"filter 3") + field(EGU, "mm") + field(PREC,"3") +} + +record(ao,"$(P)$(F):filter4_thick") +{ + field(VAL,"1.27") + field(DESC,"filter 4") + field(EGU, "mm") + field(PREC,"3") +} + +record(mbbo, "$(P)$(F):filter1_mat"){ + field(VAL,"0") + field(ZRST,"Al") + field(ONST,"Mo") + field(TWST,"Ti") + field(THST,"Glass") + field(FRST,"Other") + field(DESC,"material filter 1") +} + +record(mbbo, "$(P)$(F):filter2_mat"){ + field(VAL,"0") + field(ZRST,"Al") + field(ONST,"Mo") + field(TWST,"Ti") + field(THST,"Glass") + field(FRST,"Other") + field(DESC,"material filter 2") +} + +record(mbbo, "$(P)$(F):filter3_mat"){ + field(VAL,"0") + field(ZRST,"Al") + field(ONST,"Mo") + field(TWST,"Ti") + field(THST,"Glass") + field(FRST,"Other") + field(DESC,"material filter 3") +} + +record(mbbo, "$(P)$(F):filter4_mat"){ + field(VAL,"0") + field(ZRST,"Al") + field(ONST,"Mo") + field(TWST,"Ti") + field(THST,"Glass") + field(FRST,"Other") + field(DESC,"material filter 4") +} + +record(stringout,"$(P)$(F):filter1_other") { +} +record(stringout,"$(P)$(F):filter2_other") { +} +record(stringout,"$(P)$(F):filter3_other") { +} +record(stringout,"$(P)$(F):filter4_other") { +} + + + + +######################################################################## +# Admistrative PVs +######################################################################## + +record(calcout, "$(P)$(F):readFault") { + field(DTYP, "stream") + field(CALC, "0") + field(OUT, "@XIA_pfcu_filters.proto fault($(ADDR), $(P)$(F):) $(PORT)") +# field(PINI, "YES") + field(SCAN, "2 second") +} + +record(calcout, "$(P)$(F):clearFault") { + field(DTYP, "stream") + field(CALC, "0") + field(OUT, "@XIA_pfcu_filters.proto clear($(ADDR), $(P)$(F):) $(PORT)") + field(SCAN, "Passive") +} + +record(bo, "$(P)$(F):control"){ + field(ZNAM,"Locked") + field(ONAM,"Unlocked") + field(PINI, "YES") + field(VAL, "1") +} + +record(scalcout, "$(P)$(F):calcControlMode") +{ + field(INPA, "$(P)$(F):control CP") + field(AA, "L") + field(BB, "U") + field(CALC, "A=0?AA:BB") + field(DTYP, "stream") + field(OUT, "@XIA_pfcu_filters.proto setControl($(ADDR), $(P)$(F):calcControlRBV.AA) $(PORT)") + field(FLNK, "$(P)$(F):calcControlRBV PP") +} + +record(scalcout, "$(P)$(F):calcControlRBV") +{ + field(BB, "Disabled") + field(CALC, "AA=BB?0:1") + field(OUT, "$(P)$(F):modeRBV PP") +} + +record(bi, "$(P)$(F):controlRBV") +{ + field(ZNAM,"Locked") + field(ONAM,"Unlocked") +} + +record(waveform, "$(P)$(F):sysReport") +{ + field(DTYP, "stream") + field(INP, "@XIA_pfcu_filters.proto sysReport($(ADDR)) $(PORT)") + field(PINI, "YES") + field(FTVL, "CHAR") + field(NELM, "1000") +} diff --git a/ipApp/Db/XIA_pfcu_filters.proto b/ipApp/Db/XIA_pfcu_filters.proto new file mode 100644 index 00000000..a02e4590 --- /dev/null +++ b/ipApp/Db/XIA_pfcu_filters.proto @@ -0,0 +1,57 @@ +######################################################################## +# Protocol file for the XIA PFCU 4 filter controller +# +# Author: M. Wyman (APS) +# Date: March 2023 +######################################################################## + +Terminator = CR; +ExtraInput = Ignore; +timeout = 2000; +ReadTimeout = 500; + +setMode { + out "!PFCU\$1 {4|2}"; + in "\%PFCU\$1 OK Shutter Mode %{Disabled|Enabled} DONE\;"; +} + +stateRead { + in "\%PFCU\$1 OK %(\$2filter1_RBV)1s%(\$2filter2_RBV)1s%(\$2filter3_RBV)1s%(\$2filter4_RBV)1s DONE\;"; +} + +setState { + out "!PFCU\$1 W %4.4s"; + stateRead; +# stateRead(\$1, \$2); +# in "\%PFCU\$1 OK %(\$2filter1_RBV)1.1s%(\$2filter2_RBV)1.1s%(\$2filter3_RBV)1.1s%(\$2filter4_RBV)1.1s DONE\;"; +} + +getState { + out "!PFCU\$1 P"; + stateRead; +# stateRead(\$1, \$2); +# in "\%PFCU\$1 OK %(\$2filter1_RBV)1.1s%(\$2filter2_RBV)1.1s%(\$2filter3_RBV)1.1s%(\$2filter4_RBV)1.1s DONE\;"; +} + + +setControl { + out "!PFCU\$1 {L|U}"; + in "\%PFCU\$1 OK %{Locked|Unlocked} DONE\;"; +} + +sysReport { + out "!PFCU\$1 S"; + in "\%PFCU\$1 OK %100c"; +} + +fault { + out "!PFCU\$1 F"; + stateRead; +# stateRead(\$1, \$2); +} + +clear { + out "!PFCU\$1 Z"; + stateRead; +# stateRead(\$1, \$2); +} diff --git a/ipApp/Db/XIA_pfcu_filters_settings.req b/ipApp/Db/XIA_pfcu_filters_settings.req new file mode 100644 index 00000000..910a5a2c --- /dev/null +++ b/ipApp/Db/XIA_pfcu_filters_settings.req @@ -0,0 +1,16 @@ +$(P)$(F):filter1_thick +$(P)$(F):filter2_thick +$(P)$(F):filter3_thick +$(P)$(F):filter4_thick +$(P)$(F):filter1_thick.EGU +$(P)$(F):filter2_thick.EGU +$(P)$(F):filter3_thick.EGU +$(P)$(F):filter4_thick.EGU +$(P)$(F):filter1_mat +$(P)$(F):filter2_mat +$(P)$(F):filter3_mat +$(P)$(F):filter4_mat +$(P)$(F):filter1_other +$(P)$(F):filter2_other +$(P)$(F):filter3_other +$(P)$(F):filter4_other diff --git a/ipApp/Db/uniblitz.proto b/ipApp/Db/uniblitz.proto new file mode 100644 index 00000000..4e143f96 --- /dev/null +++ b/ipApp/Db/uniblitz.proto @@ -0,0 +1,38 @@ +# Protocol file for the Uniblitz shutter controllers +# Developed and tested with the VDM1000 + +############ SVN Repository information ############# +# $Date$ +# $Author$ +# $Revision$ +# $HeadURL$ +# $Id$ +####################################################### + +Terminator = LF; + +checkSync { + out "?"; + in "%{K|J}"; +} + +setShutter { + out "%{A|@}"; + @init { checkSync; } +} + +setGate { + out "%{F|G}"; +} + +setAuxOut { + out "%{D|E}"; +} + +setTrigger { + out "B"; +} + +setReset { + out "C"; +} diff --git a/ipApp/Db/uniblitz_d122.db b/ipApp/Db/uniblitz_d122.db new file mode 100644 index 00000000..7d1eb7d4 --- /dev/null +++ b/ipApp/Db/uniblitz_d122.db @@ -0,0 +1,20 @@ +# Database for the Uniblitz shutter controllers +# Developed and tested with the D-122 + + + +record(bo, "$(P)$(S):Control") +{ + field(DTYP, "stream") + field(OUT, "@uniblitz.proto setShutter $(PORT)") + field(DESC, "Uniblitz shutter control") + field(ZNAM, "Close") + field(ONAM, "Open") +} + +record(bo, "$(P)$(S):Reset") +{ + field(DTYP, "stream") + field(OUT, "@uniblitz.proto setReset $(PORT)") + field(DESC, "Uniblitz Reset") +} diff --git a/ipApp/Db/uniblitz_vcm-d1.db b/ipApp/Db/uniblitz_vcm-d1.db new file mode 100644 index 00000000..29bd973e --- /dev/null +++ b/ipApp/Db/uniblitz_vcm-d1.db @@ -0,0 +1,52 @@ +# Database for the Uniblitz shutter controllers +# Developed and tested with the VCM-D1 + +record(bi, "$(P)$(S):Status") +{ + field(DTYP, "stream") + field(INP, "@uniblitz.proto checkSync $(PORT)") + field(DESC, "Uniblitz sync status") + field(ZNAM, "Off") + field(ONAM, "On") +} + +record(bo, "$(P)$(S):Control") +{ + field(DTYP, "stream") + field(OUT, "@uniblitz.proto setShutter $(PORT)") + field(DESC, "Uniblitz shutter control") + field(ZNAM, "Close") + field(ONAM, "Open") +} + +record(bo, "$(P)$(S):Gate") +{ + field(DTYP, "stream") + field(OUT, "@uniblitz.proto setGate $(PORT)") + field(DESC, "Uniblitz gate control") + field(ZNAM, "Close") + field(ONAM, "Open") +} + +record(bo, "$(P)$(S):AuxOut") +{ + field(DTYP, "stream") + field(OUT, "@uniblitz.proto setAuxOut $(PORT)") + field(DESC, "Uniblitz Aux Out Enable") + field(ZNAM, "Disable") + field(ONAM, "Enable") +} + +record(bo, "$(P)$(S):Trigger") +{ + field(DTYP, "stream") + field(OUT, "@uniblitz.proto setTrigger $(PORT)") + field(DESC, "Uniblitz Trigger") +} + +record(bo, "$(P)$(S):Reset") +{ + field(DTYP, "stream") + field(OUT, "@uniblitz.proto setReset $(PORT)") + field(DESC, "Uniblitz Reset") +} diff --git a/ipApp/iocsh/KeyenceCL3000.iocsh b/ipApp/iocsh/KeyenceCL3000.iocsh new file mode 100644 index 00000000..8bd1a4b3 --- /dev/null +++ b/ipApp/iocsh/KeyenceCL3000.iocsh @@ -0,0 +1,56 @@ +# ### KeyenceCL3000.iocsh ### + +#- ################################################### +#- PREFIX - IOC Prefix +#- INSTANCE - Instance Prefix +#- IP_ADDR - IP address of the PTC10 +#- IP_PORT - IP port number (default: 24685) +#- PORT - Name of asyn port to be created +#- ### Module locations shouldn't need to be passed explicitly +#- IP - Location of IP module +#- ASYN - Location of ASYN module +#- MINDISP - Minimum display format (default "%+08.4f") specific +# to device +#- ################################################### + +##################################################### +# +# Note about MINDISP -- MINDISP is the format string needed +# to express values in terms of the minimum display unit. +# This format is how the CL3000 expects the scaling and +# offset values be delivered as as well as how it delivers +# its measurement value. +# +# For the default format %+08.4f, the range is +/-99.9999 mm, +# so the minimum step is 0.1 um. Leading zeros are +# expected when the value is below 10% of the max (e.g. +# +/-09.9999 mm). +# +# If the minimum step is 10 um, the MINDISP format string +# would be %+08.2f +# +###################################################### + + +drvAsynIPPortConfigure("$(PORT)","$(IP_ADDR):$(IP_PORT=24685)", 0, 0, 0) + +epicsEnvSet("STREAM_PROTOCOL_PATH","$(STREAM_PROTOCOL_PATH):$(IP)/ipApp/Db") + +# Only show errors +asynSetTraceMask("$(PORT)", 0, 1) +# Leave ascii selected so debug messages can be turned on with a single click +asynSetTraceIOMask("$(PORT)", 0, 1) + +# Set end-of-string terminators +asynOctetSetInputEos( "$(PORT)", 0, "\r") +asynOctetSetOutputEos("$(PORT)", 0, "\r") + +# Keyence CL 3000 general commands +dbLoadRecords("$(IP)/db/KeyenceCL3000_main.db","P=$(PREFIX),S=$(INSTANCE),PORT=$(PORT),ADDR=0") + +# Keyence CL 3000 channel commands +dbLoadRecords("$(IP)/db/KeyenceCL3000_chan.db","P=$(PREFIX),S=$(INSTANCE),PORT=$(PORT),MINDISP=$(MINDISP="%+08.4f"),ADDR=0,CHAN=1") + +# Asyn record for troubleshooting +dbLoadRecords("$(ASYN)/db/asynRecord.db","P=$(PREFIX),R=$(INSTANCE):asyn,PORT=$(PORT),ADDR=0,OMAX=0,IMAX=0") + diff --git a/ipApp/iocsh/Thorlabs_SC10.iocsh b/ipApp/iocsh/Thorlabs_SC10.iocsh new file mode 100644 index 00000000..f0e51520 --- /dev/null +++ b/ipApp/iocsh/Thorlabs_SC10.iocsh @@ -0,0 +1,14 @@ +# ### Thorlabs_SC10.iocsh ### + +#- ################################################### +#- PREFIX - IOC Prefix +#- INSTANCE - Instance Prefix +#- PORT - Serial port name +#- IP - Location of IP module +#- ################################################### + +# SC10 responses end with an ">" +asynOctetSetInputEos( "$(PORT)", -1, "\r>") +asynOctetSetOutputEos("$(PORT)", -1, "\r") + +dbLoadRecords("$(IP)/ipApp/Db/Thorlabs_SC10.db", "P=$(PREFIX),S=$(INSTANCE),PORT=$(PORT)") diff --git a/ipApp/iocsh/XIA_pfcu_filters.iocsh b/ipApp/iocsh/XIA_pfcu_filters.iocsh new file mode 100644 index 00000000..8231b348 --- /dev/null +++ b/ipApp/iocsh/XIA_pfcu_filters.iocsh @@ -0,0 +1,18 @@ +# ### XIA_pfcu_filters.iocsh ### + +#- ################################################### +#- PREFIX - IOC Prefix +#- INSTANCE - Instance Prefix +#- ADDRESS - PFCU Address +#- PORT - Port name of moxa serial server +#- OPTICS - Location of OPTICS module +#- ################################################### + +#asynOctetSetInputEos( "$(PORT)", -1, "\r") +#asynOctetSetOutputEos("$(PORT)", -1, "\r") + +epicsEnvSet("STREAM_PROTOCOL_PATH","$(STREAM_PROTOCOL_PATH):$(IP)/ipApp/Db") +dbLoadRecords("$(IP)/ipApp/Db/XIA_pfcu_filters.db", "P=$(PREFIX),F=$(FILTERNAM=pfcu0),PORT=$(PORT),ADDR=$(ADDRESS=00)") + + + diff --git a/ipApp/iocsh/uniblitz_d122.iocsh b/ipApp/iocsh/uniblitz_d122.iocsh new file mode 100644 index 00000000..8baf0f19 --- /dev/null +++ b/ipApp/iocsh/uniblitz_d122.iocsh @@ -0,0 +1,32 @@ +# ### uniblitz_d122.iocsh ### + +#- ################################################### +#- PREFIX - IOC Prefix +#- INSTANCE - Instance Prefix +#- PORT - Serial port name +#- IP - Location of IP module +#- ################################################### + + +#--------------------------------------------------------------------------------------------------------- +# Uniblitz D122 +# Moxa port is configured for: +# baud = 300 +# bits = 8 +# parity = None +# stop bits = 1 +# +# If computer is ever directly connected to Uniblitz instead of the moxa, +# need to confgiure the serial port, In this intance drvAsynSerialPortConfigure +# is used instead of drvAsynIPPortConfgure. With drvAsynSerialPortConfigure, +# need to add the following : +#! asynSetOption("$(PORT)", -1, "baud", "300") +#! asynSetOption("$(PORT)", -1, "bits", "8") +#! asynSetOption("$(PORT)", -1, "stop", "1") +#! asynSetOption("$(PORT)", -1, "parity", "none") + +asynOctetSetInputEos( "$(PORT)", -1, "\r") +asynOctetSetOutputEos("$(PORT)", -1, "\r") +dbLoadRecords("$(IP)/db/uniblitz_d122.db", "P=$(PREFIX),S=$(INSTANCE),PORT=$(PORT)") + +#--------------------------------------------------------------------------------------------------------- diff --git a/ipApp/iocsh/uniblitz_vcm.iocsh b/ipApp/iocsh/uniblitz_vcm.iocsh new file mode 100644 index 00000000..cf08931d --- /dev/null +++ b/ipApp/iocsh/uniblitz_vcm.iocsh @@ -0,0 +1,32 @@ +# ### uniblitz_vcm.iocsh ### + +#- ################################################### +#- PREFIX - IOC Prefix +#- INSTANCE - Instance Prefix +#- PORT - Serial port name +#- IP - Location of IP module +#- ################################################### + + +#--------------------------------------------------------------------------------------------------------- +# Uniblitz VCM-D1 +# Moxa port is configured for: +# baud = 9600 +# bits = 8 +# parity = None +# stop bits = 1 +# +# If computer is ever directly connected to Uniblitz instead of the moxa, +# need to confgiure the serial port, In this intance drvAsynSerialPortConfigure +# is used instead of drvAsynIPPortConfgure. With drvAsynSerialPortConfigure, +# need to add the following : +#! asynSetOption("$(PORT)", -1, "baud", "9600") +#! asynSetOption("$(PORT)", -1, "bits", "8") +#! asynSetOption("$(PORT)", -1, "stop", "1") +#! asynSetOption("$(PORT)", -1, "parity", "none") + +asynOctetSetInputEos( "$(PORT)", -1, "\n") +asynOctetSetOutputEos("$(PORT)", -1, "\n") +dbLoadRecords("$(IP)/db/uniblitz_vcm-d1.db", "P=$(PREFIX),S=$(INSTANCE),PORT=$(PORT)") + +#--------------------------------------------------------------------------------------------------------- diff --git a/ipApp/op/ui/Keyence_CL3000.ui b/ipApp/op/ui/Keyence_CL3000.ui new file mode 100644 index 00000000..937a1a11 --- /dev/null +++ b/ipApp/op/ui/Keyence_CL3000.ui @@ -0,0 +1,996 @@ + + + MainWindow + + + + 0 + 0 + 562 + 505 + + + + + +QWidget#centralWidget {background: rgba(187, 187, 187, 255);} +QPushButton::menu-indicator {image: url(none.png); width: 0} + +caTable { + font: 10pt; + background: cornsilk; + alternate-background-color: wheat; +} + +caLineEdit { + border-radius: 1px; + background: lightyellow; + color: black; + } + +caTextEntry { + color: rgb(127, 0, 63); + background-color: cornsilk; + selection-color: #0a214c; + selection-background-color: wheat; + border: 1px groove black; + border-radius: 1px; + padding: 1px; +} + +caTextEntry:focus { + padding: 0px; + border: 2px groove darkred; + border-radius: 1px; +} + +QPushButton { + border-color: #00b; + border-radius: 2px; + padding: 3px; + border-width: 1px; + + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(224, 239, 255, 255), + stop:0.5 rgba(199, 215, 230, 255), + stop:1 rgba(184, 214, 236, 255)); +} +QPushButton:hover { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(201, 226, 255, 255), + stop:0.5 rgba(177, 204, 230, 255), + stop:1 rgba(163, 205, 236, 255)); +} +QPushButton:pressed { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(174, 219, 255, 255), + stop:0.5 rgba(165, 199, 230, 255), + stop:1 rgba(134, 188, 236, 255)); +} + +QPushButton:disabled { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(174, 219, 255, 255), + stop:0.5 rgba(165, 199, 230, 255), + stop:1 rgba(134, 188, 236, 255)); +} + +caChoice { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #E1E1E1, stop: 0.4 #DDDDDD, + stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3); +} + +caChoice > QPushButton { + text-align: left; + padding: 1px; +} + +/* when font specified, no font sizing is done any more, font: 10pt; is not bad. You could Enable this when you converted from .adl files +caRelatedDisplay > QPushButton { +font: 10pt; +} + +caShellCommand > QPushButton { +font: 10pt; +} +*/ + +caSlider::groove:horizontal { +border: 1px solid #bbb; +background: lightgrey; +height: 20px; +border-radius: 4px; +} + +caSlider::handle:horizontal { +background: red; +border: 1px solid #777; +width: 13px; +margin-top: -2px; +margin-bottom: -2px; +border-radius: 2px; +} + + + + + + + + + + 0 + 0 + 721 + 26 + + + + 0 + + + + 0 + 53 + 132 + + + + caFrame::Filled + + + + 5 + + + 10 + + + 2 + + + 0 + + + 2 + + + + + + 0 + 0 + + + + + Verdana + 13 + 75 + true + + + + Keyence CL3000 Distance Sensor - $(P)$(S):$(CHAN) + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + ESimpleLabel::Height + + + + 228 + 228 + 228 + + + + + 160 + 160 + 164 + + + + + + + + + + 220 + 400 + 171 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):$(CHAN):judgement_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 100 + 400 + 120 + 28 + + + + Judgement + + + Qt::AlignCenter + + + + + + 59 + 320 + 151 + 28 + + + + Counts + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 60 + 360 + 151 + 28 + + + + Result + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 19 + 40 + 191 + 28 + + + + Measurement Type + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 220 + 40 + 311 + 25 + + + + $(P)$(S):$(CHAN):measType + + + caMenu::Static + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + + + + 220 + 320 + 171 + 25 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):$(CHAN):Count_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 220 + 360 + 171 + 25 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):$(CHAN):resultInfo_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 391 + 200 + 141 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):$(CHAN):scaling_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + 4 + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + + + + 220 + 200 + 171 + 27 + + + + + 0 + 0 + + + + $(P)$(S):$(CHAN):scaling_set + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caLineEdit::Static + + + 4 + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 1.000000000000000 + + + 0.000000000000000 + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + + + + 40 + 200 + 171 + 27 + + + + Scaling + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 390 + 240 + 141 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):$(CHAN):offset_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + 4 + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + + + + 40 + 240 + 171 + 27 + + + + Offset + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 220 + 240 + 171 + 27 + + + + + 0 + 0 + + + + $(P)$(S):$(CHAN):offset_set + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caLineEdit::Static + + + 4 + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 1.000000000000000 + + + 0.000000000000000 + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + + + + 220 + 280 + 171 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):$(CHAN):measurement_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 40 + 280 + 171 + 27 + + + + Measurement + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 221 + 80 + 171 + 25 + + + + $(P)$(S):$(CHAN):measurement.SCAN + + + caMenu::Static + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + + + + 20 + 80 + 191 + 28 + + + + Measurement Rate + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 220 + 160 + 171 + 30 + + + + $(P)$(S):$(CHAN):autoZero + + + caChoice::Static + + + caChoice::Column + + + 1 + + + + + + 20 + 160 + 191 + 28 + + + + Auto-Zeroing + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 220 + 120 + 311 + 30 + + + + $(P)$(S):setMode + + + caChoice::Static + + + caChoice::Column + + + 1 + + + + + + 20 + 120 + 191 + 28 + + + + Mode + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 440 + 470 + 107 + 29 + + + + - More + + + + 228 + 228 + 228 + + + + + 51 + 132 + 0 + + + + Keyence CL3000 + + + Keyence_CL3000_more.ui + + + P=$(P),S=$(S),CHAN=$(CHAN) + + + caRowColMenu::Menu + + + true + + + + + + 400 + 280 + 61 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):$(CHAN):measurement_RBV.EGU + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + + caMenu + QComboBox +
caMenu
+
+ + caChoice + QWidget +
caChoice
+
+ + caRelatedDisplay + QWidget +
caRelatedDisplay
+
+ + caTextEntry + caLineEdit +
caTextEntry
+
+ + caFrame + QFrame +
caFrame
+ 1 +
+ + caLabel + QLabel +
caLabel
+
+ + caLineEdit + QLineEdit +
caLineEdit
+
+
+ + +
diff --git a/ipApp/op/ui/Keyence_CL3000_more.ui b/ipApp/op/ui/Keyence_CL3000_more.ui new file mode 100644 index 00000000..f290456b --- /dev/null +++ b/ipApp/op/ui/Keyence_CL3000_more.ui @@ -0,0 +1,1243 @@ + + + MainWindow + + + + 0 + 0 + 562 + 643 + + + + + +QWidget#centralWidget {background: rgba(187, 187, 187, 255);} +QPushButton::menu-indicator {image: url(none.png); width: 0} + +caTable { + font: 10pt; + background: cornsilk; + alternate-background-color: wheat; +} + +caLineEdit { + border-radius: 1px; + background: lightyellow; + color: black; + } + +caTextEntry { + color: rgb(127, 0, 63); + background-color: cornsilk; + selection-color: #0a214c; + selection-background-color: wheat; + border: 1px groove black; + border-radius: 1px; + padding: 1px; +} + +caTextEntry:focus { + padding: 0px; + border: 2px groove darkred; + border-radius: 1px; +} + +QPushButton { + border-color: #00b; + border-radius: 2px; + padding: 3px; + border-width: 1px; + + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(224, 239, 255, 255), + stop:0.5 rgba(199, 215, 230, 255), + stop:1 rgba(184, 214, 236, 255)); +} +QPushButton:hover { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(201, 226, 255, 255), + stop:0.5 rgba(177, 204, 230, 255), + stop:1 rgba(163, 205, 236, 255)); +} +QPushButton:pressed { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(174, 219, 255, 255), + stop:0.5 rgba(165, 199, 230, 255), + stop:1 rgba(134, 188, 236, 255)); +} + +QPushButton:disabled { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(174, 219, 255, 255), + stop:0.5 rgba(165, 199, 230, 255), + stop:1 rgba(134, 188, 236, 255)); +} + +caChoice { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #E1E1E1, stop: 0.4 #DDDDDD, + stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3); +} + +caChoice > QPushButton { + text-align: left; + padding: 1px; +} + +/* when font specified, no font sizing is done any more, font: 10pt; is not bad. You could Enable this when you converted from .adl files +caRelatedDisplay > QPushButton { +font: 10pt; +} + +caShellCommand > QPushButton { +font: 10pt; +} +*/ + +caSlider::groove:horizontal { +border: 1px solid #bbb; +background: lightgrey; +height: 20px; +border-radius: 4px; +} + +caSlider::handle:horizontal { +background: red; +border: 1px solid #777; +width: 13px; +margin-top: -2px; +margin-bottom: -2px; +border-radius: 2px; +} + + + + + + + + + + 0 + 0 + 721 + 26 + + + + 0 + + + + 0 + 53 + 132 + + + + caFrame::Filled + + + + 5 + + + 10 + + + 2 + + + 0 + + + 2 + + + + + + 0 + 0 + + + + + Verdana + 13 + 75 + true + + + + Keyence CL3000 Distance Sensor - $(P)$(S):$(CHAN) + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + ESimpleLabel::Height + + + + 228 + 228 + 228 + + + + + 160 + 160 + 164 + + + + + + + + + + 220 + 400 + 171 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):$(CHAN):judgement_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 100 + 400 + 120 + 28 + + + + Judgement + + + Qt::AlignCenter + + + + + + 59 + 320 + 151 + 28 + + + + Counts + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 60 + 360 + 151 + 28 + + + + Result + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 19 + 40 + 191 + 28 + + + + Measurement Type + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 220 + 40 + 311 + 25 + + + + $(P)$(S):$(CHAN):measType + + + caMenu::Static + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + + + + 220 + 320 + 171 + 25 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):$(CHAN):Count_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 220 + 360 + 171 + 25 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):$(CHAN):resultInfo_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 391 + 200 + 141 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):$(CHAN):scaling_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + 4 + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + + + + 220 + 200 + 171 + 27 + + + + + 0 + 0 + + + + $(P)$(S):$(CHAN):scaling_set + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caLineEdit::Static + + + 4 + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 1.000000000000000 + + + 0.000000000000000 + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + + + + 40 + 200 + 171 + 27 + + + + Scaling + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 390 + 240 + 141 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):$(CHAN):offset_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + 4 + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + + + + 40 + 240 + 171 + 27 + + + + Offset + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 220 + 240 + 171 + 27 + + + + + 0 + 0 + + + + $(P)$(S):$(CHAN):offset_set + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caLineEdit::Static + + + 4 + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 1.000000000000000 + + + 0.000000000000000 + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + + + + 220 + 280 + 171 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):$(CHAN):measurement_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 40 + 280 + 171 + 27 + + + + Measurement + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 30 + 470 + 181 + 27 + + + + Measurement String + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 220 + 470 + 321 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):$(CHAN):measString + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 30 + 510 + 181 + 27 + + + + Error String + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 220 + 510 + 321 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):$(CHAN):errorString + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 17 + 440 + 521 + 20 + + + + false + + + QFrame::Plain + + + 2 + + + 2 + + + Qt::Horizontal + + + + + + 221 + 80 + 171 + 25 + + + + $(P)$(S):$(CHAN):measurement.SCAN + + + caMenu::Static + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + + + + 20 + 80 + 191 + 28 + + + + Measurement Rate + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + true + + + + 30 + 570 + 191 + 27 + + + + + Liberation Mono + + + + - Calcs + + + + 228 + 228 + 228 + + + + + 53 + 132 + 0 + + + + Parse Mask Calc;Distribution Mask Calc;String Parser 1;String Parser 2;String Parser 3;String Parser 4;Offset String;Scaling String + + + yyArrayCalc_full.ui;yyArrayCalc_full.ui;yysCalcoutRecord_full.ui;yysCalcoutRecord_full.ui;yysCalcoutRecord_full.ui;yysCalcoutRecord_full.ui;yysCalcoutRecord_full.ui;yysCalcoutRecord_full.ui + + + P=$(P)$(S):$(CHAN):,C=parseMask;P=$(P)$(S):$(CHAN):,C=distMask;P=$(P)$(S):$(CHAN):,C=parseMeasStr1;P=$(P)$(S):$(CHAN):,C=parseMeasStr2;P=$(P)$(S):$(CHAN):,C=parseMeasStr3;P=$(P)$(S):$(CHAN):,C=parseMeasStr4;P=$(P)$(S):$(CHAN):,C=offset_string;P=$(P)$(S):$(CHAN):,C=scaling_string + + + caRowColMenu::Menu + + + false;false;false;false;false;false;false;false;false + + + + + true + + + + 240 + 570 + 161 + 27 + + + + + Liberation Mono + + + + - Sequences + + + + 228 + 228 + 228 + + + + + 53 + 132 + 0 + + + + String Parser;Parsed String Distribution + + + yySeq_full.ui;yySseq_full.ui + + + P=$(P)$(S):$(CHAN):,S=parseSeq;P=$(P)$(S):$(CHAN):,S=distSeq + + + caRowColMenu::Menu + + + false;false;false;false;false;false;false;false;false + + + + + + 220 + 160 + 171 + 30 + + + + $(P)$(S):$(CHAN):autoZero + + + caChoice::Static + + + caChoice::Column + + + 1 + + + + + + 20 + 160 + 191 + 28 + + + + Auto-Zeroing + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 220 + 120 + 311 + 30 + + + + $(P)$(S):setMode + + + caChoice::Static + + + caChoice::Column + + + 1 + + + + + + 20 + 120 + 191 + 28 + + + + Mode + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 430 + 570 + 107 + 29 + + + + - Less + + + + 228 + 228 + 228 + + + + + 51 + 132 + 0 + + + + Keyence CL3000 + + + Keyence_CL3000.ui + + + P=$(P),S=$(S),CHAN=$(CHAN) + + + caRowColMenu::Menu + + + true + + + + + + 400 + 280 + 61 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):$(CHAN):measurement_RBV.EGU + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + + caMenu + QComboBox +
caMenu
+
+ + caChoice + QWidget +
caChoice
+
+ + caRelatedDisplay + QWidget +
caRelatedDisplay
+
+ + caTextEntry + caLineEdit +
caTextEntry
+
+ + caFrame + QFrame +
caFrame
+ 1 +
+ + caLabel + QLabel +
caLabel
+
+ + caLineEdit + QLineEdit +
caLineEdit
+
+
+ + +
diff --git a/ipApp/op/ui/Thorlabs_SC10.ui b/ipApp/op/ui/Thorlabs_SC10.ui new file mode 100644 index 00000000..126eeaf1 --- /dev/null +++ b/ipApp/op/ui/Thorlabs_SC10.ui @@ -0,0 +1,1328 @@ + + + MainWindow + + + + 0 + 0 + 721 + 504 + + + + + +QWidget#centralWidget {background: rgba(187, 187, 187, 255);} +QPushButton::menu-indicator {image: url(none.png); width: 0} + +caTable { + font: 10pt; + background: cornsilk; + alternate-background-color: wheat; +} + +caLineEdit { + border-radius: 1px; + background: lightyellow; + color: black; + } + +caTextEntry { + color: rgb(127, 0, 63); + background-color: cornsilk; + selection-color: #0a214c; + selection-background-color: wheat; + border: 1px groove black; + border-radius: 1px; + padding: 1px; +} + +caTextEntry:focus { + padding: 0px; + border: 2px groove darkred; + border-radius: 1px; +} + +QPushButton { + border-color: #00b; + border-radius: 2px; + padding: 3px; + border-width: 1px; + + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(224, 239, 255, 255), + stop:0.5 rgba(199, 215, 230, 255), + stop:1 rgba(184, 214, 236, 255)); +} +QPushButton:hover { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(201, 226, 255, 255), + stop:0.5 rgba(177, 204, 230, 255), + stop:1 rgba(163, 205, 236, 255)); +} +QPushButton:pressed { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(174, 219, 255, 255), + stop:0.5 rgba(165, 199, 230, 255), + stop:1 rgba(134, 188, 236, 255)); +} + +QPushButton:disabled { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(174, 219, 255, 255), + stop:0.5 rgba(165, 199, 230, 255), + stop:1 rgba(134, 188, 236, 255)); +} + +caChoice { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #E1E1E1, stop: 0.4 #DDDDDD, + stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3); +} + +caChoice > QPushButton { + text-align: left; + padding: 1px; +} + +/* when font specified, no font sizing is done any more, font: 10pt; is not bad. You could Enable this when you converted from .adl files +caRelatedDisplay > QPushButton { +font: 10pt; +} + +caShellCommand > QPushButton { +font: 10pt; +} +*/ + +caSlider::groove:horizontal { +border: 1px solid #bbb; +background: lightgrey; +height: 20px; +border-radius: 4px; +} + +caSlider::handle:horizontal { +background: red; +border: 1px solid #777; +width: 13px; +margin-top: -2px; +margin-bottom: -2px; +border-radius: 2px; +} + + + + + + + + + + 221 + 340 + 120 + 25 + + + + $(P)$(S):UpdateRBVs.SCAN + + + caMenu::Static + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + + + + 0 + 0 + 721 + 26 + + + + 0 + + + + 0 + 53 + 132 + + + + caFrame::Filled + + + + 5 + + + 10 + + + 2 + + + 0 + + + 2 + + + + + + 0 + 0 + + + + + Verdana + 13 + 75 + true + + + + Thorlabs SC10 Shutter Controller - $(P)$(S) + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + ESimpleLabel::Height + + + + 228 + 228 + 228 + + + + + 160 + 160 + 164 + + + + + + + + + + 90 + 40 + 120 + 28 + + + + Enable + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 40 + 85 + 171 + 28 + + + + Trigger Mode + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 220 + 85 + 231 + 31 + + + + $(P)$(S):TriggerMode + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caChoice::Static + + + caChoice::Column + + + 1 + + + + + + 9 + 130 + 201 + 28 + + + + Ext Trigger Out Mode + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 220 + 130 + 231 + 31 + + + + $(P)$(S):ExtTriggerOutMode + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caChoice::Static + + + caChoice::Column + + + 1 + + + + + + 220 + 460 + 341 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):ID + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 100 + 460 + 120 + 28 + + + + Unit ID: + + + Qt::AlignCenter + + + + + + 60 + 340 + 151 + 28 + + + + RBV Update Rate + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 59 + 380 + 151 + 28 + + + + Open/Closed? + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 60 + 410 + 151 + 28 + + + + Interlocks? + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 59 + 180 + 151 + 28 + + + + Shutter Mode + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 220 + 180 + 120 + 25 + + + + $(P)$(S):Mode + + + caMenu::Static + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + + + + 350 + 180 + 161 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):Mode_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 450 + 40 + 161 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):Enable_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 450 + 85 + 161 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):TriggerMode_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 450 + 130 + 161 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):ExtTriggerOutMode_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 220 + 380 + 161 + 25 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):ClosedStatus_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 220 + 410 + 161 + 25 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):InterlockStatus_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 590 + 220 + 120 + 30 + + + + SAVE PROGRAM + + + $(P)$(S):SaveProg.PROC + + + SAVE PROGRAM + + + + 115 + 223 + 255 + + + + 1 + + + + + + 590 + 250 + 120 + 30 + + + + RESTORE PROGRAM + + + $(P)$(S):RestoreProg.PROC + + + RESTORE PROGRAM + + + + 115 + 223 + 255 + + + + 1 + + + + + + 391 + 220 + 141 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):Reps_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 220 + 220 + 171 + 27 + + + + + 0 + 0 + + + + $(P)$(S):Reps + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caLineEdit::Static + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 1.000000000000000 + + + 0.000000000000000 + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 40 + 220 + 171 + 27 + + + + Repetitions + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 390 + 260 + 141 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):OpenTime_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 40 + 260 + 171 + 27 + + + + Open Time (ms) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 220 + 260 + 171 + 27 + + + + + 0 + 0 + + + + $(P)$(S):OpenTime + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caLineEdit::Static + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 1.000000000000000 + + + 0.000000000000000 + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 391 + 300 + 141 + 27 + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(S):ShutTime_RBV + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 40 + 300 + 171 + 27 + + + + Shut Time (ms) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 220 + 300 + 171 + 27 + + + + + 0 + 0 + + + + $(P)$(S):ShutTime + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caLineEdit::Static + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 1.000000000000000 + + + 0.000000000000000 + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 230 + 40 + 101 + 31 + + + + caFrame::IfZero + + + A + + + $(P)$(S):Enable + + + + + 0 + 0 + 101 + 31 + + + + $(P)$(S):Enable + + + Enable + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + 1 + + + + + + + 340 + 40 + 101 + 31 + + + + caFrame::IfNotZero + + + A + + + $(P)$(S):Enable + + + + + 0 + 0 + 101 + 31 + + + + Disable + + + $(P)$(S):Enable + + + Enable + + + + 228 + 228 + 30 + + + + + 228 + 30 + 30 + + + + 0 + + + + + + + + caMenu + QComboBox +
caMenu
+
+ + caChoice + QWidget +
caChoice
+
+ + caTextEntry + caLineEdit +
caTextEntry
+
+ + caMessageButton + QPushButton +
caMessageButton
+
+ + caFrame + QFrame +
caFrame
+ 1 +
+ + caLabel + QLabel +
caLabel
+
+ + caLineEdit + QLineEdit +
caLineEdit
+
+
+ + +
diff --git a/ipApp/op/ui/XIA_pfcu_filters_base.ui b/ipApp/op/ui/XIA_pfcu_filters_base.ui new file mode 100644 index 00000000..1a998c0a --- /dev/null +++ b/ipApp/op/ui/XIA_pfcu_filters_base.ui @@ -0,0 +1,294 @@ + + + Form + + + + 0 + 0 + 736 + 36 + + + + Form + + + + + 0 + 0 + 731 + 31 + + + + + 5 + + + 2 + + + 2 + + + + + $(N) + + + Qt::AlignCenter + + + + + + + $(P)$(F):filter$(N)_mat + + + caMenu::Static + + + + 115 + 223 + 255 + + + + + + + + + 0 + 0 + + + + $(P)$(F):filter$(N)_thick + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caLineEdit::Static + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 1.000000000000000 + + + 0.000000000000000 + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(F):filter$(N)_thick.EGU + + + + 10 + 0 + 184 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + + + 0 + 0 + + + + $(P)$(F):filter$(N)_other + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caLineEdit::Static + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 1.000000000000000 + + + 0.000000000000000 + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + + $(P)$(F):filter$(N) + + + + 115 + 223 + 255 + + + + caChoice::Static + + + caChoice::Column + + + 0 + + + 1 + + + + + + + + 0 + 0 + + + + Qt::AlignCenter + + + $(P)$(F):filter$(N)_RBV + + + + 10 + 0 + 179 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + + + + caMenu + QComboBox +
caMenu
+
+ + caChoice + QWidget +
caChoice
+
+ + caTextEntry + caLineEdit +
caTextEntry
+
+ + caLabel + QLabel +
caLabel
+
+ + caLineEdit + QLineEdit +
caLineEdit
+
+
+ + +
diff --git a/ipApp/op/ui/XIA_pfcu_filters_less.ui b/ipApp/op/ui/XIA_pfcu_filters_less.ui new file mode 100644 index 00000000..129f1961 --- /dev/null +++ b/ipApp/op/ui/XIA_pfcu_filters_less.ui @@ -0,0 +1,405 @@ + + + MainWindow + + + + 0 + 0 + 362 + 279 + + + + MainWindow + + + + + + 0 + 0 + 361 + 31 + + + + + 0 + 0 + + + + 0 + + + + 0 + 53 + 132 + + + + caFrame::Filled + + + + 5 + + + 10 + + + 2 + + + 0 + + + 2 + + + + + + 0 + 0 + + + + + Verdana + 16 + 75 + true + + + + XIA PFCU - $(P)$(F) + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + ESimpleLabel::Height + + + + 228 + 228 + 228 + + + + + 160 + 160 + 164 + + + + + + + + + + 230 + 220 + 121 + 31 + + + + -More + + + + 255 + 255 + 255 + + + + + 40 + 147 + 21 + + + + Less info + + + XIA_pfcu_filters_main.ui + + + P=$(P),F=$(F); + + + caRowColMenu::Menu + + + true + + + + + + 100 + 40 + 161 + 171 + + + + + + + + 0 + 0 + + + + + 15 + + + + Simple Control + + + Qt::AlignCenter + + + + + + + + + 1 + + + Qt::AlignCenter + + + + + + + 2 + + + Qt::AlignCenter + + + + + + + 3 + + + Qt::AlignCenter + + + + + + + 4 + + + Qt::AlignCenter + + + + + + + + + + + $(P)$(F):filter1_RBV + + + + 0 + 255 + 0 + + + + + 255 + 0 + 0 + + + + + + + + $(P)$(F):filter2_RBV + + + + 0 + 255 + 0 + + + + + 255 + 0 + 0 + + + + + + + + $(P)$(F):filter3_RBV + + + + 0 + 255 + 0 + + + + + 255 + 0 + 0 + + + + + + + + $(P)$(F):filter4_RBV + + + + 0 + 255 + 0 + + + + + 255 + 0 + 0 + + + + + + + + + + $(P)$(F):config + + + caMenu::Static + + + + 115 + 223 + 255 + + + + + + + + + 0 + 0 + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + $(P)$(F):config_RBV + + + + 10 + 0 + 179 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + + + + + + caMenu + QComboBox +
caMenu
+
+ + caRelatedDisplay + QWidget +
caRelatedDisplay
+
+ + caFrame + QFrame +
caFrame
+ 1 +
+ + caLabel + QLabel +
caLabel
+
+ + caLed + QWidget +
caLed
+
+ + caLineEdit + QLineEdit +
caLineEdit
+
+
+ + +
diff --git a/ipApp/op/ui/XIA_pfcu_filters_main.ui b/ipApp/op/ui/XIA_pfcu_filters_main.ui new file mode 100644 index 00000000..87873478 --- /dev/null +++ b/ipApp/op/ui/XIA_pfcu_filters_main.ui @@ -0,0 +1,588 @@ + + + MainWindow + + + + 0 + 0 + 745 + 487 + + + + MainWindow + + + + + + 0 + 0 + 741 + 31 + + + + + 0 + 0 + + + + 0 + + + + 0 + 53 + 132 + + + + caFrame::Filled + + + + 5 + + + 10 + + + 2 + + + 0 + + + 2 + + + + + + 0 + 0 + + + + + Verdana + 16 + 75 + true + + + + $(P)$(F) XIA PFCU filter set + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + ESimpleLabel::Height + + + + 228 + 228 + 228 + + + + + 160 + 160 + 164 + + + + + + + + + + 0 + 70 + 741 + 191 + + + + P=$(P),F=$(F),N=1;P=$(P),F=$(F),N=2;P=$(P),F=$(F),N=3;P=$(P),F=$(F),N=4 + + + XIA_pfcu_filters_base.ui + + + 4 + + + + + + 310 + 270 + 161 + 191 + + + + + + + + 0 + 0 + + + + + 15 + + + + Simple Control + + + Qt::AlignCenter + + + + + + + + + 1 + + + Qt::AlignCenter + + + + + + + 2 + + + Qt::AlignCenter + + + + + + + 3 + + + Qt::AlignCenter + + + + + + + 4 + + + Qt::AlignCenter + + + + + + + + + + + $(P)$(F):filter1_RBV + + + + 0 + 255 + 0 + + + + + 255 + 0 + 0 + + + + + + + + $(P)$(F):filter2_RBV + + + + 0 + 255 + 0 + + + + + 255 + 0 + 0 + + + + + + + + $(P)$(F):filter3_RBV + + + + 0 + 255 + 0 + + + + + 255 + 0 + 0 + + + + + + + + $(P)$(F):filter4_RBV + + + + 0 + 255 + 0 + + + + + 255 + 0 + 0 + + + + + + + + + + $(P)$(F):config + + + caMenu::Static + + + + 115 + 223 + 255 + + + + + + + + + 0 + 0 + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + $(P)$(F):config_RBV + + + + 10 + 0 + 179 + + + + + 200 + 200 + 200 + + + + caLineEdit::Static + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + + + + 620 + 420 + 121 + 31 + + + + -Less + + + + 255 + 255 + 255 + + + + + 40 + 147 + 21 + + + + Less info + + + XIA_pfcu_filters_less.ui + + + P=$(P),F=$(F); + + + caRowColMenu::Menu + + + true + + + + + + 0 + 40 + 731 + 31 + + + + + 5 + + + 2 + + + 2 + + + + + Filter # + + + Qt::AlignCenter + + + + + + + Material + + + Qt::AlignCenter + + + + + + + Thickness + + + Qt::AlignCenter + + + + + + + Notes + + + Qt::AlignCenter + + + + + + + Control + + + Qt::AlignCenter + + + + + + + Status + + + Qt::AlignCenter + + + + + + + + + 10 + 400 + 127 + 25 + + + + -Calcs + + + + 228 + 228 + 228 + + + + + 53 + 132 + 0 + + + + Mode Calc;Config Transform;Config Calc;Read Config;Clear Fault;Read Fault + + + yyCalcoutRecord_full.ui;yyTransform_full.ui;yyCalcoutRecord_full.ui;yyCalcoutRecord_full.ui;yyCalcoutRecord_full.ui;yyCalcoutRecord_full.ui + + + P=$(P)$(F):, C=calcMode;P=$(P)$(F):, T=configTransform;P=$(P)$(F):, C=calcConfig;P=$(P)$(F):, C=readConfig;P=$(P)$(F):, C=clearFault;P=$(P)$(F):, C=readFault + + + caRowColMenu::Menu + + + + + + 10 + 430 + 127 + 25 + + + + -String Calcs + + + + 228 + 228 + 228 + + + + + 53 + 132 + 0 + + + + Mode RBV calc;Config RBV calc;Control Mode calc;Control RBV calc + + + yysCalcoutRecord_full.ui;yysCalcoutRecord_full.ui;yysCalcoutRecord_full.ui;yysCalcoutRecord_full.ui + + + P=$(P)$(F):, C=calcModeRBV;P=$(P)$(F):, C=calcConfigRBV;P=$(P)$(F):, C=calcControlMode;P=$(P)$(F):, C=calcControlRBV + + + caRowColMenu::Menu + + + + + + + + caMenu + QComboBox +
caMenu
+
+ + caRelatedDisplay + QWidget +
caRelatedDisplay
+
+ + caFrame + QFrame +
caFrame
+ 1 +
+ + caLabel + QLabel +
caLabel
+
+ + caInclude + QWidget +
caInclude
+
+ + caLed + QWidget +
caLed
+
+ + caLineEdit + QLineEdit +
caLineEdit
+
+
+ + +
diff --git a/ipApp/op/ui/uniblitz_d122.ui b/ipApp/op/ui/uniblitz_d122.ui new file mode 100644 index 00000000..20a687a1 --- /dev/null +++ b/ipApp/op/ui/uniblitz_d122.ui @@ -0,0 +1,300 @@ + + + MainWindow + + + + 0 + 0 + 364 + 130 + + + + + +QWidget#centralWidget {background: rgba(187, 187, 187, 255);} +QPushButton::menu-indicator {image: url(none.png); width: 0} + +caTable { + font: 10pt; + background: cornsilk; + alternate-background-color: wheat; +} + +caLineEdit { + border-radius: 1px; + background: lightyellow; + color: black; + } + +caTextEntry { + color: rgb(127, 0, 63); + background-color: cornsilk; + selection-color: #0a214c; + selection-background-color: wheat; + border: 1px groove black; + border-radius: 1px; + padding: 1px; +} + +caTextEntry:focus { + padding: 0px; + border: 2px groove darkred; + border-radius: 1px; +} + +QPushButton { + border-color: #00b; + border-radius: 2px; + padding: 3px; + border-width: 1px; + + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(224, 239, 255, 255), + stop:0.5 rgba(199, 215, 230, 255), + stop:1 rgba(184, 214, 236, 255)); +} +QPushButton:hover { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(201, 226, 255, 255), + stop:0.5 rgba(177, 204, 230, 255), + stop:1 rgba(163, 205, 236, 255)); +} +QPushButton:pressed { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(174, 219, 255, 255), + stop:0.5 rgba(165, 199, 230, 255), + stop:1 rgba(134, 188, 236, 255)); +} + +QPushButton:disabled { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(174, 219, 255, 255), + stop:0.5 rgba(165, 199, 230, 255), + stop:1 rgba(134, 188, 236, 255)); +} + +caChoice { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #E1E1E1, stop: 0.4 #DDDDDD, + stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3); +} + +caChoice > QPushButton { + text-align: left; + padding: 1px; +} + +/* when font specified, no font sizing is done any more, font: 10pt; is not bad. You could Enable this when you converted from .adl files +caRelatedDisplay > QPushButton { +font: 10pt; +} + +caShellCommand > QPushButton { +font: 10pt; +} +*/ + +caSlider::groove:horizontal { +border: 1px solid #bbb; +background: lightgrey; +height: 20px; +border-radius: 4px; +} + +caSlider::handle:horizontal { +background: red; +border: 1px solid #777; +width: 13px; +margin-top: -2px; +margin-bottom: -2px; +border-radius: 2px; +} + + + + + + + + + + 0 + 0 + 361 + 26 + + + + 0 + + + + 0 + 53 + 132 + + + + caFrame::Filled + + + + 5 + + + 10 + + + 2 + + + 0 + + + 2 + + + + + + 0 + 0 + + + + + Verdana + 13 + 75 + true + + + + Uniblitz D122 - $(P)$(S) + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + ESimpleLabel::Height + + + + 228 + 228 + 228 + + + + + 160 + 160 + 164 + + + + + + + + + + 20 + 60 + 117 + 46 + + + + $(P)$(S):Control + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caChoice::Static + + + 1 + + + + + + 20 + 30 + 90 + 28 + + + + Shutter + + + + + + 210 + 60 + 111 + 31 + + + + Reset + + + $(P)$(S):Reset.PROC + + + + 115 + 223 + 255 + + + + 1 + + + + + + + caChoice + QWidget +
caChoice
+
+ + caMessageButton + QPushButton +
caMessageButton
+
+ + caFrame + QFrame +
caFrame
+ 1 +
+ + caLabel + QLabel +
caLabel
+
+
+ + +
diff --git a/ipApp/op/ui/uniblitz_vcm-d1.ui b/ipApp/op/ui/uniblitz_vcm-d1.ui new file mode 100644 index 00000000..f2eb5daf --- /dev/null +++ b/ipApp/op/ui/uniblitz_vcm-d1.ui @@ -0,0 +1,518 @@ + + + MainWindow + + + + 0 + 0 + 402 + 323 + + + + + +QWidget#centralWidget {background: rgba(187, 187, 187, 255);} +QPushButton::menu-indicator {image: url(none.png); width: 0} + +caTable { + font: 10pt; + background: cornsilk; + alternate-background-color: wheat; +} + +caLineEdit { + border-radius: 1px; + background: lightyellow; + color: black; + } + +caTextEntry { + color: rgb(127, 0, 63); + background-color: cornsilk; + selection-color: #0a214c; + selection-background-color: wheat; + border: 1px groove black; + border-radius: 1px; + padding: 1px; +} + +caTextEntry:focus { + padding: 0px; + border: 2px groove darkred; + border-radius: 1px; +} + +QPushButton { + border-color: #00b; + border-radius: 2px; + padding: 3px; + border-width: 1px; + + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(224, 239, 255, 255), + stop:0.5 rgba(199, 215, 230, 255), + stop:1 rgba(184, 214, 236, 255)); +} +QPushButton:hover { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(201, 226, 255, 255), + stop:0.5 rgba(177, 204, 230, 255), + stop:1 rgba(163, 205, 236, 255)); +} +QPushButton:pressed { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(174, 219, 255, 255), + stop:0.5 rgba(165, 199, 230, 255), + stop:1 rgba(134, 188, 236, 255)); +} + +QPushButton:disabled { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(174, 219, 255, 255), + stop:0.5 rgba(165, 199, 230, 255), + stop:1 rgba(134, 188, 236, 255)); +} + +caChoice { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #E1E1E1, stop: 0.4 #DDDDDD, + stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3); +} + +caChoice > QPushButton { + text-align: left; + padding: 1px; +} + +/* when font specified, no font sizing is done any more, font: 10pt; is not bad. You could Enable this when you converted from .adl files +caRelatedDisplay > QPushButton { +font: 10pt; +} + +caShellCommand > QPushButton { +font: 10pt; +} +*/ + +caSlider::groove:horizontal { +border: 1px solid #bbb; +background: lightgrey; +height: 20px; +border-radius: 4px; +} + +caSlider::handle:horizontal { +background: red; +border: 1px solid #777; +width: 13px; +margin-top: -2px; +margin-bottom: -2px; +border-radius: 2px; +} + + + + + + + + + + 275 + 48 + 111 + 31 + + + + Qt::AlignAbsolute|Qt::AlignCenter|Qt::AlignHCenter|Qt::AlignVCenter + + + $(P)$(S):Status + + + + 0 + 0 + 0 + + + + + 187 + 187 + 187 + + + + caLineEdit::Static + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 1.000000000000000 + + + 0.000000000000000 + + + caLineEdit::WidthAndHeight + + + caLineEdit::decimal + + + + + + 20 + 60 + 120 + 46 + + + + $(P)$(S):Control + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caChoice::Static + + + 1 + + + + + + 270 + 80 + 120 + 25 + + + + $(P)$(S):Status.SCAN + + + caMenu::Static + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + + + + 0 + 0 + 401 + 26 + + + + 0 + + + + 0 + 53 + 132 + + + + caFrame::Filled + + + + 5 + + + 10 + + + 2 + + + 0 + + + 2 + + + + + + 0 + 0 + + + + + Verdana + 13 + 75 + true + + + + Uniblitz VCM-D1 - $(P)$(S) + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + ESimpleLabel::Height + + + + 228 + 228 + 228 + + + + + 160 + 160 + 164 + + + + + + + + + + 20 + 30 + 120 + 28 + + + + Shutter + + + Qt::AlignCenter + + + + + + 270 + 160 + 111 + 31 + + + + Reset + + + $(P)$(S):Reset.PROC + + + + 115 + 223 + 255 + + + + 1 + + + + + + 270 + 130 + 111 + 31 + + + + Trigger + + + $(P)$(S):Trigger.PROC + + + + 115 + 223 + 255 + + + + 1 + + + + + + 20 + 120 + 120 + 28 + + + + Gate + + + Qt::AlignCenter + + + + + + 20 + 150 + 120 + 46 + + + + $(P)$(S):Gate + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caChoice::Static + + + 1 + + + + + + 20 + 210 + 120 + 28 + + + + Aux Out + + + Qt::AlignCenter + + + + + + 20 + 240 + 120 + 46 + + + + $(P)$(S):AuxOut + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caChoice::Static + + + 1 + + + + + + + caMenu + QComboBox +
caMenu
+
+ + caChoice + QWidget +
caChoice
+
+ + caMessageButton + QPushButton +
caMessageButton
+
+ + caFrame + QFrame +
caFrame
+ 1 +
+ + caLabel + QLabel +
caLabel
+
+ + caLineEdit + QLineEdit +
caLineEdit
+
+
+ + +