#! Generated by VisualDCT v2.5
#! DBDSTART
#! DBDEND
record(stringout, "$(P)$(S)init") {
field(PINI, "YES")
field(DTYP, "Soft Channel")
field(VAL, "2")
field(OUT, "$(P)$(S)sendCommand.VAL PP MS")
}
record(longout, "$(P)$(S)address") {
field(DTYP, "Soft Channel")
field(VAL, "$(ADDRESS)")
}
record(ao, "$(P)$(S)exposeTime") {
field(DESC, "exposure time (s)")
field(DTYP, "Soft Channel")
field(OUT, "$(P)$(S)waitTime.A PP MS")
field(DOL, "1")
field(PREC, "2")
field(DRVH, "6553")
field(DRVL, ".01")
field(PINI, "YES")
}
record(calcout, "$(P)$(S)waitTime") {
field(SDIS, "0")
field(CALC, "(A+.02)")
field(OUT, "$(P)$(S)serial.TMOT NPP MS")
field(DESC, "add 20 millisecond")
}
record(stringout, "$(P)$(S)closeShutter") {
field(DTYP, "Soft Channel")
field(VAL, "C")
field(OUT, "$(P)$(S)sendCommand.VAL PP MS")
}
record(stringout, "$(P)$(S)openShutter") {
field(DTYP, "Soft Channel")
field(VAL, "O")
field(OUT, "$(P)$(S)sendCommand.VAL PP MS")
}
record(stringout, "$(P)$(S)sendCommand") {
field(DTYP, "Soft Channel")
field(OUT, "$(P)$(S)do.AA PP MS")
}
record(scalcout, "$(P)$(S)do") {
field(DESC, "0 argument command builder")
field(CALC, "printf('!PFCU%02d ', a)+aa ")
field(INPA, "$(P)$(S)address.VAL NPP NMS")
field(OUT, "$(P)$(S)writeRead.AOUT PP")
field(AA, "024CFHLOPUZ")
}
record(scalcout, "$(P)$(S)expose") {
field(DESC, "0 argument command builder")
field(SDIS, "$(P)$(S)busy.VAL NPP MS")
field(CALC, "$P('!PFCU%02d E ', a) + $P('%d',b*100)")
field(INPA, "$(P)$(S)address.VAL NPP NMS")
field(INPB, "$(P)$(S)exposeTime.VAL PP MS")
field(OUT, "$(P)$(S)sout1.VAL PP MS")
field(ODLY, "0.1")
field(AA, "024CFHLOPUZ")
}
record(stringout, "$(P)$(S)sout1") {
field(DTYP, "asyn so stringParm")
field(SDIS, "0")
field(FLNK, "$(P)$(S)getAck.VAL PP MS")
field(OUT, "@asyn($(PORT))TERM=0d")
}
record(stringin, "$(P)$(S)getAck") {
field(DTYP, "asyn si stringParm")
field(FLNK, "$(P)$(S)busyOn.VAL PP MS")
field(INP, "@asyn($(PORT))TERM=0d")
}
record(bo, "$(P)$(S)busyOn") {
field(DTYP, "Soft Channel")
field(FLNK, "$(P)$(S)serial.VAL PP MS")
field(DOL, "1")
field(OUT, "$(P)$(S)busy.VAL PP MS")
}
record(asyn, "$(P)$(S)serial") {
field(DESC, "XIA shutter serial")
field(FLNK, "$(P)$(S)wait.VAL PP MS")
field(TMOD, "Read")
field(PORT, "$(PORT)")
}
record(seq, "$(P)$(S)wait") {
field(PREC, "3")
field(DLY1, "0.1")
field(DOL1, "0")
field(LNK1, "$(P)$(S)busy.VAL PP MS")
}
record(busy, "$(P)$(S)busy") {
}
# Poll the filter status
record(seq, "$(P)$(S)poll") {
field(SCAN, "1 second")
field(DLY1, "0.0")
field(DOL1, "1")
field(LNK1, "$(P)$(S)pollFilter.PROC PP MS")
field(DLY2, "0.2")
field(DOL2, "1")
field(LNK2, "$(P)$(S)Status1.PROC PP")
}
record(scalcout, "$(P)$(S)Status1") {
field(DESC, "Filter 1 status")
field(CALC, "SSCANF(AA, '%*11c%1d')")
field(INAA, "$(P)$(S)Status.AINP")
field(FLNK, "$(P)$(S)Status2.PROC PP MS")
}
record(scalcout, "$(P)$(S)Status2") {
field(DESC, "Filter 2 status")
field(CALC, "SSCANF(AA, '%*12c%1d')")
field(INAA, "$(P)$(S)Status.AINP")
field(FLNK, "$(P)$(S)Status3.PROC PP MS")
}
record(scalcout, "$(P)$(S)Status3") {
field(DESC, "Filter 3 status")
field(CALC, "SSCANF(AA, '%*13c%1d')")
field(INAA, "$(P)$(S)Status.AINP")
field(FLNK, "$(P)$(S)Status4.PROC PP MS")
}
record(scalcout, "$(P)$(S)Status4") {
field(DESC, "Filter 4 status")
field(CALC, "SSCANF(AA, '%*14c%1d')")
field(INAA, "$(P)$(S)Status.AINP")
}
record(asyn, "$(P)$(S)Status") {
field(DESC, "XIA shutter serial")
field(TMOD, "Write/Read")
field(PORT, "$(PORT)")
}
record(asyn, "$(P)$(S)writeRead") {
field(DESC, "XIA shutter serial")
field(TMOD, "Write/Read")
field(PORT, "$(PORT)")
}
record(scalcout, "$(P)$(S)pollFilter") {
field(DESC, "0 argument command builder")
field(CALC, "printf('!PFCU%02d ', a)+aa ")
field(INPA, "$(P)$(S)address.VAL NPP NMS")
field(OUT, "$(P)$(S)Status.AOUT PP MS")
field(AA, "F")
}
#! Further lines contain data used by VisualDCT
#! View(232,0,1.0)
#! Record("$(P)$(S)init",704,314,0,0,"$(P)$(S)init")
#! Field("$(P)$(S)init.OUT",16777215,0,"$(P)$(S)init.OUT")
#! Link("$(P)$(S)init.OUT","$(P)$(S)init/OUT")
#! Connector("$(P)$(S)init/OUT","$(P)$(S)sendCommand.VAL",680,510,16777215,"",0)
#! Visibility("$(P)$(S)init.PINI",1)
#! Record("$(P)$(S)address",331,145,0,0,"$(P)$(S)address")
#! Field("$(P)$(S)address.VAL",16777215,1,"$(P)$(S)address.VAL")
#! Record("$(P)$(S)exposeTime",1426,542,0,0,"$(P)$(S)exposeTime")
#! Field("$(P)$(S)exposeTime.VAL",16777215,1,"$(P)$(S)exposeTime.VAL")
#! Field("$(P)$(S)exposeTime.OUT",16777215,1,"$(P)$(S)exposeTime.OUT")
#! Link("$(P)$(S)exposeTime.OUT","$(P)$(S)exposeTime/OUT")
#! Connector("$(P)$(S)exposeTime/OUT","$(P)$(S)exposeTime/OUT1",1720,830,16777215,"",0)
#! Connector("$(P)$(S)exposeTime/OUT1","$(P)$(S)exposeTime/OUT2",1590,920,16777215,"",0)
#! Connector("$(P)$(S)exposeTime/OUT2","$(P)$(S)waitTime.A",1460,1032,16777215,"",0)
#! Record("$(P)$(S)waitTime",1437,1021,0,0,"$(P)$(S)waitTime")
#! Field("$(P)$(S)waitTime.A",16777215,0,"$(P)$(S)waitTime.A")
#! Field("$(P)$(S)waitTime.OUT",16777215,1,"$(P)$(S)waitTime.OUT")
#! Link("$(P)$(S)waitTime.OUT","$(P)$(S)serial.TMOT")
#! Record("$(P)$(S)closeShutter",316,656,0,0,"$(P)$(S)closeShutter")
#! Field("$(P)$(S)closeShutter.OUT",16777215,1,"$(P)$(S)closeShutter.OUT")
#! Link("$(P)$(S)closeShutter.OUT","$(P)$(S)closeShutter/OUT")
#! Connector("$(P)$(S)closeShutter/OUT","$(P)$(S)sendCommand.VAL",580,674,16777215,"",0)
#! Record("$(P)$(S)openShutter",397,380,0,0,"$(P)$(S)openShutter")
#! Field("$(P)$(S)openShutter.OUT",16777215,0,"$(P)$(S)openShutter.OUT")
#! Link("$(P)$(S)openShutter.OUT","$(P)$(S)openShutter/OUT")
#! Connector("$(P)$(S)openShutter/OUT","$(P)$(S)sendCommand.VAL",580,536,16777215,"",0)
#! Record("$(P)$(S)sendCommand",731,488,0,0,"$(P)$(S)sendCommand")
#! Field("$(P)$(S)sendCommand.VAL",16777215,0,"$(P)$(S)sendCommand.VAL")
#! Field("$(P)$(S)sendCommand.OUT",16777215,0,"$(P)$(S)sendCommand.OUT")
#! Link("$(P)$(S)sendCommand.OUT","$(P)$(S)sendCommand/OUT2")
#! Connector("$(P)$(S)sendCommand/OUT2","$(P)$(S)do.AA",721,705,16777215,"",0)
#! Record("$(P)$(S)do",770,670,0,0,"$(P)$(S)do")
#! Field("$(P)$(S)do.AA",16777215,0,"$(P)$(S)do.AA")
#! Field("$(P)$(S)do.INPA",16777215,0,"$(P)$(S)do.INPA")
#! Link("$(P)$(S)do.INPA","$(P)$(S)do/INPA")
#! Field("$(P)$(S)do.OUT",16777215,0,"$(P)$(S)do.OUT")
#! Link("$(P)$(S)do.OUT","$(P)$(S)do/OUT1")
#! Connector("$(P)$(S)do/OUT1","$(P)$(S)do/OUT2",800,912,16777215,"",0)
#! Connector("$(P)$(S)do/OUT2","$(P)$(S)writeRead.AOUT",681,977,16777215,"",0)
#! Connector("$(P)$(S)do/INPA","$(P)$(S)address.VAL",620,533,16777215,"",0)
#! Record("$(P)$(S)expose",1748,258,0,0,"$(P)$(S)expose")
#! Field("$(P)$(S)expose.SDIS",16777215,0,"$(P)$(S)expose.SDIS")
#! Link("$(P)$(S)expose.SDIS","$(P)$(S)expose/SDIS1")
#! Field("$(P)$(S)expose.INPA",16777215,0,"$(P)$(S)expose.INPA")
#! Link("$(P)$(S)expose.INPA","$(P)$(S)expose/INPA")
#! Field("$(P)$(S)expose.INPB",16777215,0,"$(P)$(S)expose.INPB")
#! Link("$(P)$(S)expose.INPB","$(P)$(S)exposeTime.VAL")
#! Field("$(P)$(S)expose.OUT",16777215,1,"$(P)$(S)expose.OUT")
#! Link("$(P)$(S)expose.OUT","$(P)$(S)expose/OUT")
#! Connector("$(P)$(S)expose/INPA","$(P)$(S)address.VAL",1400,348,16777215,"",0)
#! Connector("$(P)$(S)expose/OUT","$(P)$(S)expose/OUT1",2060,518,16777215,"",0)
#! Connector("$(P)$(S)expose/OUT1","$(P)$(S)expose/OUT2",1910,540,16777215,"",0)
#! Connector("$(P)$(S)expose/OUT2","$(P)$(S)sout1.VAL",1760,591,16777215,"",0)
#! Connector("$(P)$(S)expose/SDIS1","$(P)$(S)expose/SDIS",1760,388,16777215,"",0)
#! Connector("$(P)$(S)expose/SDIS","$(P)$(S)expose/SDIS2",2070,340,16777215,"",0)
#! Connector("$(P)$(S)expose/SDIS2","$(P)$(S)busy.VAL",2380,686,16777215,"",0)
#! Record("$(P)$(S)sout1",1738,519,0,0,"$(P)$(S)sout1")
#! Field("$(P)$(S)sout1.VAL",16777215,0,"$(P)$(S)sout1.VAL")
#! Field("$(P)$(S)sout1.FLNK",16777215,1,"$(P)$(S)sout1.FLNK")
#! Link("$(P)$(S)sout1.FLNK","$(P)$(S)sout1/FLNK")
#! Connector("$(P)$(S)sout1/FLNK","$(P)$(S)sout1/FLNK1",2060,671,16777215,"",0)
#! Connector("$(P)$(S)sout1/FLNK1","$(P)$(S)sout1/FLNK2",1910,680,16777215,"",0)
#! Connector("$(P)$(S)sout1/FLNK2","$(P)$(S)getAck",1760,706,16777215,"",0)
#! Record("$(P)$(S)getAck",1738,684,0,0,"$(P)$(S)getAck")
#! Field("$(P)$(S)getAck.FLNK",16777215,1,"$(P)$(S)getAck.FLNK")
#! Link("$(P)$(S)getAck.FLNK","$(P)$(S)getAck/FLNK")
#! Connector("$(P)$(S)getAck/FLNK","$(P)$(S)getAck/FLNK1",2060,796,16777215,"",0)
#! Connector("$(P)$(S)getAck/FLNK1","$(P)$(S)getAck/FLNK2",1910,800,16777215,"",0)
#! Connector("$(P)$(S)getAck/FLNK2","$(P)$(S)busyOn",1760,797,16777215,"",0)
#! Record("$(P)$(S)busyOn",1999,732,0,0,"$(P)$(S)busyOn")
#! Field("$(P)$(S)busyOn.OUT",16777215,1,"$(P)$(S)busyOn.OUT")
#! Link("$(P)$(S)busyOn.OUT","$(P)$(S)busy.VAL")
#! Field("$(P)$(S)busyOn.FLNK",16777215,0,"$(P)$(S)busyOn.FLNK")
#! Link("$(P)$(S)busyOn.FLNK","$(P)$(S)busyOn/FLNK")
#! Connector("$(P)$(S)busyOn/FLNK","$(P)$(S)busyOn/FLNK1",2060,907,16777215,"",0)
#! Connector("$(P)$(S)busyOn/FLNK1","$(P)$(S)busyOn/FLNK2",1910,940,16777215,"",0)
#! Connector("$(P)$(S)busyOn/FLNK2","$(P)$(S)serial",1760,930,16777215,"",0)
#! Record("$(P)$(S)serial",1771,864,0,0,"$(P)$(S)serial")
#! Field("$(P)$(S)serial.TMOT",16777215,0,"$(P)$(S)serial.TMOT")
#! Field("$(P)$(S)serial.FLNK",16777215,1,"$(P)$(S)serial.FLNK")
#! Link("$(P)$(S)serial.FLNK","$(P)$(S)serial/FLNK")
#! Connector("$(P)$(S)serial/FLNK","$(P)$(S)serial/FLNK1",2060,1043,16777215,"",0)
#! Connector("$(P)$(S)serial/FLNK1","$(P)$(S)serial/FLNK2",1910,1080,16777215,"",0)
#! Connector("$(P)$(S)serial/FLNK2","$(P)$(S)wait",1760,1133,16777215,"",0)
#! Record("$(P)$(S)wait",1859,1130,0,0,"$(P)$(S)wait")
#! Field("$(P)$(S)wait.LNK1",16777215,1,"$(P)$(S)wait.LNK1")
#! Link("$(P)$(S)wait.LNK1","$(P)$(S)busy.VAL")
#! Record("$(P)$(S)busy",2160,964,0,0,"$(P)$(S)busy")
#! Field("$(P)$(S)busy.VAL",16777215,1,"$(P)$(S)busy.VAL")
#! Record("$(P)$(S)poll",1430,21,0,0,"$(P)$(S)poll")
#! Field("$(P)$(S)poll.LNK1",16777215,0,"$(P)$(S)poll.LNK1")
#! Link("$(P)$(S)poll.LNK1","$(P)$(S)poll/LNK1")
#! Field("$(P)$(S)poll.LNK2",16777215,0,"$(P)$(S)poll.LNK2")
#! Link("$(P)$(S)poll.LNK2","$(P)$(S)Status1.PROC")
#! Connector("$(P)$(S)poll/LNK1","$(P)$(S)pollFilter.PROC",1322,208,16777215,"",0)
#! Visibility("$(P)$(S)poll.SCAN",1)
#! Record("$(P)$(S)Status1",1134,452,0,0,"$(P)$(S)Status1")
#! Field("$(P)$(S)Status1.PROC",16777215,1,"$(P)$(S)Status1.PROC")
#! Field("$(P)$(S)Status1.INAA",16777215,0,"$(P)$(S)Status1.INAA")
#! Link("$(P)$(S)Status1.INAA","$(P)$(S)Status1/INAA")
#! Field("$(P)$(S)Status1.FLNK",16777215,1,"$(P)$(S)Status1.FLNK")
#! Link("$(P)$(S)Status1.FLNK","$(P)$(S)Status1/FLNK")
#! Connector("$(P)$(S)Status1/INAA","$(P)$(S)Status.AINP",1040,497,16777215,"",0)
#! Connector("$(P)$(S)Status1/FLNK","$(P)$(S)Status1/FLNK1",1360,687,16777215,"",0)
#! Connector("$(P)$(S)Status1/FLNK1","$(P)$(S)Status1/FLNK2",1230,760,16777215,"",0)
#! Connector("$(P)$(S)Status1/FLNK2","$(P)$(S)Status2",1100,723,16777215,"",0)
#! Record("$(P)$(S)Status2",1128,630,0,0,"$(P)$(S)Status2")
#! Field("$(P)$(S)Status2.INAA",16777215,0,"$(P)$(S)Status2.INAA")
#! Link("$(P)$(S)Status2.INAA","$(P)$(S)Status2/INAA")
#! Field("$(P)$(S)Status2.FLNK",16777215,1,"$(P)$(S)Status2.FLNK")
#! Link("$(P)$(S)Status2.FLNK","$(P)$(S)Status2/FLNK")
#! Connector("$(P)$(S)Status2/INAA","$(P)$(S)Status.AINP",1040,576,16777215,"",0)
#! Connector("$(P)$(S)Status2/FLNK","$(P)$(S)Status2/FLNK1",1360,836,16777215,"",0)
#! Connector("$(P)$(S)Status2/FLNK1","$(P)$(S)Status2/FLNK2",1230,900,16777215,"",0)
#! Connector("$(P)$(S)Status2/FLNK2","$(P)$(S)Status3",1100,875,16777215,"",0)
#! Record("$(P)$(S)Status3",1142,794,0,0,"$(P)$(S)Status3")
#! Field("$(P)$(S)Status3.INAA",16777215,0,"$(P)$(S)Status3.INAA")
#! Link("$(P)$(S)Status3.INAA","$(P)$(S)Status3/INAA")
#! Field("$(P)$(S)Status3.FLNK",16777215,1,"$(P)$(S)Status3.FLNK")
#! Link("$(P)$(S)Status3.FLNK","$(P)$(S)Status3/FLNK")
#! Connector("$(P)$(S)Status3/FLNK","$(P)$(S)Status3/FLNK1",1360,988,16777215,"",0)
#! Connector("$(P)$(S)Status3/FLNK1","$(P)$(S)Status3/FLNK2",1230,1040,16777215,"",0)
#! Connector("$(P)$(S)Status3/FLNK2","$(P)$(S)Status4",1100,1039,16777215,"",0)
#! Connector("$(P)$(S)Status3/INAA","$(P)$(S)Status.AINP",1040,658,16777215,"",0)
#! Record("$(P)$(S)Status4",1171,990,0,0,"$(P)$(S)Status4")
#! Field("$(P)$(S)Status4.INAA",16777215,0,"$(P)$(S)Status4.INAA")
#! Link("$(P)$(S)Status4.INAA","$(P)$(S)Status4/INAA")
#! Connector("$(P)$(S)Status4/INAA","$(P)$(S)Status.AINP",1040,749,16777215,"",0)
#! Record("$(P)$(S)Status",1120,270,0,1,"$(P)$(S)Status")
#! Field("$(P)$(S)Status.AOUT",16777215,0,"$(P)$(S)Status.AOUT")
#! Field("$(P)$(S)Status.AINP",16777215,0,"$(P)$(S)Status.AINP")
#! Record("$(P)$(S)writeRead",612,1006,0,1,"$(P)$(S)writeRead")
#! Field("$(P)$(S)writeRead.AOUT",16777215,0,"$(P)$(S)writeRead.AOUT")
#! Record("$(P)$(S)pollFilter",1124,53,0,1,"$(P)$(S)pollFilter")
#! Field("$(P)$(S)pollFilter.INPA",16777215,0,"$(P)$(S)pollFilter.INPA")
#! Link("$(P)$(S)pollFilter.INPA","$(P)$(S)address.VAL")
#! Field("$(P)$(S)pollFilter.OUT",16777215,0,"$(P)$(S)pollFilter.OUT")
#! Link("$(P)$(S)pollFilter.OUT","$(P)$(S)Status.AOUT")
#! Field("$(P)$(S)pollFilter.PROC",16777215,0,"$(P)$(S)pollFilter.PROC")
#! TextBox(TB0,120,200,260,560,1,"Dialog",12,1,16777215,"Serial port \nsettings\n---------------\n9600 baud\n8 bits\n1 stop bit\nno parity\n\nTerminator is <CR>\n\nThree-wire serial:\nDevice talks via db9-pin2\nlistens to db9-pin3\ngnd - db9-pin5\n\nDevice ties together\n db9 pins 7 and 8\n db9 pins 1, 4, and 6",null)
#! TextBox(TB4,1135,409,1335,489,0,"Dialog",24,1,16777215,"Parse reply to\npollFilter",null)
#! TextBox(TB3,682,217,882,297,0,"Dialog",24,1,16777215,"Send command,\nget reply",null)
#! TextBox(TB2,1740,140,2020,200,1,"Dialog",24,1,16777215,"Shutter commands",null)
#! TextBox(TB1,964,103,724,43,1,"Dialog",24,1,16777215,"filter commands",null)