Environment
C++ in MFC using namespace Vieworks::vivix,
Instance : CVivixSDK vivixSDK; CDetector* detectorIns;
C# in Winform using Vieworks.vivix.net, using Vieworks.vivix.net.detector; using Vieworks.vivix.net.scu;
Instance: VivixNet netSDK; DETECTOR_INFO DetInfo;Detector detectorIns;
Discription
Perform several calibrations(offset, gain), defect calibration can be loaded only
C++
RESULT result = RESULT::RESULT_SDK_IS_NOT_INITIALIZED; CALIBRATION_READY_STATE crs; result = detectorIns->CalibrationReadyStateGet(&crs); //offsetcalibration part is not nessary for 1717V, 1751S if (crs.OffsetIsReady == false) { //offsetcalibration //must set calibration mode, unless calibration function will not be performed-> result = detectorIns->CalibrationModeSet(true); OFFSET_CALIBRATION_PARAM ocp; ocp.action = OFFSET_CALIBRATION_PARAM::_ACTION::START; ocp.shotCount = 5; result = detectorIns->OffsetCalibration(ocp); result = detectorIns->CalibrationSave(CALIBRATION_FILE_TYPE::CALIBRATION_FILE_OFFSET, @"C:\detector\offset->dat"); result = detectorIns->CalibrationModeSet(false); } //gaincalibration part if (crs.GainIsReady == false) { //must set calibration mode, unless calibration function will not be performed-> result = detectorIns->CalibrationModeSet(true); GAIN_CALIBRATION_PARAM gcp = new GAIN_CALIBRATION_PARAM(); gcp.action = GAIN_CALIBRATION_PARAM::_ACTION::STANDBY; gcp.shotCount = 0; result = detectorIns->GainCalibration(gcp); gcp.action = GAIN_CALIBRATION_PARAM::_ACTION::GET_GAIN_DATA; gcp.shotCount = 5; result = detectorIns->GainCalibration(gcp); //after perform gaincalibration by GET GAIN DATA, shot xray, then progress is alarmed by CalibrationStep callback //Wait callback->-> //after end of xray shot, the gain calibration process-> gcp.action = GAIN_CALIBRATION_PARAM::_ACTION::STOP; gcp.shotCount = 0; result = detectorIns->GainCalibration(gcp); result = detectorIns->CalibrationModeSet(false); result = detectorIns->CalibrationSave(CALIBRATION_FILE_TYPE::CALIBRATION_FILE_GAIN, @"C:\detector\gain.dat"); //or load supported file // result = detectorIns->CalibrationLoad(CALIBRATION_FILE_TYPE->CALIBRATION_FILE_GAIN, @"C:\detector\gain.dat"); } //defect calibration cannot be performed by user, so just load supported defect cal file if (crs.DefectIsReady == false) { result = detectorIns->CalibrationLoad(CALIBRATION_FILE_TYPE::CALIBRATION_FILE_DEFECT, _T(“D:\offset.dat”)); } //check the calibration file is loaded bool enable = false; result = detectorIns->CalibrationApplyGet(CALIBRATION_TYPE::CALIBRATION_OFFSET, &enable); if (result == RESULT::RESULT_SUCCESS && enable == false) { result = detectorIns->CalibrationApplySet(CALIBRATION_TYPE::CALIBRATION_OFFSET, true); } result = detectorIns->CalibrationApplyGet(CALIBRATION_TYPE::CALIBRATION_GAIN, &enable); if (result == RESULT::RESULT_SUCCESS && enable == false) { result = detectorIns->CalibrationApplySet(CALIBRATION_TYPE::CALIBRATION_GAIN, true); } result = detectorIns->CalibrationApplyGet(CALIBRATION_TYPE::CALIBRATION_DEFECT, &enable); if (result == RESULT::RESULT_SUCCESS && enable == false) { result = detectorIns->CalibrationApplySet(CALIBRATION_TYPE::CALIBRATION_DEFECT, true); }
C#
RESULT result = RESULT.RESULT_SDK_IS_NOT_INITIALIZED; CALIBRATION_READY_STATE crs; result = detectorIns.CalibrationReadyStateGet(out crs); //offsetcalibration part is not nessary for 1717V, 1751S if (crs.OffsetIsReady == false) { //offsetcalibration //must set calibration mode, unless calibration function will not be performed. result = detectorIns.CalibrationModeSet(true); OFFSET_CALIBRATION_PARAM ocp = new OFFSET_CALIBRATION_PARAM(); ocp.action = OFFSET_CALIBRATION_PARAM._ACTION.START; ocp.shotCount = 5; result = detectorIns.OffsetCalibration(ocp); result = detectorIns.CalibrationSave(CALIBRATION_FILE_TYPE.CALIBRATION_FILE_OFFSET, @"C:\detector\offset.dat"); result = detectorIns.CalibrationModeSet(false); } //gaincalibration part if (crs.GainIsReady == false) { //must set calibration mode, unless calibration function will not be performed. result = detectorIns.CalibrationModeSet(true); GAIN_CALIBRATION_PARAM gcp = new GAIN_CALIBRATION_PARAM(); gcp.action = GAIN_CALIBRATION_PARAM._ACTION.STANDBY; gcp.shotCount = 0; result = detectorIns.GainCalibration(gcp); gcp.action = GAIN_CALIBRATION_PARAM._ACTION.GET_GAIN_DATA; gcp.shotCount = 5; result = detectorIns.GainCalibration(gcp); //after perform gaincalibration by GET GAIN DATA, shot xray, then progress is alarmed by CalibrationStep callback //Wait callback.. //after end of xray shot, the gain calibration process. gcp.action = GAIN_CALIBRATION_PARAM._ACTION.STOP; gcp.shotCount = 0; result = detectorIns.GainCalibration(gcp); result = detectorIns.CalibrationModeSet(false); result = detectorIns.CalibrationSave(CALIBRATION_FILE_TYPE.CALIBRATION_FILE_GAIN, @"C:\detector\gain.dat"); //or load supported file // result = detectorIns.CalibrationLoad(CALIBRATION_FILE_TYPE.CALIBRATION_FILE_GAIN, @"C:\detector\gain.dat"); } //defect calibration cannot be performed by user, so just load supported defect cal file if (crs.DefectIsReady == false) { result = detectorIns.CalibrationLoad(CALIBRATION_FILE_TYPE.CALIBRATION_FILE_DEFECT, @"C:\detector\gain.dat"); } //check the calibration file is loaded bool enable = false; result = detectorIns.CalibrationApplyGet(CALIBRATION_TYPE.CALIBRATION_OFFSET, out enable); if (result == RESULT.RESULT_SUCCESS && enable == false) { result = detectorIns.CalibrationApplySet(CALIBRATION_TYPE.CALIBRATION_OFFSET, true); } result = detectorIns.CalibrationApplyGet(CALIBRATION_TYPE.CALIBRATION_GAIN, out enable); if (result == RESULT.RESULT_SUCCESS && enable == false) { result = detectorIns.CalibrationApplySet(CALIBRATION_TYPE.CALIBRATION_GAIN, true); } result = detectorIns.CalibrationApplyGet(CALIBRATION_TYPE.CALIBRATION_DEFECT, out enable); if (result == RESULT.RESULT_SUCCESS && enable == false) { result = detectorIns.CalibrationApplySet(CALIBRATION_TYPE.CALIBRATION_DEFECT, true); }