From 69efbbe843083c5e17baddfeac7cdcace39b5f23 Mon Sep 17 00:00:00 2001 From: rivers Date: Tue, 7 Feb 2012 17:01:07 +0000 Subject: [PATCH] Test program to illustrate bug (?) in Andor SDK git-svn-id: https://subversion.xor.aps.anl.gov/synApps/areaDetector/trunk@14434 dc6c5ff5-0b8b-c028-a01f-ffb33f00fc8b --- ADApp/andorSrc/accumTest.c | 69 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 ADApp/andorSrc/accumTest.c diff --git a/ADApp/andorSrc/accumTest.c b/ADApp/andorSrc/accumTest.c new file mode 100644 index 0000000..1986fcc --- /dev/null +++ b/ADApp/andorSrc/accumTest.c @@ -0,0 +1,69 @@ +#include +#include +#ifdef _WIN32 +#include "ATMCD32D.h" +#else +#include "atmcdLXd.h" +#endif + +void checkStatus(int status) +{ + if (status == DRV_SUCCESS) return; + printf("checkStatus error=%d exiting!\n", status); + exit(-1); +} + +int main(int argc, char *argv[]) +{ + int adcChannel=0, minX=0, minY=0, binX=1, binY=1, sizeX=1024, sizeY=1024; + int triggerMode=0, numExposures=2, numImages=3; + float mAcquireTime=0.1f, mAccumulatePeriod=1.0f, mAcquirePeriod=4.0f; + float acquireTimeAct, accumulatePeriodAct, acquirePeriodAct; + int AAKinetics=3, ATInternal=0; + time_t startTime, endTime; + int acquireStatus; + + checkStatus(Initialize("")); + + printf("SetTriggerMode(%d)\n", triggerMode); + checkStatus(SetTriggerMode(ATInternal)); + printf("SetADChannel(%d)\n", adcChannel); + checkStatus(SetADChannel(adcChannel)); + //Set fastest HS speed. + printf("SetHSSpeed(0, 0)\n"); + checkStatus(SetHSSpeed(0, 0)); + printf("SetImage(%d,%d,%d,%d,%d,%d)\n", + binX, binY, minX+1, minX+sizeX, minY+1, minY+sizeY); + checkStatus(SetImage(binX, binY, minX+1, minX+sizeX, minY+1, minY+sizeY)); + + printf("SetExposureTime(%f)\n", mAcquireTime); + checkStatus(SetExposureTime(mAcquireTime)); + + printf("SetAcquisitionMode(AAKinetics)\n"); + checkStatus(SetAcquisitionMode(AAKinetics)); + printf("SetNumberAccumulations(%d)\n", numExposures); + checkStatus(SetNumberAccumulations(numExposures)); + printf("SetAccumulationCycleTime(%f)\n", mAccumulatePeriod); + checkStatus(SetAccumulationCycleTime(mAccumulatePeriod)); + printf("SetNumberKinetics(%d)\n", numImages); + checkStatus(SetNumberKinetics(numImages)); + printf("SetKineticCycleTime(%f)\n", mAcquirePeriod); + checkStatus(SetKineticCycleTime(mAcquirePeriod)); + + checkStatus(GetAcquisitionTimings(&acquireTimeAct, &accumulatePeriodAct, &acquirePeriodAct)); + printf("GetAcquisitionTimings(exposure=%f, accumulate=%f, kinetic=%f)\n", + acquireTimeAct, accumulatePeriodAct, acquirePeriodAct); + + time(&startTime); + printf("StartAcquisition()\n"); + checkStatus(StartAcquisition()); + while (1) { + printf("GetStatus()\n"); + checkStatus(GetStatus(&acquireStatus)); + if (acquireStatus != DRV_ACQUIRING) break; + printf("WaitForAcquisition()\n"); + checkStatus(WaitForAcquisition()); + time(&endTime); + printf("Time since start=%f\n", difftime(endTime, startTime)); + } +}