diff --git a/ADOrcaApp/src/orca.cpp b/ADOrcaApp/src/orca.cpp index 978df5c..0d7d1f0 100644 --- a/ADOrcaApp/src/orca.cpp +++ b/ADOrcaApp/src/orca.cpp @@ -783,11 +783,10 @@ void Orca::imageTask(){ DCAMCAP_TRANSFERINFO captransferinfo; epicsTimeStamp prevAcqTime, currentAcqTime; epicsTimeStamp prev_trigger_time, current_trigger_time; - epicsTimeStamp startTimeStamp; - double elapsedTime, elapsedTotalTime; + double elapsedTime; int evr_counts = 0; double exposure_time, readout_time; - double maxAcqusitionTime, setAcqusitionRate; + double maxAcqusitionTime, acqusitionRate; int triggerMode = DCAMPROP_TRIGGERSOURCE__INTERNAL; lock(); @@ -811,9 +810,6 @@ void Orca::imageTask(){ epicsThreadSleep(.1); } else { - epicsTimeGetCurrent(&startTimeStamp); - getDoubleParam(ADAcquirePeriod, &setAcqusitionRate); - maxAcqusitionTime = setAcqusitionRate * 2; getIntegerParam(ADNumImages, &totalImages); getIntegerParam(ADImageMode, &imageMode); setIntegerParam(ADStatus, ADStatusAcquire); @@ -931,14 +927,21 @@ void Orca::imageTask(){ - if (imageMode == ADImageMultiple) { - epicsTimeGetCurrent(¤t_trigger_time); - elapsedTotalTime = epicsTimeDiffInSeconds(¤t_trigger_time, &startTimeStamp); - if (elapsedTotalTime > maxAcqusitionTime) { - setStringParam(ADStatusMessage, "Acquisition taking too long!"); - } - } + + getDoubleParam(ADAcquirePeriod, &acqusitionRate); + maxAcqusitionTime = acqusitionRate * 2; + epicsTimeGetCurrent(¤tAcqTime); + if (epicsTimeDiffInSeconds(¤tAcqTime, &prevAcqTime) > maxAcqusitionTime) { + setShutter(0); + stopAcquire(); + setIntegerParam(ADAcquire, 0); + setIntegerParam(hAcqControl, 0); + setIntegerParam(ADStatus,ADStatusError); + setStringParam(ADStatusMessage, "Acquisition timeout"); + } + + epicsTimeGetCurrent(¤t_trigger_time); if (epicsTimeDiffInSeconds(¤t_trigger_time, &prev_trigger_time) > (exposure_time + readout_time)) { if ((evr_counts_since_last_start) > captransferinfo.nFrameCount ) { evr_trigger_dropped = evr_counts_since_last_start - captransferinfo.nFrameCount; diff --git a/cmds/st.cmd b/cmds/st.cmd index d830eb8..ae0e90d 100644 --- a/cmds/st.cmd +++ b/cmds/st.cmd @@ -14,7 +14,8 @@ epicsEnvSet("NELEMENTS", "4194304") epicsEnvSet("EPICS_CA_MAX_ARRAY_BYTES", "64000000") #EVR settings -epicsEnvSet("EVR", "LabS-NIDO:Ctrl-EVR-01") +#epicsEnvSet("EVR", "LabS-NIDO:Ctrl-EVR-01") +epicsEnvSet("EVR", "Labs-ECDC:TS-EVR-11") epicsEnvSet("EVR_EVENT", "B") # iocshLoad("$(adorca_DIR)ADOrca.iocsh")