staticint64_tAdjust(int64_t val,int64_t minimum,int64_t maximum,int64_t inc){// Check the input parameters.if(inc <=0){// Negative increments are invalid.throwLOGICAL_ERROR_EXCEPTION("Unexpected increment %d", inc);}if(minimum > maximum){// Minimum must not be bigger than or equal to the maximum.throwLOGICAL_ERROR_EXCEPTION("minimum bigger than maximum.");}// Check the lower bound.if(val < minimum){return minimum;}// Check the upper bound.if(val > maximum){return maximum;}// Check the increment.if(inc ==1){// Special case: all values are valid.return val;}else{// The value must be min + (n * inc).// Due to the integer division, the value will be rounded down.return minimum +(((val - minimum)/ inc)* inc);}}//调整曝光时间void CbaslerbasedemoDlg::OnEnChangeEdit2Exposure(){// TODO: 如果该控件是 RICHEDIT 控件,它将不// 发送此通知,除非重写 CDialogEx::OnInitDialog()// 函数并调用 CRichEditCtrl().SetEventMask(),// 同时将 ENM_CHANGE 标志“或”运算到掩码中。// TODO: 在此添加控件通知处理程序代码UpdateData(true);KillTimer(1);SetTimer(1, exposure_time /1000,NULL);
INodeMap& nodemap = camera.GetNodeMap();
CIntegerPtr ptrExposureTimeRaw(nodemap.GetNode("ExposureTimeRaw"));if(IsWritable(ptrExposureTimeRaw)){int64_t newExposureTimeRaw =Adjust(exposure_time, ptrExposureTimeRaw->GetMin(), ptrExposureTimeRaw->GetMax(), ptrExposureTimeRaw->GetInc());
exposure_time = newExposureTimeRaw;UpdateData(FALSE);
ptrExposureTimeRaw->SetValue(newExposureTimeRaw);}}//调整相机增益void CbaslerbasedemoDlg::OnEnChangeEdit1Gain(){// TODO: 如果该控件是 RICHEDIT 控件,它将不// 发送此通知,除非重写 CDialogEx::OnInitDialog()// 函数并调用 CRichEditCtrl().SetEventMask(),// 同时将 ENM_CHANGE 标志“或”运算到掩码中。// TODO: 在此添加控件通知处理程序代码UpdateData(true);
INodeMap& nodemap = camera.GetNodeMap();
CEnumerationPtr PtrgainAuto(nodemap.GetNode("GainAuto"));if(IsWritable(PtrgainAuto)){
PtrgainAuto->FromString("Off");}// Access the GainRaw integer type node.
CIntegerPtr PtrgainRaw(nodemap.GetNode("GainRaw"));if(PtrgainRaw.IsValid()){// Make sure the calculated value is valid.int64_t newGainRaw =Adjust(camera_gain, PtrgainRaw->GetMin(), PtrgainRaw->GetMax(), PtrgainRaw->GetInc());
camera_gain = newGainRaw;UpdateData(FALSE);
PtrgainRaw->SetValue(newGainRaw);}}