Add Tomasz's changes

This commit is contained in:
Iocuser
2023-03-31 10:12:04 +02:00
parent e2368aa113
commit 545fb7b0ec
3 changed files with 44 additions and 47 deletions

4
.gitignore vendored
View File

@@ -7,4 +7,6 @@ O.*
*.db.*
pv.list
core.*
.vscode
.vscode
list.txt
.vscode/c_cpp_properties.json

View File

@@ -6,11 +6,11 @@
"${workspaceFolder}/**",
"${workspaceFolder}/ADHamaApp/src/**",
"${workspaceFolder}/ADHamaApp/src/",
"/home/iocuser/.conda/envs/hama/epics/include/**",
"/home/iocuser/.conda/envs/hama/epics/include/",
"/home/iocuser/.conda/envs/hama/modules/adcore/3.10.0/include/",
"/home/iocuser/.conda/envs/hama/modules/**",
"/home/iocuser/.conda/envs/hama/epics/include/os/Linux"
"/home/iocuser/.conda/envs/hama-dev/epics/include/**",
"/home/iocuser/.conda/envs/hama-dev/epics/include/",
"/home/iocuser/.conda/envs/hama-dev/modules/adcore/3.10.0/include/",
"/home/iocuser/.conda/envs/hama-dev/modules/**",
"/home/iocuser/.conda/envs/hama-dev/epics/include/os/Linux"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",

View File

@@ -988,10 +988,9 @@ return (asynStatus)status;
//============================================================================
asynStatus Hama::readSensor(){
asynStatus status = asynSuccess;
/*
int minH=0, minV=0, sizeH=0, sizeV=0, binning=1, bitPerChannel = 0;
double dminH=0, dminV=0, dsizeH=0, dsizeV=0, dbinning=1;
double dFrameBytes = 0, dRowBytes = 0;
@@ -1023,12 +1022,12 @@ asynStatus Hama::readSensor(){
double dsensorH = 2048;
double dsensorV = 2048;
/*
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYMODE, &modeOFF);
if(failed(m_err))
printError(m_hdcam, m_err, "dcamprop_SubarrayMode()", " VALUE:%f\n", modeOFF);
//m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYMODE, &modeOFF);
//if(failed(m_err))
// printError(m_hdcam, m_err, "dcamprop_SubarrayMode()", " VALUE:%f\n", modeOFF);
*/
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_BINNING, &dbinning);
if(failed(m_err))
printError(m_hdcam, m_err, "dcamprop_Binning()", " VALUE:%f\n", dbinning);
@@ -1120,12 +1119,12 @@ asynStatus Hama::readSensor(){
status = setIntegerParam(NDArraySize, bytes);
/*
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYMODE, &modeON);
*/
// m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYMODE, &modeON);
callParamCallbacks();
*/
return status;
}
@@ -1241,58 +1240,54 @@ asynStatus Hama::writeInt32(asynUser *pasynUser, epicsInt32 value){
}
}
else if (index == ADSizeX) {
int sensorH = 2048, minH = 0, sizeH = 0;
int sensorX = 2048, minX = 0, sizeX = 0;
double dFrameBytes = 0;
getIntegerParam(ADMinX, &minH);
getIntegerParam(ADSizeX, &sizeH);
printf("---1 sensorH = %d minH = %d sizeH = %d\n", sensorH, minH, sizeH);
getIntegerParam(ADMinX, &minX);
getIntegerParam(ADSizeX, &sizeX);
if(sizeH < sensorH - minH){
double dsizeH = sizeH;
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYHSIZE, &dsizeH);
if(sizeX < sensorX - minX){
double dsizeX = sizeX;
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYHSIZE, &dsizeX);
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_IMAGE_FRAMEBYTES, &dFrameBytes);
status = setIntegerParam(hImageFramebytes, dFrameBytes);
status = setIntegerParam(ADSizeX, (int)dsizeX);
printf("1-Status = %d\n", status);
}
else{
double dsizeH = sensorH - minH;
printf("---2 sensorH = %d minH = %d sizeH = %f\n", sensorH, minH, dsizeH);
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYHSIZE, &dsizeH);
if(failed(m_err)) printError(m_hdcam, m_err, "dcamprop_setgetvalue()", "IDPROP:0x%08x, VALUE:%d\n", index, (int)dsizeH);
double dsizeX = sensorX - minX;
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYHSIZE, &dsizeX);
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_IMAGE_FRAMEBYTES, &dFrameBytes);
if(failed(m_err)) printError(m_hdcam, m_err, "dcamprop_setgetvalue()", "IDPROP:0x%08x, VALUE:%d\n", index, (int)dFrameBytes);
printf("---3 dFrameBuffer = %f\n", dFrameBytes);
status = setIntegerParam(ADSizeX, sizeX);
printf("2-Status = %d\n", status);
status = setIntegerParam(hImageFramebytes, dFrameBytes);
//status = setIntegerParam(ADSizeX, dsizeH);
}
}
}
else if (index == ADSizeY) {
int sensorV = 2048, minV = 0, sizeV = 0;
int sensorY = 2048, minY = 0, sizeY = 0;
double dFrameBytes = 0;
getIntegerParam(ADMinY, &minV);
getIntegerParam(ADSizeY, &sizeV);
getIntegerParam(ADMinY, &minY);
getIntegerParam(ADSizeY, &sizeY);
if(sizeV < sensorV - minV){
double dsizeV = sizeV;
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYVSIZE, &dsizeV);
if(sizeY < sensorY - minY){
double dsizeY = sizeY;
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYVSIZE, &dsizeY);
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_IMAGE_FRAMEBYTES, &dFrameBytes);
status = setIntegerParam(ADSizeX, (int)dsizeY);
status = setIntegerParam(hImageFramebytes, dFrameBytes);
}
else{
double dsizeV = sizeV;
printf("---4 sensor = %d min = %d size = %d\n", sensorV, minV, sizeV);
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYVSIZE, &dsizeV);
if(failed(m_err)) printError(m_hdcam, m_err, "dcamprop_setgetvalue()", "IDPROP:0x%08x, VALUE:%d\n", index, (int)dsizeV);
double dsizeY = sizeY;
//printf("---4 sensor = %d min = %d size = %d\n", sensorY, minY, sizeY);
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYVSIZE, &dsizeY);
//if(failed(m_err)) printError(m_hdcam, m_err, "dcamprop_setgetvalue()", "IDPROP:0x%08x, VALUE:%d\n", index, (int)dsizeY);
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_IMAGE_FRAMEBYTES, &dFrameBytes);
if(failed(m_err)) printError(m_hdcam, m_err, "dcamprop_setgetvalue()", "IDPROP:0x%08x, VALUE:%d\n", index, (int)dFrameBytes);
//if(failed(m_err)) printError(m_hdcam, m_err, "dcamprop_setgetvalue()", "IDPROP:0x%08x, VALUE:%d\n", index, (int)dFrameBytes);
status = setIntegerParam(hImageFramebytes, dFrameBytes);
status = setIntegerParam(ADSizeX, dsizeV);
status = setIntegerParam(ADSizeX, (int)dsizeY);
}
}