From f6f488f9baf48e73c76d02d0a5aca82b2e6f09fa Mon Sep 17 00:00:00 2001 From: Freddie Akeroyd Date: Thu, 25 Jun 2026 18:22:07 +0100 Subject: [PATCH 1/2] PS300: Add GPIB support --- PS300/PS300-IOC-01App/src/build.mak | 1 + PS300/iocBoot/iocPS300-IOC-01/config.xml | 1 + PS300/iocBoot/iocPS300-IOC-01/st-common.cmd | 28 +++++++++++++-------- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/PS300/PS300-IOC-01App/src/build.mak b/PS300/PS300-IOC-01App/src/build.mak index e43786763..b356d27ae 100644 --- a/PS300/PS300-IOC-01App/src/build.mak +++ b/PS300/PS300-IOC-01App/src/build.mak @@ -29,6 +29,7 @@ $(APPNAME)_DBD += calcSupport.dbd $(APPNAME)_DBD += asyn.dbd $(APPNAME)_DBD += drvAsynSerialPort.dbd $(APPNAME)_DBD += drvAsynIPPort.dbd +$(APPNAME)_DBD += drvPrologixGPIB.dbd $(APPNAME)_DBD += luaSupport.dbd $(APPNAME)_DBD += stream.dbd ## add other dbd here ## diff --git a/PS300/iocBoot/iocPS300-IOC-01/config.xml b/PS300/iocBoot/iocPS300-IOC-01/config.xml index 992b3ab8e..2ff7baeae 100644 --- a/PS300/iocBoot/iocPS300-IOC-01/config.xml +++ b/PS300/iocBoot/iocPS300-IOC-01/config.xml @@ -5,6 +5,7 @@ IOC to control the Stanford powersupply 300 series IOCs + diff --git a/PS300/iocBoot/iocPS300-IOC-01/st-common.cmd b/PS300/iocBoot/iocPS300-IOC-01/st-common.cmd index d1b1a56f9..889349da7 100644 --- a/PS300/iocBoot/iocPS300-IOC-01/st-common.cmd +++ b/PS300/iocBoot/iocPS300-IOC-01/st-common.cmd @@ -4,24 +4,32 @@ epicsEnvSet "DEVICE" "L0" ##ISIS## Run IOC initialisation < $(IOCSTARTUP)/init.cmd +stringiftest("GPIB", "$(IPADDR=)", 3) +stringiftest("SERIAL", "$(PORT=)", 3) + ## Device simulation mode IP configuration $(IFDEVSIM) drvAsynIPPortConfigure("$(DEVICE)", "localhost:$(EMULATOR_PORT=57677)") ## For recsim: $(IFRECSIM) drvAsynSerialPortConfigure("$(DEVICE)", "$(PORT=NUL)", 0, 1, 0, 0) -## For real device: -$(IFNOTDEVSIM) $(IFNOTRECSIM) drvAsynSerialPortConfigure("$(DEVICE)", "$(PORT=NO_PORT_MACRO)", 0, 0, 0, 0) -$(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)", -1, "baud", "$(BAUD=9600)") -$(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)", -1, "bits", "$(BITS=8)") -$(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)", -1, "parity", "$(PARITY=none)") -$(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)", -1, "stop", "$(STOP=1)") +## For real RS2323 serial device: +$(IFSERIAL) $(IFNOTDEVSIM) $(IFNOTRECSIM) drvAsynSerialPortConfigure("$(DEVICE)", "$(PORT=NO_PORT_MACRO)", 0, 0, 0, 0) +$(IFSERIAL) $(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)", -1, "baud", "$(BAUD=9600)") +$(IFSERIAL) $(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)", -1, "bits", "$(BITS=8)") +$(IFSERIAL) $(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)", -1, "parity", "$(PARITY=none)") +$(IFSERIAL) $(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)", -1, "stop", "$(STOP=1)") ## Hardware flow control off -$(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)", 0, "clocal", "Y") -$(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)",0,"crtscts","N") +$(IFSERIAL) $(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)", 0, "clocal", "Y") +$(IFSERIAL) $(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)",0,"crtscts","N") ## Software flow control off -$(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)",0,"ixon","N") -$(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)",0,"ixoff","N") +$(IFSERIAL) $(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)",0,"ixon","N") +$(IFSERIAL) $(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)",0,"ixoff","N") + +## GPIB prologix +$(IFGPIB) $(IFNOTDEVSIM) $(IFNOTRECSIM) prologixGPIBConfigure("$(DEVICE)", "$(IPADDR=)") +$(IFGPIB) $(IFNOTDEVSIM) $(IFNOTRECSIM) prologixGPIBSetOption("$(DEVICE)", "timeout_ms", 2000) +#$(IFGPIB) $(IFNOTDEVSIM) $(IFNOTRECSIM) prologixGPIBSetOption("$(DEVICE)", "send_eoi", 0) ## Load record instances From 70cfc42c1a288c2e44428a5a07209981243817dc Mon Sep 17 00:00:00 2001 From: Freddie Akeroyd Date: Mon, 29 Jun 2026 18:04:35 +0100 Subject: [PATCH 2/2] Add gpib support --- PS300/iocBoot/iocPS300-IOC-01/config.xml | 3 ++- PS300/iocBoot/iocPS300-IOC-01/st-common.cmd | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PS300/iocBoot/iocPS300-IOC-01/config.xml b/PS300/iocBoot/iocPS300-IOC-01/config.xml index 2ff7baeae..597e7a286 100644 --- a/PS300/iocBoot/iocPS300-IOC-01/config.xml +++ b/PS300/iocBoot/iocPS300-IOC-01/config.xml @@ -6,7 +6,8 @@ - + + diff --git a/PS300/iocBoot/iocPS300-IOC-01/st-common.cmd b/PS300/iocBoot/iocPS300-IOC-01/st-common.cmd index 889349da7..696caa1fd 100644 --- a/PS300/iocBoot/iocPS300-IOC-01/st-common.cmd +++ b/PS300/iocBoot/iocPS300-IOC-01/st-common.cmd @@ -29,7 +29,6 @@ $(IFSERIAL) $(IFNOTDEVSIM) $(IFNOTRECSIM) asynSetOption("$(DEVICE)",0,"ixoff","N ## GPIB prologix $(IFGPIB) $(IFNOTDEVSIM) $(IFNOTRECSIM) prologixGPIBConfigure("$(DEVICE)", "$(IPADDR=)") $(IFGPIB) $(IFNOTDEVSIM) $(IFNOTRECSIM) prologixGPIBSetOption("$(DEVICE)", "timeout_ms", 2000) -#$(IFGPIB) $(IFNOTDEVSIM) $(IFNOTRECSIM) prologixGPIBSetOption("$(DEVICE)", "send_eoi", 0) ## Load record instances @@ -37,7 +36,7 @@ $(IFGPIB) $(IFNOTDEVSIM) $(IFNOTRECSIM) prologixGPIBSetOption("$(DEVICE)", "time < $(IOCSTARTUP)/dbload.cmd ## Load our record instances -dbLoadRecords("$(PS300)/db/devSRS_PS$(MODEL=350_pos).db","PVPREFIX=$(MYPVPREFIX),P=$(MYPVPREFIX),R=$(IOCNAME):,A=-1, PORT=$(DEVICE)") +dbLoadRecords("$(PS300)/db/devSRS_PS$(MODEL).db","PVPREFIX=$(MYPVPREFIX),P=$(MYPVPREFIX),R=$(IOCNAME):,A=$(GPIBADDR),PORT=$(DEVICE)") dbLoadRecords("$(PS300)/db/devSRS_PS300_common.db","PVPREFIX=$(MYPVPREFIX),P=$(MYPVPREFIX),R=$(IOCNAME):,RECSIM=$(RECSIM=0),DISABLE=$(DISABLE=0),PORT=$(DEVICE)") ##ISIS## Stuff that needs to be done after all records are loaded but before iocInit is called