add binning, feature, master pulse

This commit is contained in:
Iocuser
2022-06-29 17:38:13 +02:00
parent 6818883f5b
commit a2f8d4bb2c
2 changed files with 306 additions and 21 deletions
+271 -9
View File
@@ -244,7 +244,7 @@ record(mbbi, "$(P)$(R)ReadoutDirection-RB") {
# Trigger source (mode 4)
record(mbbo, "$(P)$(R)TriggerSource-S") {
field(DESC,"")
#field(PINI, "YES")
field(PINI, "YES")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "Internal")
@@ -331,9 +331,9 @@ record(mbbo, "$(P)$(R)TriggerGlobalExposure-S") {
field(PINI, "YES")
field(DTYP, "asynInt32")
field(ZRVL, "3")
field(ZRST, "Global Exposure Delay")
field(ZRST, "Delay")
field(ONVL, "5")
field(ONST, "Global Exposure Reset")
field(ONST, "Reset")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_TRIGGER_GLOBAL_EXPOSURE")
field(VAL, "3")
}
@@ -342,9 +342,9 @@ record(mbbi, "$(P)$(R)TriggerGlobalExposure-RB") {
field(DESC, "")
field(DTYP, "asynInt32")
field(ZRVL, "3")
field(ZRST, "Global Exposure Delay")
field(ZRST, "Delay")
field(ONVL, "5")
field(ONST, "Global Exposure Reset")
field(ONST, "Reset")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_TRIGGER_GLOBAL_EXPOSURE")
field(SCAN, "I/O Intr")
}
@@ -379,9 +379,9 @@ record(mbbo, "$(P)$(R)TriggerConnector-S") {
field(PINI, "YES")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "Connector Interface")
field(ZRST, "Interface")
field(ONVL, "2")
field(ONST, "Connector BNC")
field(ONST, "BNC")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_TRIGGER_CONNECTOR")
field(VAL, "1")
field(TPRO, "1")
@@ -391,9 +391,9 @@ record(mbbi, "$(P)$(R)TriggerConnector-RB") {
field(DESC, "")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "Connector Interface")
field(ZRST, "Interface")
field(ONVL, "2")
field(ONST, "Connector BNC")
field(ONST, "BNC")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_TRIGGER_CONNECTOR")
field(SCAN, "I/O Intr")
}
@@ -512,17 +512,190 @@ record(mbbi, "$(P)$(R)CoolerStatus-R") {
##########################################################################
# Binning and ROI #
##########################################################################
# Binning
record(mbbo, "$(P)$(R)Binning-S") {
field(DESC, "")
field(PINI, "YES")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "1")
field(ONVL, "2")
field(ONST, "2")
field(TWVL, "4")
field(TWST, "4")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_BINNING")
field(VAL, "0")
}
record(mbbi, "$(P)$(R)Binning-RB") {
field(DESC, "")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "1x1")
field(ONVL, "2")
field(ONST, "2x2")
field(TWVL, "4")
field(TWST, "4x4")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_BINNING")
field(SCAN, "I/O Intr")
}
# these records are defined in the ADBase.template
# SubarrayHPos
# SubarrayHSize
# SubarrayVPos
# SubarrayVSize
record(mbbo, "$(P)$(R)SubarrayMode-S") {
field(DESC, "")
field(PINI, "YES")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "OFF")
field(ONVL, "2")
field(ONST, "ON")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_BINNING")
field(VAL, "1")
}
record(mbbi, "$(P)$(R)SubarrayMode-RB") {
field(DESC, "")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "OFF")
field(ONVL, "2")
field(ONST, "ON")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_BINNING")
field(SCAN, "I/O Intr")
}
##########################################################################
# Feature #
##########################################################################
record(ao, "$(P)$(R)ExposureTime-S") {
field(DESC, "")
field(PINI, "YES")
field(DTYP, "asynFloat64")
field(DRVL, "0")
field(DRVH, "10.0")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_EXPOSURE_TIME")
field(VAL, "0")
}
record(ai, "$(P)$(R)ExposureTime-RB") {
field(DESC, "")
field(DTYP, "asynFloat64")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_EXPOSURE_TIME")
field(SCAN, "I/O Intr")
}
##########################################################################
# ALU #
##########################################################################
# Defect Correct Mode
record(mbbo, "$(P)$(R)DefectCorrectMode-S") {
field(DESC, "")
field(PINI, "YES")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "OFF")
field(ONVL, "2")
field(ONST, "ON")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_DEFECTCORRECT_MODE")
field(VAL, "1")
}
record(mbbi, "$(P)$(R)DefectCorrectMode-RB") {
field(DESC, "")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "OFF")
field(ONVL, "2")
field(ONST, "ON")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_DEFECTCORRECT_MODE")
field(SCAN, "I/O Intr")
}
##########################################################################
# Hot Pixel Correct Level
record(mbbo, "$(P)$(R)HotPixelCorrectLevel-S") {
field(DESC, "")
field(PINI, "YES")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "Standard")
field(ONVL, "2")
field(ONST, "Minimum")
field(TWVL, "3")
field(TWST, "Aggressive")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_HOT_PIXEL_CORRECT_LEVEL")
field(VAL, "1")
}
record(mbbi, "$(P)$(R)HotPixelCorrectLevel-RB") {
field(DESC, "")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "Standard")
field(ONVL, "2")
field(ONST, "Minimum")
field(TWVL, "3")
field(TWST, "Aggressive")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_HOT_PIXEL_CORRECT_LEVEL")
field(SCAN, "I/O Intr")
}
##########################################################################
# Intensity Lut
record(mbbo, "$(P)$(R)IntensityLutMode-S") {
field(DESC, "")
field(PINI, "YES")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "Through")
field(ONVL, "2")
field(ONST, "Page")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_INTENSITY_LUT_MODE")
field(VAL, "1")
}
record(mbbi, "$(P)$(R)IntensityLutMode-RB") {
field(DESC, "")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "Through")
field(ONVL, "2")
field(ONST, "Page")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_INTENSITY_LUT_MODE")
field(SCAN, "I/O Intr")
}
##########################################################################
# Intensity Lut Page
record(ao, "$(P)$(R)IntensityLutPage-S") {
field(DESC, "")
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_INTENSITY_LUT_PAGE")
field(VAL, "1")
}
record(ai, "$(P)$(R)IntensityLutPage-RB") {
field(DESC, "")
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_INTENSITY_LUT_PAGE")
field(SCAN, "I/O Intr")
}
##########################################################################
# Extraction Mode
record(ai, "$(P)$(R)ExtractionMode-RB") {
field(DESC, "")
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_EXTRACTION_MODE")
field(SCAN, "I/O Intr")
}
##########################################################################
# Output Trigger #
@@ -747,7 +920,96 @@ record(mbbi, "$(P)$(R)OutputTriggerBaseSensor0-RB") {
##########################################################################
# Master Pulse #
##########################################################################
# Master Pulse Mode
record(mbbo, "$(P)$(R)MasterPulseMode-S") {
field(DESC, "")
field(PINI, "YES")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "Continous")
field(ONVL, "2")
field(ONST, "Start")
field(TWVL, "3")
field(THST, "Burst")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_MODE")
field(VAL, "1")
}
record(mbbi, "$(P)$(R)MasterPulseMode-RB") {
field(DESC, "")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "Continous")
field(ONVL, "2")
field(ONST, "Start")
field(TWVL, "3")
field(TWST, "Burst")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_MODE")
field(SCAN, "I/O Intr")
}
##########################################################################
# Master Pulse Trigger Source
record(mbbo, "$(P)$(R)MasterPulseTriggerSource-S") {
field(DESC, "")
field(PINI, "YES")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "External")
field(ONVL, "2")
field(ONST, "Software")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_TRIGGER_SOURCE")
field(VAL, "1")
}
record(mbbi, "$(P)$(R)MasterPulseTriggerSource-RB") {
field(DESC, "")
field(DTYP, "asynInt32")
field(ZRVL, "1")
field(ZRST, "External")
field(ONVL, "2")
field(ONST, "Software")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_TRIGGER_SOURCE")
field(SCAN, "I/O Intr")
}
##########################################################################
# Mster Pulse Interval
record(ao, "$(P)$(R)MasterPulseInterval-S") {
field(DESC, "")
field(PINI, "YES")
field(DTYP, "asynFloat64")
field(DRVL, "0.00001")
field(DRVH, "10")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_INTERVAL")
field(VAL, "0.1")
}
record(ai, "$(P)$(R)MasterPulseInterval-RB") {
field(DESC, "")
field(DTYP, "asynFloat64")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_INTERVAL")
field(SCAN, "I/O Intr")
}
##########################################################################
# Mster Pulse Burst Times
record(ao, "$(P)$(R)MasterPulseBurstTimes-S") {
field(DESC, "")
field(PINI, "YES")
field(DTYP, "asynInt32")
field(DRVL, "1")
field(DRVH, "10000")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_BURST_TIMES")
field(VAL, "0")
}
record(ai, "$(P)$(R)MasterPulseBurstTimes-RB") {
field(DESC, "")
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_BURST_TIMES")
field(SCAN, "I/O Intr")
}
##########################################################################
# Synchronious Timing #
+35 -12
View File
@@ -146,8 +146,9 @@ 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);
err |= getParameter(DCAM_IDPROP_READOUT_DIRECTION);
@@ -160,7 +161,6 @@ Hama::Hama(const char* portName, int cameraId, int maxBuffers, size_t maxMemory,
err |= getParameter(DCAM_IDPROP_TRIGGERTIMES);
err |= getParameter(DCAM_IDPROP_TRIGGERDELAY);
err |= getParameter(DCAM_IDPROP_INTERNALTRIGGER_HANDLING);
*/
err |= getParameterStr(DCAM_IDSTR_VENDOR);
err |= getParameterStr(DCAM_IDSTR_MODEL);
@@ -172,6 +172,7 @@ Hama::Hama(const char* portName, int cameraId, int maxBuffers, size_t maxMemory,
err |= getParameterStr(DCAM_IDSTR_DCAMAPIVERSION);
printf("[DEBUG] Error = %d\n", err);
*/
printf("[DEBUG] === END Constructor ADHama ===\n");
}
//============================================================================
@@ -413,6 +414,8 @@ asynStatus Hama::writeInt32(asynUser *pasynUser, epicsInt32 value){
getParamName(index, &paramName);
double value_d = 0;
//getIntegerParam(index, &value);
if (index == ADAcquire) {
printf("function ADAcquire\n");
@@ -420,9 +423,6 @@ asynStatus Hama::writeInt32(asynUser *pasynUser, epicsInt32 value){
else if (index == ADImageMode) {
printf("function ADImageMode\n");
}
else if (index == ADTriggerMode) {
printf("function ADTriggerMode\n");
}
else if (index == ADNumExposures) {
printf("function ADNumExposures\n");
}
@@ -459,23 +459,46 @@ asynStatus Hama::writeInt32(asynUser *pasynUser, epicsInt32 value){
printf("function BitPerChannel\n");
}
else if (index == hTriggerSource) {
printf("function TriggerSorce\n");
double value_d = 0;
//getIntegerParam(index, &value);
printf("Hi value = %d, value_d = %f\n", value, value_d);
dcamprop_setvalue(m_hdcam, DCAM_IDPROP_TRIGGERSOURCE, value);
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGERSOURCE, &value_d);
printf("value = %d, value_d = %f\n", value, value_d);
setIntegerParam(index, value_d);
}
else if (index == hTriggerMode) {
dcamprop_setvalue(m_hdcam, DCAM_IDPROP_TRIGGER_MODE, value);
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGER_MODE, &value_d);
}
else if (index == hTriggerActive) {
dcamprop_setvalue(m_hdcam, DCAM_IDPROP_TRIGGERACTIVE, value);
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGERACTIVE, &value_d);
}
else if (index == hTriggerGlobalExposure) {
dcamprop_setvalue(m_hdcam, DCAM_IDPROP_TRIGGER_GLOBALEXPOSURE, value);
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGER_GLOBALEXPOSURE, &value_d);
}
else if (index == hTriggerPolarity) {
dcamprop_setvalue(m_hdcam, DCAM_IDPROP_TRIGGERPOLARITY, value);
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGERPOLARITY, &value_d);
}
else if (index == hTriggerConnector) {
dcamprop_setvalue(m_hdcam, DCAM_IDPROP_TRIGGER_CONNECTOR, value);
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGER_CONNECTOR, &value_d);
}
else if (index == hTriggerTimes) {
dcamprop_setvalue(m_hdcam, DCAM_IDPROP_TRIGGERTIMES, value);
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGERTIMES, &value_d);
}
else if (index == hInternalTriggerHandling) {
dcamprop_setvalue(m_hdcam, DCAM_IDPROP_INTERNALTRIGGER_HANDLING, value);
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_INTERNALTRIGGER_HANDLING, &value_d);
}
else{
printf("function ELSE.... \n");
}
setIntegerParam(index, value_d);
/* Do callbacks so higher layers see any changes */
status = (asynStatus) callParamCallbacks();
status = (asynStatus) callParamCallbacks();
if (status)
asynPrint(pasynUser, ASYN_TRACE_ERROR,