From 0284160349abec3887794661a925d92d41cf57c1 Mon Sep 17 00:00:00 2001 From: Tom Trafford Date: Tue, 25 Feb 2020 17:21:38 +0000 Subject: [PATCH] Catch exception thrown while changing ADCSpeed during acquisition --- andorApp/src/andorCCD.cpp | 41 ++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/andorApp/src/andorCCD.cpp b/andorApp/src/andorCCD.cpp index a27aa05..647bd7c 100755 --- a/andorApp/src/andorCCD.cpp +++ b/andorApp/src/andorCCD.cpp @@ -358,31 +358,36 @@ void AndorCCD::setupPreAmpGains() char *enumStrings[MAX_PREAMP_GAINS]; int enumValues[MAX_PREAMP_GAINS]; int enumSeverities[MAX_PREAMP_GAINS]; + static const char *functionName = "setupPreAmpGains"; mNumPreAmpGains = 0; getIntegerParam(AndorAdcSpeed, &adcSpeed); pSpeed = &mADCSpeeds[adcSpeed]; - for (i=0; iADCIndex, pSpeed->AmpIndex, pSpeed->HSSpeedIndex, - i, &isAvailable)); - if (isAvailable) { - checkStatus(GetPreAmpGain(i, &gain)); - epicsSnprintf(pGain->EnumString, MAX_ENUM_STRING_SIZE, "%.2f", gain); - pGain->EnumValue = i; - pGain->Gain = gain; - mNumPreAmpGains++; - if (mNumPreAmpGains >= MAX_PREAMP_GAINS) break; - pGain++; + try{ + for (i=0; iADCIndex, pSpeed->AmpIndex, pSpeed->HSSpeedIndex, + i, &isAvailable)); + if (isAvailable) { + checkStatus(GetPreAmpGain(i, &gain)); + epicsSnprintf(pGain->EnumString, MAX_ENUM_STRING_SIZE, "%.2f", gain); + pGain->EnumValue = i; + pGain->Gain = gain; + mNumPreAmpGains++; + if (mNumPreAmpGains >= MAX_PREAMP_GAINS) break; + pGain++; + } } + for (i=0; i