huago-corrcet_tools/HuaGoCorrect/A3.cpp

328 lines
6.9 KiB
C++

// A3.cpp : 实现文件
//
#include "stdafx.h"
#include "HuaGoCorrect.h"
#include "A3.h"
#include "afxdialogex.h"
#include "HuaGoCorrectDlg.h"
// CA3 对话框
IMPLEMENT_DYNAMIC(CA3, CDialog)
CA3::CA3(CWnd* pParent /*=NULL*/)
: CDialog(CA3::IDD, pParent)
{
}
CA3::~CA3()
{
}
void CA3::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_CMBSPEEDMODE, m_cmbSpeedmode);
}
BEGIN_MESSAGE_MAP(CA3, CDialog)
ON_BN_CLICKED(IDC_BTNGETGRAYSP, &CA3::OnBnClickedBtngetgraysp)
ON_BN_CLICKED(IDC_BTNSETGRAYSP, &CA3::OnBnClickedBtnsetgraysp)
ON_BN_CLICKED(IDC_BTNGETUVSP, &CA3::OnBnClickedBtngetuvsp)
ON_BN_CLICKED(IDC_BTNSETUVSP, &CA3::OnBnClickedBtnsetuvsp)
ON_BN_CLICKED(IDC_BTNGETCOLORSP, &CA3::OnBnClickedBtngetcolorsp)
ON_BN_CLICKED(IDC_BTNSETCOLORSP, &CA3::OnBnClickedBtnsetcolorsp)
ON_BN_CLICKED(IDC_BTNGETSLEEPTIME, &CA3::OnBnClickedBtngetsleeptime)
ON_BN_CLICKED(IDC_BTNSETSLEEPTIME, &CA3::OnBnClickedBtnsetsleeptime)
ON_BN_CLICKED(IDC_BTNSETCLRMAXBRT, &CA3::OnBnClickedBtnsetclrmaxbrt)
ON_BN_CLICKED(IDC_BTNSETGRYMAXBRT, &CA3::OnBnClickedBtnsetgrymaxbrt)
ON_BN_CLICKED(IDC_BTNGETCLRMAXBRT, &CA3::OnBnClickedBtngetclrmaxbrt)
ON_BN_CLICKED(IDC_BTNGETGRYMAXBRT, &CA3::OnBnClickedBtngetgrymaxbrt)
ON_BN_CLICKED(IDC_BTNGETVERSION, &CA3::OnBnClickedBtngetversion)
ON_BN_CLICKED(IDC_BTNSETSPEED, &CA3::OnBnClickedBtnsetspeed)
ON_BN_CLICKED(IDC_BTNGETSPEED, &CA3::OnBnClickedBtngetspeed)
END_MESSAGE_MAP()
// CA3 消息处理程序
BOOL CA3::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
for (size_t i = 0; i < speedmodeMap.size(); i++)
{
m_cmbSpeedmode.InsertString(i, speedmodeMapString[i]);
}
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void CA3::OnBnClickedBtngetsp()
{
// TODO: 在此添加控件通知处理程序代码
}
void CA3::OnBnClickedBtnsetsp()
{
// TODO: 在此添加控件通知处理程序代码
}
void CA3::OnBnClickedBtngetgraysp()
{
// TODO: 在此添加控件通知处理程序代码
OnGetOrSetSp(true, 0);
}
void CA3::OnBnClickedBtnsetgraysp()
{
// TODO: 在此添加控件通知处理程序代码
OnGetOrSetSp(false, 0);
}
void CA3::OnBnClickedBtngetuvsp()
{
// TODO: 在此添加控件通知处理程序代码
OnGetOrSetSp(true, 2);
}
void CA3::OnBnClickedBtnsetuvsp()
{
// TODO: 在此添加控件通知处理程序代码
OnGetOrSetSp(false, 2);
}
void CA3::OnBnClickedBtngetcolorsp()
{
// TODO: 在此添加控件通知处理程序代码
OnGetOrSetSp(true, 1);
}
void CA3::OnBnClickedBtnsetcolorsp()
{
OnGetOrSetSp(false, 1);
}
void CA3::OnGetOrSetSp(bool get, int type)
{
int sp;
CString str_sp;
auto parent = (CHuaGoCorrectDlg*)GetParent();
int itemid = type == 0 ? IDC_LBGRAYSP : (type == 1 ? IDC_LBCOLORSP : IDC_LBGUVSP); //IDC_LBCOLORSP
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
if (get)
{
parent->m_drv->GetSptime(type, sp);
str_sp.Format(L"%d", sp);
SetDlgItemText(itemid, str_sp);
}
else
{
GetDlgItemText(itemid, str_sp);
USES_CONVERSION;
std::string str(W2A(str_sp));
int value = atoi(str.c_str());
parent->m_drv->SetSptime(type, value);
}
}
}
void CA3::OnGetOrSetSleepTime(bool get, int type)
{
int sp;
CString str_sp;
auto parent = (CHuaGoCorrectDlg*)GetParent();
int itemid = type == 0 ? IDC_LBGRAYSP : (type == 1 ? IDC_LBCOLORSP : IDC_LBGUVSP); //IDC_LBCOLORSP
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
if (get)
{
parent->m_drv->GetSptime(type, sp);
str_sp.Format(L"%d", sp);
SetDlgItemText(itemid, str_sp);
}
else
{
GetDlgItemText(itemid, str_sp);
USES_CONVERSION;
std::string str(W2A(str_sp));
int value = atoi(str.c_str());
parent->m_drv->SetSptime(type, value);
}
}
}
void CA3::UpdateMaxBright(bool get, int id)
{
int sp;
CString str_sp;
auto parent = (CHuaGoCorrectDlg*)GetParent();
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
if (get)
{
unsigned int val = 0;
parent->m_drv->GetFlatMaxBright(id == IDC_LBCLRMAXBRT, val);
str_sp.Format(L"%d", val);
SetDlgItemText(id, str_sp);
}
else
{
GetDlgItemText(id, str_sp);
USES_CONVERSION;
std::string str(W2A(str_sp));
int value = atoi(str.c_str());
if (value <= 0) value = 180;
parent->m_drv->SetFlatMaxBright(id == IDC_LBCLRMAXBRT, value);
}
}
}
void CA3::UpdateSleepTime(bool get)
{
int sp;
CString str_sp;
auto parent = (CHuaGoCorrectDlg*)GetParent();
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
if (get)
{
parent->m_drv->GetSleepTime(sp);
str_sp.Format(L"%d", sp);
SetDlgItemText(IDC_LBSLEEPTIME, str_sp);
}
else
{
GetDlgItemText(IDC_LBSLEEPTIME, str_sp);
USES_CONVERSION;
std::string str(W2A(str_sp));
int value = atoi(str.c_str());
if (value <= 0) value = 60;
parent->m_drv->SetSleepTime(value);
}
}
}
void CA3::OnBnClickedBtngetsleeptime()
{
UpdateSleepTime(true);
}
void CA3::OnBnClickedBtnsetsleeptime()
{
UpdateSleepTime(false);
}
void CA3::OnBnClickedBtnsetclrmaxbrt()
{
UpdateMaxBright(false, IDC_LBCLRMAXBRT);
}
void CA3::OnBnClickedBtnsetgrymaxbrt()
{
// TODO: 在此添加控件通知处理程序代码
UpdateMaxBright(false, IDC_LBGRYMAXBRT);
}
void CA3::OnBnClickedBtngetclrmaxbrt()
{
// TODO: 在此添加控件通知处理程序代码
UpdateMaxBright(true, IDC_LBCLRMAXBRT);
}
void CA3::OnBnClickedBtngetgrymaxbrt()
{
// TODO: 在此添加控件通知处理程序代码
UpdateMaxBright(true, IDC_LBGRYMAXBRT);
}
void CA3::OnBnClickedBtngetversion()
{
auto parent = (CHuaGoCorrectDlg*)GetParent();
if (parent != NULL)
{
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
auto kversion = parent->m_drv->GetKernelVersion();
CString version(kversion.c_str());
SetDlgItemText(IDC_LBKERNEL_VERSION, version);
}
}
}
void CA3::OnBnClickedBtnsetspeed()
{
// TODO: 在此添加控件通知处理程序代码
updatespeedmode(false);
}
void CA3::OnBnClickedBtngetspeed()
{
// TODO: 在此添加控件通知处理程序代码
updatespeedmode(true);
}
void CA3::updatespeedmode(bool get)
{
auto parent = (CHuaGoCorrectDlg*)GetParent();
if (parent != NULL)
{
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
int speedmode;
if (get)
{
parent->m_drv->GetSpeedMode(speedmode, true);
bool bfound = false;
for (size_t i = 0; i < speedmodeMap.size(); i++)
{
if (speedmodeMap[i].Speedmode == speedmode)
{
m_cmbSpeedmode.SetCurSel(i);
OnGetOrSetSp(true, 0);//更新灰度sp
OnGetOrSetSp(true, 1);//更新彩色sp
bfound = true;
break;
}
}
if (!bfound)
MessageBox(L"未找到对应的速度模式!", L"提示", MB_OK | MB_ICONINFORMATION);
}
else
{
int cmbindex = m_cmbSpeedmode.GetCurSel();
if (cmbindex != -1)
{
auto t_speedmode = speedmodeMap[cmbindex];
parent->m_drv->GetSpeedMode(t_speedmode.Speedmode, false);
parent->m_drv->SetSptime(0, t_speedmode.GraySp);
parent->m_drv->SetSptime(1, t_speedmode.ColorSp);
}
}
}
else
{
MessageBox(L"未找到扫描仪!", L"提示", MB_OK | MB_ICONINFORMATION);
}
}
}