huago-corrcet_tools/HuaGoCorrect/A4.cpp

391 lines
9.6 KiB
C++
Raw Normal View History

2020-08-31 08:08:50 +00:00
// A4.cpp : ʵ<><CAB5><EFBFBD>ļ<EFBFBD>
//
#include "stdafx.h"
#include "HuaGoCorrect.h"
#include "A4.h"
#include "afxdialogex.h"
#include "HuaGoCorrectDlg.h"
2020-08-31 08:08:50 +00:00
// CA4 <20>Ի<EFBFBD><D4BB><EFBFBD>
IMPLEMENT_DYNAMIC(CA4, CDialog)
CA4::CA4(CWnd* pParent /*=NULL*/)
: CDialog(CA4::IDD, pParent)
{
m_iLastIndex = 0;
m_iSelIndex = 0;
jsonparams = { 0 };
params = { 0 };
2020-08-31 08:08:50 +00:00
}
CA4::~CA4()
{
}
void CA4::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_BTNGET_SERIAL, m_GetSerial);
DDX_Control(pDX,IDC_BTN_SET_SERIAL,m_SetSerial);
DDX_Control(pDX, IDC_BTN_GENSERIAL, m_AutoGenSerial);
DDX_Control(pDX, IDC_BTN_GETVIDPID, m_GetVid);
DDX_Control(pDX, IDC_BTN_SETVIDPID, m_SetVid);
DDX_Control(pDX, IDC_BTN_REBOOT, m_Reboot);
for (size_t i = 0; i < Exposures.size(); i++)
{
DDX_Text(pDX, Exposures[i], params.Exposures[i]);;
}
for (size_t i = 0; i < Gains.size(); i++)
{
DDX_Text(pDX, Gains[i], params.Gain[i]);
}
for (size_t i = 0; i < Offsets.size(); i++)
{
DDX_Text(pDX, Offsets[i], params.Offset[i]);
}
2020-08-31 08:08:50 +00:00
DDX_Control(pDX, IDC_CMB_A4FlatModel, m_A4FlatModel);
}
BEGIN_MESSAGE_MAP(CA4, CDialog)
ON_CBN_SELCHANGE(IDC_CMB_A4FlatModel, &CA4::OnCbnSelChangeA4FlatModel)
ON_BN_CLICKED(IDC_BTN_REBOOT, &CA4::OnBnClickedBtnReboot)
ON_BN_CLICKED(IDC_BTN_SETVIDPID, &CA4::OnBnClickedBtnSetvidpid)
ON_BN_CLICKED(IDC_BTN_GETVIDPID, &CA4::OnBnClickedBtnGetvidpid)
ON_BN_CLICKED(IDC_BTNGET_SERIAL, &CA4::OnBnClickedBtngetSerial)
ON_BN_CLICKED(IDC_BTN_GENSERIAL, &CA4::OnBnClickedBtnGenserial)
ON_BN_CLICKED(IDC_BTN_SET_SERIAL, &CA4::OnBnClickedBtnSetSerial)
ON_BN_CLICKED(IDC_BTN_GETHOR, &CA4::OnBnClickedBtnGethor)
ON_BN_CLICKED(IDC_BTN_GETVER, &CA4::OnBnClickedBtnGetver)
ON_BN_CLICKED(IDC_BTN_SETHOR, &CA4::OnBnClickedBtnSethor)
ON_BN_CLICKED(IDC_BTN_SETVER, &CA4::OnBnClickedBtnSetver)
ON_BN_CLICKED(IDC_BTNGET_VERSION, &CA4::OnBnClickedBtngetVersion)
ON_EN_CHANGE(IDC_tbxSerial, &CA4::OnEnChangetbxserial)
ON_BN_CLICKED(IDC_BTN_GETEXPOS, &CA4::OnBnClickedBtnGetexpos)
ON_BN_CLICKED(IDC_BTN_SETEXPOS, &CA4::OnBnClickedBtnSetexpos)
ON_BN_CLICKED(IDC_BTNAUP, &CA4::OnBnClickedBtnaup)
ON_BN_CLICKED(IDC_BTNADOWN, &CA4::OnBnClickedBtnadown)
ON_BN_CLICKED(IDC_BTNBUP, &CA4::OnBnClickedBtnbup)
ON_BN_CLICKED(IDC_BTNBDOWN, &CA4::OnBnClickedBtnbdown)
2020-08-31 08:08:50 +00:00
END_MESSAGE_MAP()
// CA4 <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL CA4::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC>
LoadCfg();
m_A4FlatModel.InsertString(0, _T("<EFBFBD><EFBFBD>ɫУ<EFBFBD><EFBFBD>ģʽ"));
m_A4FlatModel.InsertString(1, _T("<EFBFBD><EFBFBD>ɫ"));
m_A4FlatModel.InsertString(2, _T("<EFBFBD>Ҷ<EFBFBD>У<EFBFBD><EFBFBD>ģʽ"));
m_A4FlatModel.InsertString(3, _T("<EFBFBD>Ҷ<EFBFBD>"));
m_A4FlatModel.SetCurSel(0);
GetDlgItem(IDC_BTN_GENSERIAL)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_GETVIDPID)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_SETVIDPID)->EnableWindow(FALSE);
2020-08-31 08:08:50 +00:00
return TRUE; // return TRUE unless you set the focus to a control
// <20>쳣: OCX <20><><EFBFBD><EFBFBD>ҳӦ<D2B3><D3A6><EFBFBD><EFBFBD> FALSE
}
void CA4::SetCallBack(std::function<void(int option, void* data)> t_call)
{
m_func = t_call;
}
2020-08-31 08:08:50 +00:00
void CA4::EnableItem(bool enable)
2020-08-31 08:08:50 +00:00
{
this->GetDlgItem(IDC_BTNGET_SERIAL) ->EnableWindow(enable);
this->GetDlgItem(IDC_BTN_GENSERIAL)->EnableWindow(enable);
this->GetDlgItem(IDC_BTN_SET_SERIAL)->EnableWindow(enable);
this->GetDlgItem(IDC_BTN_GETVIDPID)->EnableWindow(enable);
this->GetDlgItem(IDC_BTN_SETVIDPID)->EnableWindow(enable);
this->GetDlgItem(IDC_BTN_REBOOT)->EnableWindow(enable);
}
2020-08-31 08:08:50 +00:00
void CA4::SendCorrectParam()
{
UpdateData();
int index = m_A4FlatModel.GetCurSel();
auto parent = (CHuaGoCorrectDlg*)GetParent();
parent->m_drv->SendFlatData(params, index);
}
void CA4::OnCbnSelChangeA4FlatModel()
{
auto parent = (CHuaGoCorrectDlg*)GetParent();
if (parent->m_drv->IsConnected())
2020-08-31 08:08:50 +00:00
{
auto correctdata = parent->m_drv->GetFlatData();
updateA4Config(correctdata);
2020-08-31 08:08:50 +00:00
}
}
2020-08-31 08:08:50 +00:00
void CA4::updateA4Config(CaptureParams& pValues)
{
UpdateData(TRUE);
switch (m_A4FlatModel.GetCurSel())
{
2020-08-31 08:08:50 +00:00
case 0:
memcpy(params.Exposures, pValues.correctColorExposure, sizeof(pValues.correctColorExposure));
memcpy(params.Gain, pValues.correctColorGain, sizeof(pValues.correctColorGain));
memcpy(params.Offset, pValues.correctColorOffset, sizeof(pValues.correctColorOffset));
break;
2020-08-31 08:08:50 +00:00
case 1:
memcpy(params.Exposures, pValues.colorExposure, sizeof(pValues.colorExposure));
memcpy(params.Gain, pValues.colorGain, sizeof(pValues.colorGain));
memcpy(params.Offset, pValues.colorOffset, sizeof(pValues.colorOffset));
2020-08-31 08:08:50 +00:00
break;
case 2:
memcpy(params.Exposures, pValues.correctGrayExposure, sizeof(pValues.correctGrayExposure));
memcpy(params.Gain, pValues.correctGrayGain, sizeof(pValues.correctGrayGain));
memcpy(params.Offset, pValues.correctGrayOffset, sizeof(pValues.correctGrayOffset));
break;
2020-08-31 08:08:50 +00:00
case 3:
memcpy(params.Exposures, pValues.grayExposure, sizeof(pValues.grayExposure));
memcpy(params.Gain, pValues.grayGain, sizeof(pValues.grayGain));
memcpy(params.Offset, pValues.grayOffset, sizeof(pValues.grayOffset));
break;
default:
break;
}
2020-08-31 08:08:50 +00:00
UpdateData(FALSE);
}
void CA4::LoadCfg()
{
2020-08-31 08:08:50 +00:00
UpdateData(TRUE);
jsonConfig.ReadParam(jsonparams);
memcpy(params.Exposures, jsonparams.correctColorExposure, sizeof(jsonparams.correctColorExposure));
memcpy(params.Gain, jsonparams.correctColorGain, sizeof(jsonparams.correctColorGain));
memcpy(params.Offset, jsonparams.correctColorOffset, sizeof(jsonparams.correctColorOffset));
2020-08-31 08:08:50 +00:00
UpdateData(FALSE);
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>
/// </summary>
void CA4::OnBnClickedBtnReboot()
2020-08-31 08:08:50 +00:00
{
auto parent = (CHuaGoCorrectDlg*)GetParent();
parent->m_drv->Reboot();
2020-08-31 08:08:50 +00:00
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>vidpid
/// </summary>
void CA4::OnBnClickedBtnSetvidpid()
2020-08-31 08:08:50 +00:00
{
}
/// <summary>
/// <20><>ȡvidpid
/// </summary>
void CA4::OnBnClickedBtnGetvidpid()
2020-08-31 08:08:50 +00:00
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2020-08-31 08:08:50 +00:00
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD>к<EFBFBD>
/// </summary>
void CA4::OnBnClickedBtngetSerial()
2020-08-31 08:08:50 +00:00
{
auto parent = (CHuaGoCorrectDlg*)GetParent();
std::string serial= parent->m_drv->GetSerialNum();
CString c_serial(serial.c_str());
SetDlgItemText(IDC_tbxSerial, c_serial);
2020-08-31 08:08:50 +00:00
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>
/// </summary>
void CA4::OnBnClickedBtnGenserial()
2020-08-31 08:08:50 +00:00
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2020-08-31 08:08:50 +00:00
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>
/// </summary>
void CA4::OnBnClickedBtnSetSerial()
2020-08-31 08:08:50 +00:00
{
auto parent = (CHuaGoCorrectDlg*)GetParent();
CString cserial;
GetDlgItemText(IDC_tbxSerial, cserial);
if (!cserial.IsEmpty())
2020-08-31 08:08:50 +00:00
{
std::string ser(cserial.GetBuffer());
parent->m_drv->SetSerialNum(ser);
2020-08-31 08:08:50 +00:00
}
}
2020-08-31 08:08:50 +00:00
void CA4::OnBnClickedBtnGethor()
{
auto parent = (CHuaGoCorrectDlg*)GetParent();
int ratio = 0;
parent->m_drv->GetRatio(0, ratio);
float f_ratio = *(float*)&ratio;
CString str;
str.Format("%.4f", f_ratio);
SetDlgItemText(IDC_tbxHOR, str);
2020-08-31 08:08:50 +00:00
}
void CA4::OnBnClickedBtnGetver()
2020-08-31 08:08:50 +00:00
{
auto parent = (CHuaGoCorrectDlg*)GetParent();
int ratio = 0;
parent->m_drv->GetRatio(1, ratio);
float f_ratio = *(float*)&ratio;
CString str;
str.Format("%.4f", f_ratio);
SetDlgItemText(IDC_tbxVER, str);
2020-08-31 08:08:50 +00:00
}
void CA4::OnBnClickedBtnSethor()
2020-08-31 08:08:50 +00:00
{
auto parent = (CHuaGoCorrectDlg*)GetParent();
CString str;
GetDlgItemText(IDC_tbxHOR, str);
float f_value = atof(str);
int value = *(int*)&f_value;
parent->m_drv->SetRatio(0, value);
2020-08-31 08:08:50 +00:00
}
void CA4::OnBnClickedBtnSetver()
2020-08-31 08:08:50 +00:00
{
auto parent = (CHuaGoCorrectDlg*)GetParent();
CString str;
GetDlgItemText(IDC_tbxVER, str);
float f_value = atof(str);
int value = *(int*)&f_value;
parent->m_drv->SetRatio(1, value);
2020-08-31 08:08:50 +00:00
}
void CA4::OnBnClickedBtngetVersion()
2020-08-31 08:08:50 +00:00
{
auto parent = (CHuaGoCorrectDlg*)GetParent();
std::string ver = parent->m_drv->GetFWVersion();
if (ver.size() > 0)
{
CString str(ver.c_str());
SetDlgItemText(IDC_tbxVersion, str);
}
2020-08-31 08:08:50 +00:00
}
#define MAX_LENGTH 14
void CA4::OnEnChangetbxserial()
2020-08-31 08:08:50 +00:00
{
// TODO: <20><><EFBFBD><EFBFBD><EFBFBD>ÿؼ<C3BF><D8BC><EFBFBD> RICHEDIT <20>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ʹ<EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д CDialog::OnInitDialog()
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CRichEditCtrl().SetEventMask()<29><>
// ͬʱ<CDAC><CAB1> ENM_CHANGE <20><>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B5BD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>
auto tbxSerial = (CEdit*)GetDlgItem(IDC_tbxSerial);
CString str;
GetDlgItemText(IDC_tbxSerial, str);
int length = str.GetLength();
if (length > 14)
{
if (tbxSerial)
{
SetDlgItemText(IDC_tbxSerial, str.Left(MAX_LENGTH));
tbxSerial->SetSel(str.GetLength(), str.GetLength());
}
}
2020-08-31 08:08:50 +00:00
}
void CA4::OnBnClickedBtnGetexpos()
2020-08-31 08:08:50 +00:00
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
auto parent = (CHuaGoCorrectDlg*)GetParent();
int esposeA, exposeB;
parent->m_drv->GetExpose(esposeA,exposeB);
CString expA, expB;
expA.Format("%d", esposeA);
expB.Format("%d", exposeB);
SetDlgItemText(IDC_tbxUVAExpos, expA);
SetDlgItemText(IDC_tbxUVBExpos, expB);
2020-08-31 08:08:50 +00:00
}
void CA4::OnBnClickedBtnSetexpos()
2020-08-31 08:08:50 +00:00
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
auto parent = (CHuaGoCorrectDlg*)GetParent();
int esposeA, exposeB;
CString expA, expB;
GetDlgItemText(IDC_tbxUVAExpos, expA);
GetDlgItemText(IDC_tbxUVBExpos, expB);
esposeA= atoi(expA);
exposeB = atoi(expB);
parent->m_drv->SetExpose(esposeA, exposeB);
2020-08-31 08:08:50 +00:00
}
void CA4::OnBnClickedBtnaup()
2020-08-31 08:08:50 +00:00
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UpdateGains(IDC_BTNAUP, true);
2020-08-31 08:08:50 +00:00
}
void CA4::OnBnClickedBtnadown()
2020-08-31 08:08:50 +00:00
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UpdateGains(IDC_BTNADOWN, false);
2020-08-31 08:08:50 +00:00
}
void CA4::OnBnClickedBtnbup()
2020-08-31 08:08:50 +00:00
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UpdateGains(IDC_BTNBUP, true);
2020-08-31 08:08:50 +00:00
}
void CA4::OnBnClickedBtnbdown()
2020-08-31 08:08:50 +00:00
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UpdateGains(IDC_BTNBDOWN, false);
2020-08-31 08:08:50 +00:00
}
void CA4::UpdateGains(int id, bool increase)
2020-08-31 08:08:50 +00:00
{
UpdateData(TRUE);
if ((id == IDC_BTNAUP || id == IDC_BTNBUP) && increase)
{
int startindex = id == IDC_BTNAUP ? 0 : 6;
for (size_t i = startindex; i < (6+ startindex); i++)
{
params.Gain[i] = params.Gain[i]++;
}
}
else if((id==IDC_BTNADOWN||id==IDC_BTNBDOWN)&&!increase)
{
int startindex = id == IDC_BTNADOWN ? 0 : 6;
for (size_t i = startindex; i < (6 + startindex); i++)
{
params.Gain[i] = params.Gain[i]--;
}
}
UpdateData(FALSE);
2020-08-31 08:08:50 +00:00
}