add readAtributes, readSensor functions
This commit is contained in:
@@ -393,6 +393,86 @@ int Hama::getParameterStr(int propertyID){
|
||||
|
||||
return int(status);
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
asynStatus Hama::readAttributes(){
|
||||
|
||||
asynStatus status = asynSuccess;
|
||||
|
||||
getParameter( DCAM_IDPROP_COLORTYPE );
|
||||
//status |= getParameter( DCAM_IDPROP_BITSPERCHANNEL );
|
||||
status = getParameter( DCAM_IDPROP_IMAGE_ROWBYTES );
|
||||
status = getParameter( DCAM_IDPROP_IMAGE_FRAMEBYTES );
|
||||
status = getParameter( DCAM_IDPROP_IMAGE_TOPOFFSETBYTES );
|
||||
//status |= getParameter( DCAM_IDPROP_IMAGE_PIXELTYPE );
|
||||
status = getParameter( DCAM_IDPROP_BUFFER_ROWBYTES );
|
||||
status = getParameter( DCAM_IDPROP_BUFFER_FRAMEBYTES );
|
||||
status = getParameter( DCAM_IDPROP_BUFFER_TOPOFFSETBYTES );
|
||||
status = getParameter( DCAM_IDPROP_BUFFER_PIXELTYPE );
|
||||
status = getParameter( DCAM_IDPROP_RECORDFIXEDBYTES_PERFILE );
|
||||
status = getParameter( DCAM_IDPROP_RECORDFIXEDBYTES_PERSESSION );
|
||||
status = getParameter( DCAM_IDPROP_RECORDFIXEDBYTES_PERFRAME );
|
||||
status = getParameter( DCAM_IDPROP_SYSTEM_ALIVE );
|
||||
status = getParameter( DCAM_IDPROP_CONVERSIONFACTOR_COEFF );
|
||||
status = getParameter( DCAM_IDPROP_CONVERSIONFACTOR_OFFSET );
|
||||
status = getParameter( DCAM_IDPROP_NUMBEROF_VIEW );
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
//============================================================================
|
||||
asynStatus Hama::readSensor(){
|
||||
|
||||
|
||||
asynStatus status = asynSuccess;
|
||||
|
||||
int minH=0, minV=0, sizeH=0, sizeV=0, binning=1;
|
||||
double dminH=0, dminV=0, dsizeH=0, dsizeV=0, dbinning=1;
|
||||
double dvalue = 0;
|
||||
|
||||
getIntegerParam(ADMinX, &minH);
|
||||
getIntegerParam(ADMinY, &minV);
|
||||
getIntegerParam(ADSizeX, &sizeH);
|
||||
getIntegerParam(ADSizeY, &sizeV);
|
||||
getIntegerParam(hBinning, &binning);
|
||||
|
||||
|
||||
dbinning = binning;
|
||||
dminH = minH;
|
||||
dminV = minV;
|
||||
dsizeH = sizeH;
|
||||
dsizeV = sizeV;
|
||||
double modeON = DCAMPROP_MODE__ON;
|
||||
double modeOFF = DCAMPROP_MODE__OFF;
|
||||
|
||||
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYMODE, &modeOFF);
|
||||
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_BINNING, &dbinning);
|
||||
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYHPOS, &dminH);
|
||||
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYVPOS, &dminV);
|
||||
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYHSIZE, &dsizeH);
|
||||
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYVSIZE, &dsizeV);
|
||||
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_IMAGE_WIDTH, &dvalue);
|
||||
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_IMAGE_HEIGHT, &dvalue);
|
||||
status = setIntegerParam(ADBinX, dvalue);
|
||||
status = setIntegerParam(ADBinY, dvalue);
|
||||
|
||||
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_IMAGE_ROWBYTES, &dvalue);
|
||||
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_IMAGE_FRAMEBYTES, &dvalue);
|
||||
//m_err = dcamprop_getvalue(m_hdcam, , &dvalue);
|
||||
|
||||
|
||||
|
||||
|
||||
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYMODE, &modeON);
|
||||
|
||||
|
||||
callParamCallbacks();
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
//============================================================================
|
||||
asynStatus Hama::getParameter(int propertyID){
|
||||
|
||||
@@ -959,16 +1039,16 @@ asynStatus Hama::writeInt32(asynUser *pasynUser, epicsInt32 value){
|
||||
printf("[DEBUG]::writeInit32 ADNumExposures\n");
|
||||
}
|
||||
else if (index == ADMinX) {
|
||||
updateSensorSize();
|
||||
readSensor();
|
||||
}
|
||||
else if (index == ADMinY) {
|
||||
updateSensorSize();
|
||||
readSensor();
|
||||
}
|
||||
else if (index == ADSizeX) {
|
||||
updateSensorSize();
|
||||
readSensor();
|
||||
}
|
||||
else if (index == ADSizeY) {
|
||||
updateSensorSize();
|
||||
readSensor();
|
||||
}
|
||||
else if (index == ADReadStatus) {
|
||||
// dcamprop_setvalue(m_hdcam, DCAM_IDPROP_, value);
|
||||
@@ -1066,7 +1146,7 @@ asynStatus Hama::writeInt32(asynUser *pasynUser, epicsInt32 value){
|
||||
*/
|
||||
//-- binning and ROI
|
||||
else if (index == hBinning) {
|
||||
updateSensorSize();
|
||||
readSensor();
|
||||
printf("[DEBUG]::writeInit32 Binning %d\n", value);
|
||||
}
|
||||
else if (index == hSubarrayHPos) {
|
||||
@@ -1746,49 +1826,6 @@ asynStatus Hama::writeFloat64(asynUser *pasynUser, epicsFloat64 value){
|
||||
return status;
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
asynStatus Hama::updateSensorSize(){
|
||||
|
||||
|
||||
asynStatus status = asynSuccess;
|
||||
|
||||
int minH=0, minV=0, sizeH=0, sizeV=0, binning=1;
|
||||
double dminH=0, dminV=0, dsizeH=0, dsizeV=0, dbinning=1;
|
||||
double dvalue = 0;
|
||||
|
||||
getIntegerParam(ADMinX, &minH);
|
||||
getIntegerParam(ADMinY, &minV);
|
||||
getIntegerParam(ADSizeX, &sizeH);
|
||||
getIntegerParam(ADSizeY, &sizeV);
|
||||
getIntegerParam(hBinning, &binning);
|
||||
|
||||
|
||||
dbinning = binning;
|
||||
dminH = minH;
|
||||
dminV = minV;
|
||||
dsizeH = sizeH;
|
||||
dsizeV = sizeV;
|
||||
double modeON = DCAMPROP_MODE__ON;
|
||||
double modeOFF = DCAMPROP_MODE__OFF;
|
||||
|
||||
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYMODE, &modeOFF);
|
||||
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_BINNING, &dbinning);
|
||||
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYHPOS, &dminH);
|
||||
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYVPOS, &dminV);
|
||||
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYHSIZE, &dsizeH);
|
||||
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYVSIZE, &dsizeV);
|
||||
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_IMAGE_WIDTH, &dvalue);
|
||||
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_IMAGE_HEIGHT, &dvalue);
|
||||
status = setIntegerParam(ADBinX, dvalue);
|
||||
status = setIntegerParam(ADBinY, dvalue);
|
||||
|
||||
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYMODE, &modeON);
|
||||
|
||||
|
||||
callParamCallbacks();
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
void Hama::report(FILE *fp, int details){
|
||||
|
||||
@@ -289,10 +289,15 @@ private:
|
||||
int allocateBuffers(unsigned int);
|
||||
int freeBuffers();
|
||||
|
||||
// These function will be read only once
|
||||
int connectCamera();
|
||||
int disconnectCamera();
|
||||
int initCamera();
|
||||
asynStatus updateSensorSize();
|
||||
|
||||
// These function can be read more than once
|
||||
asynStatus readAttributes();
|
||||
asynStatus readSensor();
|
||||
|
||||
asynStatus getParameter(int paramIndex);
|
||||
|
||||
|
||||
@@ -303,6 +308,7 @@ private:
|
||||
int setParameter(int paramIndex);
|
||||
int getParameterStr(int paramIndex);
|
||||
int getProperties();
|
||||
|
||||
asynStatus setFeature(int featureIndex, double value);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user