Hi Jörn,
For the PIXIS cameras we are using the ADLightField driver at our beamlines, mostly because it also provides control of the PIActon spectrometers as well. I have not
used the ADPICam driver, and I don't think it has gotten a lot of use yet.
I didn't write the ADPICam driver, but taking a quick look I can answer some of your questions:
Ø
1) When does the driver set the parameters in the camera? As soon as I change them, or only on start of acquisition?
In general they get set as soon as you change them. This is from the writeFloat64 method, for example:
else if (constraintType == PicamConstraintType_Collection) {
error = Picam_SetParameterFloatingPointValue(currentCameraHandle,
picamParameter, (piflt) value);
Ø
2) I observe a strange behavior of the TriggerMode parameter in the ADBase panel in CSS. According to the database file it should offer two options:
Ø
Internal and External. Instead it offers three options for my detector which fit to the real possibilities of the camera, but TriggerMode and TriggerMode_RBV do
not match!
Ø
Where do these settings get changed?
In general the TriggerMode options defined in ADBase.template can be overridden in 2 ways:
-
They could be redefined in ADPICam.template. That does not seem to be the case.
-
They can be redefined by the driver itself, using the asynEnum interface. That must be what is happening here in this function:
asynStatus ADPICam::piUpdateParameterListValues(
PicamParameter picamParameter, int driverParameter){
const char *functionName = "piUpdateParameterListValues";
int status = asynSuccess;
char *strings[MAX_ENUM_STATES];
int values[MAX_ENUM_STATES];
int severities[MAX_ENUM_STATES];
size_t nIn;
asynPrint(pasynUserSelf, ASYN_TRACE_FLOW,
"%s:%s Enter\n",
driverName,
__func__);
for (int ii=0; ii<MAX_ENUM_STATES; ii++) {
strings[ii] = 0;
}
nIn = 0;
piGenerateListValuesFromCollection(pasynUserSelf, strings,
values, severities, &nIn,
driverParameter, picamParameter);
doCallbacksEnum(strings, values, severities, nIn, driverParameter,
0);
I would expect TriggerMode_RBV to match TriggerMode unless there was an error trying to set the requested TriggerMode.
Ø
3) If I change the acquire time of the camera, it looks as this setting does not have an effect. Probably this refers back to question one, but we tried to stop
and start the acquisition of the camera without any change in readout speed when changing the acquire time from 1s to 10 seconds.
I’m not sure why you would be seeing that.
I see that the driver does have quite a few debugging statements, using ASYN_TRACE_FLOW. You can enable asynTrace from the iocsh command line to see the debugging information.
Mark
-----Original Message-----
From: [email protected] <[email protected]> On Behalf Of Jörn Dreyer via Tech-talk
Sent: Tuesday, March 12, 2019 7:32 AM
To: tech-talk tech-talk <[email protected]>
Subject: ADPIcam driver question
Hi Folks,
I'm trying to get a PIXIS camera from Priceton Instruments working with the ADPIcam driver and PIcamSDK 5.6.1 under Linux. The driver compiles fine (after some changes to the Makefile). It can see the camera and extract all information
about existing and relevance status of the camera parameters.
Her are my questions:
1) When does the driver set the parameters in the camera? As soon as I change them, or only on start of acquisition?
2) I observe a strange behavior of the TriggerMode parameter in the ADBase panel in CSS. According to the database file it should offer two options:
Internal and External. Instead it offers three options for my detector which fit to the real possibilities of the camera, but TriggerMode and TriggerMode_RBV do not match! Where do these settings get changed?
3) If I change the acquire time of the camera, it looks as this setting does not have an effect. Probably this refers back to question one, but we tried to stop and start the acquisition of the camera without any change in readout speed
when changing the acquire time from 1s to 10 seconds.
Can anybody shed some light on these questions?
With kind regards,
Jörn Dreyer