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
This commit is contained in:
rivers
2012-02-07 17:01:07 +00:00
parent e0d1031692
commit 69efbbe843

View File

@@ -0,0 +1,69 @@
#include <stdio.h>
#include <time.h>
#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));
}
}