add function initCamera

This commit is contained in:
Iocuser
2022-10-21 17:33:35 +02:00
parent c1699dbf3d
commit 5a2535bb99
3 changed files with 186 additions and 64 deletions
+124 -23
View File
@@ -187,8 +187,6 @@ Hama::Hama(const char* portName, int cameraId, int maxBuffers, size_t maxMemory,
connectCamera();
int err = 0;
/*
err |= getParameter(DCAM_IDPROP_SENSORMODE);
err |= getParameter(DCAM_IDPROP_READOUTSPEED);
@@ -205,24 +203,9 @@ Hama::Hama(const char* portName, int cameraId, int maxBuffers, size_t maxMemory,
*/
#define DETECTOR_PIXEL_NUM_HORZ 0x00420830
#define DETECTOR_PIXEL_NUM_VERT 0x00420840
err |= getParameter(DETECTOR_PIXEL_NUM_HORZ);
err |= getParameter(DETECTOR_PIXEL_NUM_VERT);
err |= getParameterStr(DCAM_IDSTR_VENDOR);
err |= getParameterStr(DCAM_IDSTR_MODEL);
err |= getParameterStr(DCAM_IDSTR_CAMERAID);
err |= getParameterStr(DCAM_IDSTR_BUS);
err |= getParameterStr(DCAM_IDSTR_CAMERAVERSION);
err |= getParameterStr(DCAM_IDSTR_DRIVERVERSION);
err |= getParameterStr(DCAM_IDSTR_MODULEVERSION);
err |= getParameterStr(DCAM_IDSTR_DCAMAPIVERSION);
if(err){
printf("[DEBUG] Error = %d\n", err);
}
initCamera();
/* launch image read task */
epicsThreadCreate("HamaImageTask",
@@ -247,6 +230,55 @@ Hama::Hama(const char* portName, int cameraId, int maxBuffers, size_t maxMemory,
// printf("[DEBUG] === Destructor ADHama ===\n");
//}
//========================================================================================================
int Hama::initCamera(){
int err = 0;
err |= getParameterStr(DCAM_IDSTR_VENDOR);
err |= getParameterStr(DCAM_IDSTR_MODEL);
err |= getParameterStr(DCAM_IDSTR_CAMERAID);
err |= getParameterStr(DCAM_IDSTR_BUS);
err |= getParameterStr(DCAM_IDSTR_CAMERAVERSION);
err |= getParameterStr(DCAM_IDSTR_DRIVERVERSION);
err |= getParameterStr(DCAM_IDSTR_MODULEVERSION);
err |= getParameterStr(DCAM_IDSTR_DCAMAPIVERSION);
err |= getParameter(DETECTOR_PIXEL_NUM_HORZ);
err |= getParameter(DETECTOR_PIXEL_NUM_VERT);
err |= getParameter( DCAM_IDPROP_IMAGE_PIXELTYPE);
err |= getParameter( DCAM_IDPROP_IMAGE_WIDTH);
err |= getParameter( DCAM_IDPROP_IMAGE_ROWBYTES);
err |= getParameter( DCAM_IDPROP_IMAGE_HEIGHT);
err |= getParameter( DCAM_IDPROP_IMAGE_FRAMEBYTES);
err |= getParameter( DCAM_IDPROP_SUBARRAYHPOS);
err |= getParameter( DCAM_IDPROP_SUBARRAYVPOS);
err |= getParameter( DCAM_IDPROP_SUBARRAYHSIZE);
err |= getParameter( DCAM_IDPROP_SUBARRAYVSIZE);
err |= getParameter(DCAM_IDPROP_SENSORMODE);
err |= getParameter(DCAM_IDPROP_READOUTSPEED);
err |= getParameter(DCAM_IDPROP_READOUT_DIRECTION);
err |= getParameter(DCAM_IDPROP_TRIGGERSOURCE);
err |= getParameter(DCAM_IDPROP_TRIGGER_MODE);
err |= getParameter(DCAM_IDPROP_TRIGGERACTIVE);
err |= getParameter(DCAM_IDPROP_TRIGGER_GLOBALEXPOSURE);
err |= getParameter(DCAM_IDPROP_OUTPUTTRIGGER_POLARITY);
err |= getParameter(DCAM_IDPROP_TRIGGER_CONNECTOR);
err |= getParameter(DCAM_IDPROP_TRIGGERTIMES);
err |= getParameter(DCAM_IDPROP_TRIGGERDELAY);
err |= getParameter(DCAM_IDPROP_INTERNALTRIGGER_HANDLING);
if(err){
// asynPrint(pasynUser, ASYN_TRACEIO_DRIVER, "%s:%s: port=%s, value=%d, status=%d\n",
// driverName, functionName, this->portName, value, (int)status);
}
return err;
}
//============================================================================
int Hama::getParameterStr(int propertyID){
@@ -306,10 +338,6 @@ int Hama::getParameterStr(int propertyID){
break;
}
/* Do callbacks so higher layers see any changes */
status = (asynStatus) callParamCallbacks();
// asynPrint(pasynUser, ASYN_TRACEIO_DRIVER, "%s:%s: port=%s, value=%d, status=%d\n",
// driverName, functionName, this->portName, value, (int)status);
return int(status);
@@ -341,57 +369,126 @@ int Hama::getParameter(int propertyID){
status = setIntegerParam(ADMaxSizeY, value);
printf("SENSOR SIZE_Y = %f\n", value);
break;
case DCAM_IDPROP_IMAGE_PIXELTYPE:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_IMAGE_PIXELTYPE, &value);
status = setIntegerParam(hImagePixelType, value);
break;
case DCAM_IDPROP_IMAGE_WIDTH:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_IMAGE_WIDTH, &value);
status = setIntegerParam(hImageWidth, value);
break;
case DCAM_IDPROP_IMAGE_HEIGHT:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_IMAGE_HEIGHT, &value);
status = setIntegerParam(hImageHeight, value);
break;
case DCAM_IDPROP_IMAGE_ROWBYTES:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_IMAGE_ROWBYTES, &value);
status = setIntegerParam(hImageRowbytes, value);
break;
case DCAM_IDPROP_IMAGE_FRAMEBYTES:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_IMAGE_FRAMEBYTES, &value);
status = setIntegerParam(hImageFramebytes, value);
break;
case DCAM_IDPROP_SUBARRAYHSIZE:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_SUBARRAYHSIZE, &value);
status = setIntegerParam(ADMinX, value);
break;
case DCAM_IDPROP_SUBARRAYVSIZE:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_SUBARRAYVSIZE, &value);
status = setIntegerParam(ADMinY, value);
break;
case DCAM_IDPROP_SUBARRAYHPOS:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_SUBARRAYHPOS, &value);
status = setIntegerParam(ADSizeX, value);
break;
case DCAM_IDPROP_SUBARRAYVPOS:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_SUBARRAYVPOS, &value);
status = setIntegerParam(ADSizeY, value);
break;
case DCAM_IDPROP_SENSORMODE:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_SENSORMODE, &value);
status = setIntegerParam(hSensorMode, value);
printf("The SENSOR MODE = %f\n", value);
break;
case DCAM_IDPROP_READOUTSPEED:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_READOUTSPEED, &value);
status = setIntegerParam(hReadoutSpeed, value);
printf("The READOUT SPEED = %f\n", value);
break;
case DCAM_IDPROP_READOUT_DIRECTION:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_READOUT_DIRECTION, &value);
status = setIntegerParam(hReadoutDirection, value);
printf("The READOUT DIRECTION = %f\n", value);
break;
case DCAM_IDPROP_TRIGGERSOURCE:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGERSOURCE, &value);
status = setIntegerParam(hTriggerSource, value);
printf("The = TRIGGER SOURCE = %f\n", value);
break;
case DCAM_IDPROP_TRIGGER_MODE:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGER_MODE, &value);
status = setIntegerParam(hTriggerMode, value);
printf("The TRIGGER MODE = %f\n", value);
break;
case DCAM_IDPROP_TRIGGERACTIVE:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGERACTIVE, &value);
status = setIntegerParam(hTriggerActive, value);
printf("The TRIGGER ACTIVE = %f\n", value);
break;
case DCAM_IDPROP_TRIGGER_GLOBALEXPOSURE:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGER_GLOBALEXPOSURE, &value);
status = setIntegerParam(hTriggerGlobalExposure, value);
printf("The TRIGGER GLOBAL EXPOSURE = %f\n", value);
break;
case DCAM_IDPROP_TRIGGERPOLARITY:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_OUTPUTTRIGGER_POLARITY, &value);
status = setIntegerParam(hTriggerPolarity, value);
printf("The TRIGGER POLARITY = %f\n", value);
break;
case DCAM_IDPROP_TRIGGER_CONNECTOR:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGER_CONNECTOR, &value);
status = setIntegerParam(hTriggerConnector, value);
printf("The TRIGGER CONNECTOR = %f\n", value);
break;
case DCAM_IDPROP_TRIGGERTIMES:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGERTIMES, &value);
status = setIntegerParam(hTriggerTimes, value);
printf("The TRIGGER TIMES = %f\n", value);
break;
case DCAM_IDPROP_TRIGGERDELAY:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGERDELAY, &value);
status = setIntegerParam(hTriggerDelay, value);
printf("The TRIGGER DELAY = %f\n", value);
break;
case DCAM_IDPROP_INTERNALTRIGGER_HANDLING:
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_INTERNALTRIGGER_HANDLING, &value);
status = setIntegerParam(hInternalTriggerHandling, value);
printf("The INTERNAL TRIGGE HANDLING = %f\n", value);
break;
default:
printf("The = %f\n", value);
printf("The init parameter not recognised.... = %f\n", value);
break;
}
@@ -1470,6 +1567,10 @@ asynStatus Hama::accessCapturedImage(HDCAM hdcam, int32 iFrame, void* buf,
return asynSuccess;
}
//========================================================================================================
void Hama::getImageInformation(HDCAM hdcam, int32& pixeltype, int32& width, int32& rowbytes, int32& height, int32& framebytes)
{
DCAMERR err;