3399板子配置适配
This commit is contained in:
parent
a577af2d56
commit
8109139e24
|
@ -2,4 +2,5 @@
|
|||
Debug/*
|
||||
Release/*
|
||||
HuaGoCorrect/Debug/*
|
||||
HuaGoCorrect/Release/*
|
||||
HuaGoCorrect/Release/*
|
||||
HuaGoCorrect/ScanPicture/*
|
|
@ -6,4 +6,10 @@
|
|||
5,CIS的通道,阀值以及畸变检测中目标值,偏差值等参数自动加载和保存
|
||||
|
||||
2021年7月31日
|
||||
1.增加3399 板子g100 g200 校正及配置功能
|
||||
1.增加3399 板子g100 g200 校正及配置功能
|
||||
|
||||
2021年8月17日
|
||||
1. 界面增加速度模式配置功能;
|
||||
2. 增加明场暗场校正最大明场值配置;
|
||||
3. 界面UI按钮顺序调整对齐等操作;
|
||||
V4.2版本
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.28307.960
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HuaGoCorrect_V3.0", "HuaGoCorrect\HuaGoCorrect.vcxproj", "{988CC4D3-44EC-4A9D-AC05-B2AF0EA48E75}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{988CC4D3-44EC-4A9D-AC05-B2AF0EA48E75}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{988CC4D3-44EC-4A9D-AC05-B2AF0EA48E75}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{988CC4D3-44EC-4A9D-AC05-B2AF0EA48E75}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{988CC4D3-44EC-4A9D-AC05-B2AF0EA48E75}.Debug|x64.Build.0 = Debug|x64
|
||||
{988CC4D3-44EC-4A9D-AC05-B2AF0EA48E75}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{988CC4D3-44EC-4A9D-AC05-B2AF0EA48E75}.Release|Win32.Build.0 = Release|Win32
|
||||
{988CC4D3-44EC-4A9D-AC05-B2AF0EA48E75}.Release|x64.ActiveCfg = Release|x64
|
||||
{988CC4D3-44EC-4A9D-AC05-B2AF0EA48E75}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {8B23184A-7ABD-4E4F-B3EC-DFE00243E802}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
BIN
HuaGoCorrect.suo
BIN
HuaGoCorrect.suo
Binary file not shown.
|
@ -25,6 +25,7 @@ CA3::~CA3()
|
|||
void CA3::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_CMBSPEEDMODE, m_cmbSpeedmode);
|
||||
}
|
||||
|
||||
|
||||
|
@ -37,6 +38,13 @@ BEGIN_MESSAGE_MAP(CA3, CDialog)
|
|||
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()
|
||||
|
||||
|
||||
|
@ -48,7 +56,10 @@ 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
|
||||
}
|
||||
|
@ -106,24 +117,28 @@ void CA3::OnBnClickedBtnsetcolorsp()
|
|||
}
|
||||
|
||||
|
||||
void CA3::OnGetOrSetSp(bool get,int type)
|
||||
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 (get)
|
||||
{
|
||||
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
|
||||
if (get)
|
||||
{
|
||||
|
||||
parent->m_drv->GetSptime(type, sp);
|
||||
str_sp.Format("%d", sp);
|
||||
SetDlgItemText(itemid, str_sp);
|
||||
}
|
||||
else
|
||||
{
|
||||
GetDlgItemText(itemid, str_sp);
|
||||
int value= atoi(str_sp);
|
||||
parent->m_drv->SetSptime(type, value);
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -134,18 +149,48 @@ void CA3::OnGetOrSetSleepTime(bool get, int type)
|
|||
CString str_sp;
|
||||
auto parent = (CHuaGoCorrectDlg*)GetParent();
|
||||
int itemid = type == 0 ? IDC_LBGRAYSP : (type == 1 ? IDC_LBCOLORSP : IDC_LBGUVSP); //IDC_LBCOLORSP
|
||||
if (get)
|
||||
{
|
||||
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
|
||||
if (get)
|
||||
{
|
||||
|
||||
parent->m_drv->GetSptime(type, sp);
|
||||
str_sp.Format("%d", sp);
|
||||
SetDlgItemText(itemid, str_sp);
|
||||
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);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
GetDlgItemText(itemid, str_sp);
|
||||
int value = atoi(str_sp);
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -154,18 +199,22 @@ void CA3::UpdateSleepTime(bool get)
|
|||
int sp;
|
||||
CString str_sp;
|
||||
auto parent = (CHuaGoCorrectDlg*)GetParent();
|
||||
if (get)
|
||||
{
|
||||
parent->m_drv->GetSleepTime(sp);
|
||||
str_sp.Format("%d", sp);
|
||||
SetDlgItemText(IDC_LBSLEEPTIME, str_sp);
|
||||
}
|
||||
else
|
||||
{
|
||||
GetDlgItemText(IDC_LBSLEEPTIME, str_sp);
|
||||
int value = atoi(str_sp);
|
||||
if (value <= 0) value = 60;
|
||||
parent->m_drv->SetSleepTime(value);
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -178,4 +227,102 @@ void CA3::OnBnClickedBtngetsleeptime()
|
|||
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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
#include <map>
|
||||
|
||||
// CA3 对话框
|
||||
|
||||
|
@ -32,11 +32,43 @@ public:
|
|||
private:
|
||||
void OnGetOrSetSp(bool get, int type);
|
||||
public:
|
||||
afx_msg
|
||||
void OnGetOrSetSleepTime(bool get, int type);
|
||||
afx_msg void OnGetOrSetSleepTime(bool get, int type);
|
||||
void UpdateMaxBright(bool get,int id);
|
||||
void UpdateSleepTime(bool get);
|
||||
void OnBnClickedBtngetsleeptime();
|
||||
afx_msg void OnBnClickedBtnsetsleeptime();
|
||||
afx_msg void OnBnClickedBtngetcolorsp2();
|
||||
afx_msg void OnBnClickedBtnsetcolorsp2();
|
||||
afx_msg void OnBnClickedBtnsetclrmaxbrt();
|
||||
afx_msg void OnBnClickedBtnsetgrymaxbrt();
|
||||
afx_msg void OnBnClickedBtngetclrmaxbrt();
|
||||
afx_msg void OnBnClickedBtngetgrymaxbrt();
|
||||
afx_msg void OnBnClickedBtngetversion();
|
||||
afx_msg void OnBnClickedBtnsetspeed();
|
||||
afx_msg void OnBnClickedBtngetspeed();
|
||||
void updatespeedmode(bool get);
|
||||
private:
|
||||
struct speedmodeparam {
|
||||
int Speedmode;
|
||||
unsigned int ColorSp;
|
||||
unsigned int GraySp;
|
||||
};
|
||||
std::map<int, speedmodeparam> speedmodeMap = {
|
||||
{0,{70,0x437,0xca7}},
|
||||
{1,{80,0x388,0xa98}},
|
||||
{2,{90,0x30a,0x91f}},
|
||||
{3,{100,0x280,0x781}},
|
||||
{4,{110,0x280,0x781}},
|
||||
{5,{120,0x280,0x781}},
|
||||
{6,{130,0x280,0x781}}
|
||||
};
|
||||
|
||||
std::map<int, CString> speedmodeMapString = {
|
||||
{0,L"G100_70PPM"},
|
||||
{1,L"G100_80PPM"},
|
||||
{2,L"G100_90PPM"},
|
||||
{3,L"G200_100PPM"},
|
||||
{4,L"G200_110PPM"},
|
||||
{5,L"G200_120PPM"},
|
||||
{6,L"G200_130PPM"}
|
||||
};
|
||||
CComboBox m_cmbSpeedmode;
|
||||
};
|
||||
|
|
|
@ -118,14 +118,16 @@ void CA4::SendCorrectParam()
|
|||
UpdateData();
|
||||
int index = m_A4FlatModel.GetCurSel();
|
||||
auto parent = (CHuaGoCorrectDlg*)GetParent();
|
||||
parent->m_drv->SendFlatData(params, index);
|
||||
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
|
||||
parent->m_drv->SendFlatData(params, index);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CA4::OnCbnSelChangeA4FlatModel()
|
||||
{
|
||||
auto parent = (CHuaGoCorrectDlg*)GetParent();
|
||||
if (parent->m_drv->IsConnected())
|
||||
if (parent->m_drv.get()&&parent->m_drv->IsConnected())
|
||||
{
|
||||
auto correctdata = parent->m_drv->GetFlatData();
|
||||
updateA4Config(correctdata);
|
||||
|
@ -179,7 +181,9 @@ void CA4::LoadCfg()
|
|||
void CA4::OnBnClickedBtnReboot()
|
||||
{
|
||||
auto parent = (CHuaGoCorrectDlg*)GetParent();
|
||||
parent->m_drv->Reboot();
|
||||
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
|
||||
parent->m_drv->Reboot();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -203,9 +207,11 @@ void CA4::OnBnClickedBtnGetvidpid()
|
|||
void CA4::OnBnClickedBtngetSerial()
|
||||
{
|
||||
auto parent = (CHuaGoCorrectDlg*)GetParent();
|
||||
std::string serial= parent->m_drv->GetSerialNum();
|
||||
CString c_serial(serial.c_str());
|
||||
SetDlgItemText(IDC_tbxSerial, c_serial);
|
||||
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
|
||||
std::string serial = parent->m_drv->GetSerialNum();
|
||||
CString c_serial(serial.c_str());
|
||||
SetDlgItemText(IDC_tbxSerial, c_serial);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -224,10 +230,13 @@ void CA4::OnBnClickedBtnSetSerial()
|
|||
auto parent = (CHuaGoCorrectDlg*)GetParent();
|
||||
CString cserial;
|
||||
GetDlgItemText(IDC_tbxSerial, cserial);
|
||||
if (!cserial.IsEmpty())
|
||||
{
|
||||
std::string ser(cserial.GetBuffer());
|
||||
parent->m_drv->SetSerialNum(ser);
|
||||
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
|
||||
if (!cserial.IsEmpty())
|
||||
{
|
||||
USES_CONVERSION;
|
||||
std::string str(W2A(cserial));
|
||||
parent->m_drv->SetSerialNum(str);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -236,11 +245,13 @@ void CA4::OnBnClickedBtnGethor()
|
|||
{
|
||||
auto parent = (CHuaGoCorrectDlg*)GetParent();
|
||||
int ratio = 0;
|
||||
parent->m_drv->GetRatio(0, ratio);
|
||||
float f_ratio = *(float*)∶
|
||||
CString str;
|
||||
str.Format("%.4f", f_ratio);
|
||||
SetDlgItemText(IDC_tbxHOR, str);
|
||||
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
|
||||
parent->m_drv->GetRatio(0, ratio);
|
||||
float f_ratio = *(float*)∶
|
||||
CString str;
|
||||
str.Format(L"%.4f", f_ratio);
|
||||
SetDlgItemText(IDC_tbxHOR, str);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -248,44 +259,56 @@ void CA4::OnBnClickedBtnGetver()
|
|||
{
|
||||
auto parent = (CHuaGoCorrectDlg*)GetParent();
|
||||
int ratio = 0;
|
||||
parent->m_drv->GetRatio(1, ratio);
|
||||
float f_ratio = *(float*)∶
|
||||
CString str;
|
||||
str.Format("%.4f", f_ratio);
|
||||
SetDlgItemText(IDC_tbxVER, str);
|
||||
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
|
||||
parent->m_drv->GetRatio(1, ratio);
|
||||
float f_ratio = *(float*)∶
|
||||
CString str;
|
||||
str.Format(L"%.4f", f_ratio);
|
||||
SetDlgItemText(IDC_tbxVER, str);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CA4::OnBnClickedBtnSethor()
|
||||
{
|
||||
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);
|
||||
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
|
||||
CString str;
|
||||
GetDlgItemText(IDC_tbxHOR, str);
|
||||
USES_CONVERSION;
|
||||
std::string s_str(W2A(str));
|
||||
float f_value = atof(s_str.c_str());
|
||||
int value = *(int*)&f_value;
|
||||
parent->m_drv->SetRatio(0, value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CA4::OnBnClickedBtnSetver()
|
||||
{
|
||||
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);
|
||||
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
|
||||
CString str;
|
||||
GetDlgItemText(IDC_tbxVER, str);
|
||||
USES_CONVERSION;
|
||||
std::string s_str(W2A(str));
|
||||
float f_value = atof(s_str.c_str());
|
||||
int value = *(int*)&f_value;
|
||||
parent->m_drv->SetRatio(1, value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CA4::OnBnClickedBtngetVersion()
|
||||
{
|
||||
auto parent = (CHuaGoCorrectDlg*)GetParent();
|
||||
std::string ver = parent->m_drv->GetFWVersion();
|
||||
if (ver.size() > 0)
|
||||
{
|
||||
CString str(ver.c_str());
|
||||
SetDlgItemText(IDC_tbxVersion, str);
|
||||
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
|
||||
std::string ver = parent->m_drv->GetFWVersion();
|
||||
if (ver.size() > 0)
|
||||
{
|
||||
CString str(ver.c_str());
|
||||
SetDlgItemText(IDC_tbxVersion, str);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -315,14 +338,15 @@ void CA4::OnBnClickedBtnGetexpos()
|
|||
{
|
||||
// TODO: 在此添加控件通知处理程序代码
|
||||
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);
|
||||
|
||||
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
|
||||
int esposeA, exposeB;
|
||||
parent->m_drv->GetExpose(esposeA, exposeB);
|
||||
CString expA, expB;
|
||||
expA.Format(L"%d", esposeA);
|
||||
expB.Format(L"%d", exposeB);
|
||||
SetDlgItemText(IDC_tbxUVAExpos, expA);
|
||||
SetDlgItemText(IDC_tbxUVBExpos, expB);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -334,9 +358,14 @@ void CA4::OnBnClickedBtnSetexpos()
|
|||
CString expA, expB;
|
||||
GetDlgItemText(IDC_tbxUVAExpos, expA);
|
||||
GetDlgItemText(IDC_tbxUVBExpos, expB);
|
||||
esposeA= atoi(expA);
|
||||
exposeB = atoi(expB);
|
||||
parent->m_drv->SetExpose(esposeA, exposeB);
|
||||
USES_CONVERSION;
|
||||
std::string str_a(W2A(expA));
|
||||
std::string str_b(W2A(expB));
|
||||
esposeA= atoi(str_a.c_str());
|
||||
exposeB = atoi(str_b.c_str());
|
||||
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
|
||||
parent->m_drv->SetExpose(esposeA, exposeB);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -383,9 +412,19 @@ void CA4::UpdateGains(int id, bool 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);
|
||||
}
|
||||
}
|
||||
|
||||
void CA4::OnEnChangetbxfrexposure2()
|
||||
{
|
||||
// TODO: 如果该控件是 RICHEDIT 控件,它将不
|
||||
// 发送此通知,除非重写 CDialog::OnInitDialog()
|
||||
// 函数并调用 CRichEditCtrl().SetEventMask(),
|
||||
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
|
||||
|
||||
// TODO: 在此添加控件通知处理程序代码
|
||||
}
|
||||
|
|
|
@ -74,4 +74,5 @@ public:
|
|||
afx_msg void OnBnClickedBtnbup();
|
||||
afx_msg void OnBnClickedBtnbdown();
|
||||
void UpdateGains(int id, bool get);
|
||||
afx_msg void OnEnChangetbxfrexposure2();
|
||||
};
|
||||
|
|
|
@ -177,12 +177,17 @@ void CVISON::showfun()
|
|||
auto ret = ((CHuaGoCorrectDlg*)parent)->m_drv->aquire_image(path, 0);
|
||||
if (ret != -1)
|
||||
{
|
||||
imageindex++;
|
||||
aquiredimgindx++;
|
||||
CString cPath(path.c_str());
|
||||
m_path.push_back(cPath);
|
||||
m_onStop(false, aquiredimgindx);
|
||||
DrawPicture(cPath);
|
||||
|
||||
if (path.length() > 0) {
|
||||
imageindex++;
|
||||
aquiredimgindx++;
|
||||
USES_CONVERSION;
|
||||
std::string t_path = StringToUtf(path);
|
||||
CString cPath(A2T(t_path.c_str()));
|
||||
m_path.push_back(cPath);
|
||||
m_onStop(false, aquiredimgindx);
|
||||
DrawPicture(cPath);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
// Config.cpp: implementation of the CConfig class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "Config.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[]=__FILE__;
|
||||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Construction/Destruction
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
CConfig::CConfig()
|
||||
{
|
||||
}
|
||||
|
||||
CConfig::~CConfig()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CConfig::GetTextInfo(CString strKeyName, CString &strText)
|
||||
{
|
||||
char cParam[256];
|
||||
::GetPrivateProfileString("TextInfo", strKeyName, "", cParam, 255, INI_FILE_NAME);
|
||||
strText = cParam;
|
||||
}
|
||||
|
||||
void CConfig::LoadCfg()
|
||||
{
|
||||
UINT iParam[30] = {0};
|
||||
iParam[0] = ::GetPrivateProfileInt("ColorCorrection", "FRExposure ", 340, INI_FILE_NAME);
|
||||
|
||||
}
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
// Config.h: interface for the CConfig class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if !defined(AFX_CONFIG_H__9AA09B6E_5336_4EBA_BF73_3B1389D6FAF0__INCLUDED_)
|
||||
#define AFX_CONFIG_H__9AA09B6E_5336_4EBA_BF73_3B1389D6FAF0__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#define INI_FILE_NAME "./HuaGoScan.ini"
|
||||
|
||||
class CConfig
|
||||
{
|
||||
public:
|
||||
CConfig();
|
||||
virtual ~CConfig();
|
||||
|
||||
void LoadCfg();
|
||||
void GetTextInfo(CString strKeyName, CString &strText);
|
||||
DWORD GetPort()
|
||||
{
|
||||
return m_dwLocalPort;
|
||||
}
|
||||
const char *GetTitle()
|
||||
{
|
||||
return m_strTitle;
|
||||
}
|
||||
|
||||
const char* GetSQLIP()
|
||||
{
|
||||
return m_strSQLIP;
|
||||
}
|
||||
private:
|
||||
CString m_strTitle; // 主界面上显示的标题
|
||||
CString m_strSQLIP;
|
||||
|
||||
DWORD m_dwLocalPort; // 开启的端口号
|
||||
};
|
||||
|
||||
#endif // !defined(AFX_CONFIG_H__9AA09B6E_5336_4EBA_BF73_3B1389D6FAF0__INCLUDED_)
|
|
@ -1,220 +0,0 @@
|
|||
// ConfigParam.cpp : 实现文件
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "HuaGoCorrect.h"
|
||||
#include "ConfigParam.h"
|
||||
#include "afxdialogex.h"
|
||||
|
||||
|
||||
// CConfigParam 对话框
|
||||
|
||||
IMPLEMENT_DYNAMIC(CConfigParam, CDialog)
|
||||
|
||||
CConfigParam::CConfigParam(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CConfigParam::IDD, pParent)
|
||||
, m_AMaxStep(0)
|
||||
, m_AMinStep(0)
|
||||
, m_BMaxStep(0)
|
||||
, m_BMinStep(0)
|
||||
, m_AERMaxStep(0)
|
||||
, m_AERMinStep(0)
|
||||
, m_AEGMaxStep(0)
|
||||
, m_AEGMinStep(0)
|
||||
, m_AEBMaxStep(0)
|
||||
, m_AEBMinStep(0)
|
||||
, m_BERMaxStep(0)
|
||||
, m_BERMinStep(0)
|
||||
, m_BEGMaxStep(0)
|
||||
, m_BEGMinStep(0)
|
||||
, m_BEBMaxStep(0)
|
||||
, m_BEBMinStep(0)
|
||||
, m_GainStep(0)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CConfigParam::~CConfigParam()
|
||||
{
|
||||
}
|
||||
|
||||
void CConfigParam::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Text(pDX, IDC_AMaxStep, m_AMaxStep);
|
||||
DDV_MinMaxUInt(pDX, m_AMaxStep, 0, 255);
|
||||
DDX_Text(pDX, IDC_AMinStep, m_AMinStep);
|
||||
DDV_MinMaxUInt(pDX, m_AMinStep, 0, 255);
|
||||
DDX_Text(pDX, IDC_BMaxStep, m_BMaxStep);
|
||||
DDV_MinMaxUInt(pDX, m_BMaxStep, 0, 255);
|
||||
DDX_Text(pDX, IDC_BMinStep, m_BMinStep);
|
||||
DDV_MinMaxUInt(pDX, m_BMinStep, 0, 255);
|
||||
DDX_Text(pDX, IDC_AERMaxStep, m_AERMaxStep);
|
||||
DDV_MinMaxUInt(pDX, m_AERMaxStep, 0, 1000);
|
||||
DDX_Text(pDX, IDC_AERMinStep, m_AERMinStep);
|
||||
DDV_MinMaxUInt(pDX, m_AERMinStep, 0, 1000);
|
||||
DDX_Text(pDX, IDC_AEGMaxStep, m_AEGMaxStep);
|
||||
DDV_MinMaxUInt(pDX, m_AEGMaxStep, 0, 1000);
|
||||
DDX_Text(pDX, IDC_AEGMinStep, m_AEGMinStep);
|
||||
DDV_MinMaxUInt(pDX, m_AEGMinStep, 0, 1000);
|
||||
DDX_Text(pDX, IDC_AEBMaxStep, m_AEBMaxStep);
|
||||
DDV_MinMaxUInt(pDX, m_AEBMaxStep, 0, 1000);
|
||||
DDX_Text(pDX, IDC_AEBMinStep, m_AEBMinStep);
|
||||
DDV_MinMaxUInt(pDX, m_AEBMinStep, 0, 1000);
|
||||
DDX_Text(pDX, IDC_BERMaxStep, m_BERMaxStep);
|
||||
DDV_MinMaxUInt(pDX, m_BERMaxStep, 0, 1000);
|
||||
DDX_Text(pDX, IDC_BERMinStep, m_BERMinStep);
|
||||
DDV_MinMaxUInt(pDX, m_BERMinStep, 0, 1000);
|
||||
DDX_Text(pDX, IDC_BEGMaxStep, m_BEGMaxStep);
|
||||
DDV_MinMaxUInt(pDX, m_BEGMaxStep, 0, 1000);
|
||||
DDX_Text(pDX, IDC_BEGMinStep, m_BEGMinStep);
|
||||
DDV_MinMaxUInt(pDX, m_BEGMinStep, 0, 1000);
|
||||
DDX_Text(pDX, IDC_BEBMaxStep, m_BEBMaxStep);
|
||||
DDV_MinMaxUInt(pDX, m_BEBMaxStep, 0, 1000);
|
||||
DDX_Text(pDX, IDC_BEBMinStep, m_BEBMinStep);
|
||||
DDV_MinMaxUInt(pDX, m_BEBMinStep, 0, 1000);
|
||||
DDX_Text(pDX, IDC_GainStep, m_GainStep);
|
||||
DDV_MinMaxUInt(pDX, m_GainStep, 0, 1000);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CConfigParam, CDialog)
|
||||
ON_BN_CLICKED(IDC_BTN_SAVECFG, &CConfigParam::OnBtnSaveCFG)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CConfigParam 消息处理程序
|
||||
|
||||
|
||||
BOOL CConfigParam::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// TODO: 在此添加额外的初始化
|
||||
LoadConfig();
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 异常: OCX 属性页应返回 FALSE
|
||||
}
|
||||
|
||||
void CConfigParam::LoadConfig()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
m_AMaxStep = ::GetPrivateProfileInt("GrayBlack", "AGMaxStep", 255, INI_FILE_NAME);
|
||||
m_AMinStep = ::GetPrivateProfileInt("GrayBlack", "AGMinStep", 0, INI_FILE_NAME);
|
||||
m_BMaxStep = ::GetPrivateProfileInt("GrayBlack", "BGMaxStep", 255, INI_FILE_NAME);
|
||||
m_BMinStep = ::GetPrivateProfileInt("GrayBlack", "BGMinStep", 0, INI_FILE_NAME);
|
||||
m_AERMaxStep = ::GetPrivateProfileInt("ColorWhite", "ACRMaxStep", 900, INI_FILE_NAME);
|
||||
m_AERMinStep = ::GetPrivateProfileInt("ColorWhite", "ACRMinStep", 0, INI_FILE_NAME);
|
||||
m_AEGMaxStep = ::GetPrivateProfileInt("ColorWhite", "ACGMaxStep", 900, INI_FILE_NAME);
|
||||
m_AEGMinStep = ::GetPrivateProfileInt("ColorWhite", "ACGMinStep", 0, INI_FILE_NAME);
|
||||
m_AEBMaxStep = ::GetPrivateProfileInt("ColorWhite", "ACBMaxStep", 900, INI_FILE_NAME);
|
||||
m_AEBMinStep = ::GetPrivateProfileInt("ColorWhite", "ACBMinStep", 0, INI_FILE_NAME);
|
||||
m_BERMaxStep = ::GetPrivateProfileInt("ColorWhite", "BCRMaxStep", 900, INI_FILE_NAME);
|
||||
m_BERMinStep = ::GetPrivateProfileInt("ColorWhite", "BCRMinStep", 0, INI_FILE_NAME);
|
||||
m_BEGMaxStep = ::GetPrivateProfileInt("ColorWhite", "BCGMaxStep", 900, INI_FILE_NAME);
|
||||
m_BEGMinStep = ::GetPrivateProfileInt("ColorWhite", "BCGMinStep", 0, INI_FILE_NAME);
|
||||
m_BEBMaxStep = ::GetPrivateProfileInt("ColorWhite", "BCBMaxStep", 900, INI_FILE_NAME);
|
||||
m_BEBMinStep = ::GetPrivateProfileInt("ColorWhite", "BCBMinStep", 0, INI_FILE_NAME);
|
||||
m_GainStep = ::GetPrivateProfileInt("GainStep", "ABGainStep", 24, INI_FILE_NAME);
|
||||
UpdateData(FALSE);
|
||||
}
|
||||
|
||||
|
||||
void CConfigParam::OnBtnSaveCFG()
|
||||
{
|
||||
// TODO: 在此添加控件通知处理程序代码
|
||||
SaveParam();
|
||||
OnOK();
|
||||
}
|
||||
|
||||
void CConfigParam::SaveParam()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
CString csAMaxStep,csAMinStep,csBMaxStep,csBMinStep,csABGainStep;
|
||||
CString csAERMaxStep,csAERMinStep,csAEGMaxStep,csAEGMinStep,csAEBMaxStep,csAEBMinStep;
|
||||
CString csBERMaxStep,csBERMinStep,csBEGMaxStep,csBEGMinStep,csBEBMaxStep,csBEBMinStep;
|
||||
csAMaxStep.Format(_T("%d"),m_AMaxStep);
|
||||
csAMinStep.Format(_T("%d"),m_AMinStep);
|
||||
csBMaxStep.Format(_T("%d"),m_BMaxStep);
|
||||
csBMinStep.Format(_T("%d"),m_BMinStep);
|
||||
csAERMaxStep.Format(_T("%d"),m_AERMaxStep);
|
||||
csAERMinStep.Format(_T("%d"),m_AERMinStep);
|
||||
csAEGMaxStep.Format(_T("%d"),m_AEGMaxStep);
|
||||
csAEGMinStep.Format(_T("%d"),m_AEGMinStep);
|
||||
csAEBMaxStep.Format(_T("%d"),m_AEBMaxStep);
|
||||
csAEBMinStep.Format(_T("%d"),m_AEBMinStep);
|
||||
csBERMaxStep.Format(_T("%d"),m_BERMaxStep);
|
||||
csBERMinStep.Format(_T("%d"),m_BERMinStep);
|
||||
csBEGMaxStep.Format(_T("%d"),m_BEGMaxStep);
|
||||
csBEGMinStep.Format(_T("%d"),m_BEGMinStep);
|
||||
csBEBMaxStep.Format(_T("%d"),m_BEBMaxStep);
|
||||
csBEBMinStep.Format(_T("%d"),m_BEBMinStep);
|
||||
csABGainStep.Format(_T("%d"),m_GainStep);
|
||||
UpdateData(FALSE);
|
||||
|
||||
WritePrivateProfileString("GrayBlack", "AGMaxStep", csAMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("GrayBlack", "AGMinStep", csAMinStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "F1Offset", csAMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "F2Offset", csAMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "F3Offset", csAMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "F4Offset", csAMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "F5Offset", csAMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "F6Offset", csAMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("GrayCorrection", "F1Offset", csAMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("GrayCorrection", "F2Offset", csAMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("GrayCorrection", "F3Offset", csAMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("GrayCorrection", "F4Offset", csAMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("GrayCorrection", "F5Offset", csAMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("GrayCorrection", "F6Offset", csAMaxStep, INI_FILE_NAME);
|
||||
|
||||
WritePrivateProfileString("GrayBlack", "BGMaxStep", csBMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("GrayBlack", "BGMinStep", csBMinStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "B1Offset", csBMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "B2Offset", csBMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "B3Offset", csBMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "B4Offset", csBMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "B5Offset", csBMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "B6Offset", csBMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("GrayCorrection", "B1Offset", csBMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("GrayCorrection", "B2Offset", csBMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("GrayCorrection", "B3Offset", csBMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("GrayCorrection", "B4Offset", csBMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("GrayCorrection", "B5Offset", csBMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("GrayCorrection", "B6Offset", csBMaxStep, INI_FILE_NAME);
|
||||
|
||||
WritePrivateProfileString("ColorWhite", "ACRMaxStep", csAERMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorWhite", "ACRMinStep", csAERMinStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "FRExposure", csAERMaxStep, INI_FILE_NAME);
|
||||
|
||||
WritePrivateProfileString("ColorWhite", "ACGMaxStep", csAEGMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorWhite", "ACGMinStep", csAEGMinStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "FGExposure", csAEGMaxStep, INI_FILE_NAME);
|
||||
|
||||
WritePrivateProfileString("ColorWhite", "ACBMaxStep", csAEBMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorWhite", "ACBMinStep", csAEBMinStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "FBExposure", csAEBMaxStep, INI_FILE_NAME);
|
||||
|
||||
WritePrivateProfileString("ColorWhite", "BCRMaxStep", csBERMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorWhite", "BCRMinStep", csBERMinStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "BRExposure", csBERMaxStep, INI_FILE_NAME);
|
||||
|
||||
WritePrivateProfileString("ColorWhite", "BCGMaxStep", csBEGMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorWhite", "BCGMinStep", csBEGMinStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "BGExposure", csBEGMaxStep, INI_FILE_NAME);
|
||||
|
||||
WritePrivateProfileString("ColorWhite", "BCBMaxStep", csBEBMaxStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorWhite", "BCBMinStep", csBEBMinStep, INI_FILE_NAME);
|
||||
WritePrivateProfileString("ColorCorrection", "BBExposure", csBEBMaxStep, INI_FILE_NAME);
|
||||
|
||||
WritePrivateProfileString("GainStep", "ABGainStep", csABGainStep, INI_FILE_NAME);
|
||||
|
||||
MessageBox(_T("配置完成"));
|
||||
}
|
||||
|
||||
void CConfigParam::OnOK()
|
||||
{
|
||||
// TODO: 在此添加专用代码和/或调用基类
|
||||
|
||||
CDialog::OnOK();
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
#pragma once
|
||||
#include "Config.h"
|
||||
|
||||
// CConfigParam 对话框
|
||||
|
||||
class CConfigParam : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CConfigParam)
|
||||
|
||||
public:
|
||||
CConfigParam(CWnd* pParent = NULL); // 标准构造函数
|
||||
virtual ~CConfigParam();
|
||||
|
||||
// 对话框数据
|
||||
enum { IDD = IDD_DIALOG_CONFIGPARAM };
|
||||
|
||||
void LoadConfig();
|
||||
void SaveParam();
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
virtual BOOL OnInitDialog();
|
||||
UINT m_AMaxStep;
|
||||
UINT m_AMinStep;
|
||||
UINT m_BMaxStep;
|
||||
UINT m_BMinStep;
|
||||
UINT m_AERMaxStep;
|
||||
UINT m_AERMinStep;
|
||||
UINT m_AEGMaxStep;
|
||||
UINT m_AEGMinStep;
|
||||
UINT m_AEBMaxStep;
|
||||
UINT m_AEBMinStep;
|
||||
UINT m_BERMaxStep;
|
||||
UINT m_BERMinStep;
|
||||
UINT m_BEGMaxStep;
|
||||
UINT m_BEGMinStep;
|
||||
UINT m_BEBMaxStep;
|
||||
UINT m_BEBMinStep;
|
||||
UINT m_GainStep;
|
||||
afx_msg void OnBtnSaveCFG();
|
||||
virtual void OnOK();
|
||||
};
|
Binary file not shown.
|
@ -104,8 +104,8 @@ void CHuaGoCorrectApp::CreateScanFile()
|
|||
char cTime[11];
|
||||
CTime currTime = CTime::GetCurrentTime();
|
||||
_snprintf(cTime, 11, "%04d-%02d-%02d", currTime.GetYear(), currTime.GetMonth(), currTime.GetDay());
|
||||
csDate.Format("%s",cTime);
|
||||
|
||||
//csDate.Format(L"%s",cTime);
|
||||
csDate = cTime;
|
||||
path = ".\\ScanPicture\\";
|
||||
|
||||
if (!PathIsDirectory(path))
|
||||
|
|
Binary file not shown.
|
@ -29,7 +29,7 @@
|
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<UseOfMfc>Dynamic</UseOfMfc>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<VCToolsVersion>
|
||||
|
@ -47,7 +47,7 @@
|
|||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<UseOfMfc>Dynamic</UseOfMfc>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
|
@ -215,8 +215,6 @@ opencv_imgproc2410.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|||
<ClInclude Include="A4.h" />
|
||||
<ClInclude Include="BlockingQueue.h" />
|
||||
<ClInclude Include="commondef.h" />
|
||||
<ClInclude Include="Config.h" />
|
||||
<ClInclude Include="ConfigParam.h" />
|
||||
<ClInclude Include="CVISON.h" />
|
||||
<ClInclude Include="DefHSCommon.h" />
|
||||
<ClInclude Include="DefHSStructure.h" />
|
||||
|
@ -246,8 +244,6 @@ opencv_imgproc2410.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|||
<ItemGroup>
|
||||
<ClCompile Include="A3.cpp" />
|
||||
<ClCompile Include="A4.cpp" />
|
||||
<ClCompile Include="Config.cpp" />
|
||||
<ClCompile Include="ConfigParam.cpp" />
|
||||
<ClCompile Include="CVISON.cpp" />
|
||||
<ClCompile Include="gscan3399.cpp" />
|
||||
<ClCompile Include="gscn_drv.cpp" />
|
||||
|
|
|
@ -48,9 +48,6 @@
|
|||
<ClInclude Include="Resource.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Config.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="filetools.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
|
@ -96,9 +93,6 @@
|
|||
<ClInclude Include="A4.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ConfigParam.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="CVISON.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
|
@ -137,9 +131,6 @@
|
|||
<ClCompile Include="stdafx.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Config.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="imageprocess.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
|
@ -170,9 +161,6 @@
|
|||
<ClCompile Include="A4.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ConfigParam.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="CVISON.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
|
|
|
@ -100,7 +100,7 @@ BEGIN_MESSAGE_MAP(CHuaGoCorrectDlg, CDialogEx)
|
|||
ON_BN_CLICKED(IDC_BTN_FLAT, &CHuaGoCorrectDlg::OnBnClickedBtnFlat)
|
||||
ON_CBN_SELCHANGE(IDC_dpi_comboBox, &CHuaGoCorrectDlg::OnCbnSelChangeDpi)
|
||||
ON_CBN_SELCHANGE(IDC_color_comboBox, &CHuaGoCorrectDlg::OnCbnSelChangeColor)
|
||||
//ON_WM_TIMER()
|
||||
ON_WM_TIMER()
|
||||
ON_BN_CLICKED(IDC_BTN_SELECTFILE, &CHuaGoCorrectDlg::OnBnClickedBtnSelectfile)
|
||||
ON_BN_CLICKED(IDC_BTN_UPDATE, &CHuaGoCorrectDlg::OnBnClickedBtnUpdate)
|
||||
ON_BN_CLICKED(IDC_BTN_REFRESH, &CHuaGoCorrectDlg::OnBnClickedBtnRefresh)
|
||||
|
@ -157,7 +157,7 @@ BOOL CHuaGoCorrectDlg::OnInitDialog()
|
|||
else
|
||||
{
|
||||
CString str;
|
||||
str.Format("%d", num);
|
||||
str.Format(L"%d", num);
|
||||
SetDlgItemText(IDC_STATIC_NUM, str);
|
||||
}
|
||||
};
|
||||
|
@ -165,7 +165,7 @@ BOOL CHuaGoCorrectDlg::OnInitDialog()
|
|||
|
||||
m_tab.GetClientRect(&tabRect); // 获取标签控件客户区Rect
|
||||
// 调整tabRect,使其覆盖范围适合放置标签页
|
||||
tabRect.left += 1;
|
||||
tabRect.left += 10;
|
||||
tabRect.right -= 1;
|
||||
tabRect.top += 35;
|
||||
tabRect.bottom -= 1;
|
||||
|
@ -185,7 +185,6 @@ BOOL CHuaGoCorrectDlg::OnInitDialog()
|
|||
m_ComboxColor.InsertString(0, _T("gray"));
|
||||
m_ComboxColor.InsertString(1, _T("color"));
|
||||
m_ComboxColor.SetCurSel(1);
|
||||
//m_drv->set_decompress_pix_type(TWPT_RGB);
|
||||
|
||||
m_A4Scanner.SetCheck(0);
|
||||
n_hour = 0;
|
||||
|
@ -239,7 +238,7 @@ bool CHuaGoCorrectDlg::RefreshUSBList()
|
|||
while (info != ret.end())
|
||||
{
|
||||
CString strinfo;
|
||||
strinfo.Format("vid0x%x pid0X%x", info->vid, info->pid);
|
||||
strinfo.Format(L"vid0x%x pid0X%x", info->vid, info->pid);
|
||||
m_Usbs.InsertString(i, strinfo);
|
||||
info++;
|
||||
i++;
|
||||
|
@ -311,9 +310,9 @@ void CHuaGoCorrectDlg::RefreshTabChange()
|
|||
|
||||
// 获取标签控件客户区Rect,并对其调整,以适合放置标签页
|
||||
m_tab.GetClientRect(&tabRect);
|
||||
tabRect.left += 10;
|
||||
tabRect.right -= 1;
|
||||
tabRect.top += 35;
|
||||
tabRect.left += 15;
|
||||
tabRect.right += 20;
|
||||
tabRect.top += 20;
|
||||
tabRect.bottom -= 1;
|
||||
|
||||
switch (m_tab.GetCurSel())
|
||||
|
@ -343,7 +342,7 @@ void CHuaGoCorrectDlg::Scan()
|
|||
HGScanConfig config = { 0 };
|
||||
config.g200params.dpi = 1;//only support 200DPI
|
||||
config.g200params.paper = 0;
|
||||
config.g200params.pc_correct = !((CButton*)GetDlgItem(IDC_CKBORGINIMG))->GetCheck();
|
||||
config.g200params.pc_correct = ((CButton*)GetDlgItem(IDC_CKBORGINIMG))->GetCheck();
|
||||
config.g200params.color = m_iColorIndex == 1 ? 1 : 0;
|
||||
config.g200params.double_feed_enbale = TRUE;
|
||||
config.g200params.screw_detect_enable = FALSE;
|
||||
|
@ -354,15 +353,15 @@ void CHuaGoCorrectDlg::Scan()
|
|||
m_drv->Scanner_StartScan(-1);
|
||||
m_drv->run();
|
||||
|
||||
//if (b_suspend)
|
||||
// KillTimer(N_TIMER_SEC);
|
||||
if (b_suspend)
|
||||
KillTimer(N_TIMER_SEC);
|
||||
|
||||
//b_suspend = FALSE;
|
||||
//n_hour = 0;
|
||||
//n_minute = 0;
|
||||
//n_second = 0;
|
||||
//SetTimer(N_TIMER_SEC, N_TIME_SEC, NULL);
|
||||
//SetTimer(N_TIMER_SHOW, N_TIME_SHOW, NULL);
|
||||
b_suspend = FALSE;
|
||||
n_hour = 0;
|
||||
n_minute = 0;
|
||||
n_second = 0;
|
||||
SetTimer(N_TIMER_SEC, N_TIME_SEC, NULL);
|
||||
SetTimer(N_TIMER_SHOW, N_TIME_SHOW, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
@ -371,7 +370,7 @@ void CHuaGoCorrectDlg::OnBnClickedCheckparamset()
|
|||
// TODO: 在此添加控件通知处理程序代码
|
||||
if (!m_drv->IsConnected())
|
||||
{
|
||||
MessageBox("扫描仪未连接!");
|
||||
MessageBox(TEXT("扫描仪未连接!"));
|
||||
return;
|
||||
}
|
||||
m_A4Dlg.SendCorrectParam();
|
||||
|
@ -383,7 +382,7 @@ void CHuaGoCorrectDlg::OnBnClickedCheckparamread()
|
|||
// TODO: 在此添加控件通知处理程序代码
|
||||
if (!m_drv->IsConnected())
|
||||
{
|
||||
MessageBox("扫描仪未连接!");
|
||||
MessageBox(TEXT("扫描仪未连接!"));
|
||||
return;
|
||||
}
|
||||
m_tab.SetCurSel(0);
|
||||
|
@ -397,14 +396,29 @@ void CHuaGoCorrectDlg::OnBnClickedBtnFlat()
|
|||
m_iflatIndex = -2;
|
||||
if (!m_drv->IsConnected())
|
||||
{
|
||||
MessageBox("扫描仪未连接!");
|
||||
MessageBox(TEXT("扫描仪未连接!"));
|
||||
return;
|
||||
}
|
||||
if (GetDlgItem(IDC_CKBCORRECTMODE)->IsWindowVisible())
|
||||
{
|
||||
m_tab.SetCurSel(2);
|
||||
RefreshTabChange();
|
||||
((CEdit*)(m_A3dlg.GetDlgItem(IDC_LSTFLATINFO)))->Clear();
|
||||
auto flatcall = [&](string info) {
|
||||
USES_CONVERSION;
|
||||
std::string c_str = StringToUtf(info);
|
||||
CString pWideChar = A2T(c_str.c_str());
|
||||
CString oldinfo;
|
||||
((CEdit*)(m_A3dlg.GetDlgItem(IDC_LSTFLATINFO)))->GetWindowText(oldinfo);
|
||||
oldinfo += pWideChar;
|
||||
((CEdit*)(m_A3dlg.GetDlgItem(IDC_LSTFLATINFO)))->SetWindowText(oldinfo);
|
||||
auto edit = ((CEdit*)(m_A3dlg.GetDlgItem(IDC_LSTFLATINFO)));
|
||||
edit->LineScroll(edit->GetLineCount());
|
||||
};
|
||||
m_drv->SetFlatCallback(flatcall);
|
||||
m_drv->StartFlat(((CButton*)GetDlgItem(IDC_CKBCORRECTMODE))->GetCheck());
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
m_drv->StartFlat(true);//彩色
|
||||
}
|
||||
|
@ -413,26 +427,26 @@ void CHuaGoCorrectDlg::WriteLog(CString msg)
|
|||
{
|
||||
if (!msg.IsEmpty())
|
||||
{
|
||||
FILE* pFile = fopen(".//log//CorrectLog.log", "a+");
|
||||
if (pFile != NULL)
|
||||
{
|
||||
char cTime[32];
|
||||
CTime currTime = CTime::GetCurrentTime();
|
||||
_snprintf(cTime, 30, "[%04d-%02d-%02d %02d:%02d:%02d]",
|
||||
currTime.GetYear(), currTime.GetMonth(), currTime.GetDay(),
|
||||
currTime.GetHour(), currTime.GetMinute(), currTime.GetSecond());
|
||||
fwrite(cTime, 1, strlen(cTime), pFile);
|
||||
fwrite(msg, 1, strlen(msg), pFile);
|
||||
fwrite("\n", 1, 1, pFile);
|
||||
fclose(pFile);
|
||||
}
|
||||
//FILE* pFile = fopen(".//log//CorrectLog.log", "a+");
|
||||
//if (pFile != NULL)
|
||||
//{
|
||||
// char cTime[32];
|
||||
// CTime currTime = CTime::GetCurrentTime();
|
||||
// _snprintf(cTime, 30, "[%04d-%02d-%02d %02d:%02d:%02d]",
|
||||
// currTime.GetYear(), currTime.GetMonth(), currTime.GetDay(),
|
||||
// currTime.GetHour(), currTime.GetMinute(), currTime.GetSecond());
|
||||
// fwrite(cTime, 1, strlen(cTime), pFile);
|
||||
// fwrite(msg, 1, strlen(msg.GetBuffer()), pFile);
|
||||
// fwrite("\n", 1, 1, pFile);
|
||||
// fclose(pFile);
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
void CHuaGoCorrectDlg::OnCancel()
|
||||
{
|
||||
// TODO: 在此添加专用代码和/或调用基类
|
||||
if (IDOK != AfxMessageBox("确定要退出服务器吗?", MB_ICONQUESTION | MB_OKCANCEL))
|
||||
if (IDOK != AfxMessageBox(L"确定要退出此程序吗?", MB_ICONQUESTION | MB_OKCANCEL))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -469,51 +483,51 @@ void CHuaGoCorrectDlg::OnBnClickedStopScan()
|
|||
}
|
||||
|
||||
|
||||
//void CHuaGoCorrectDlg::OnTimer(UINT_PTR nIDEvent)
|
||||
//{
|
||||
// // TODO: 在此添加消息处理程序代码和/或调用默认值
|
||||
// switch (nIDEvent)
|
||||
// {
|
||||
// case 1:
|
||||
// {
|
||||
// if (b_review == FALSE)
|
||||
// {
|
||||
// n_second++;
|
||||
// if (n_second == 60)
|
||||
// {
|
||||
// n_second = 0;
|
||||
// n_minute++;
|
||||
// }
|
||||
// if (n_minute == 60)
|
||||
// {
|
||||
// n_minute = 0;
|
||||
// n_hour++;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// case 2:
|
||||
// {
|
||||
// if (b_review == FALSE)
|
||||
// {
|
||||
// int h1, h2, m1, m2, s1, s2;
|
||||
// h1 = n_hour / 10;
|
||||
// h2 = n_hour % 10;
|
||||
// m1 = n_minute / 10;
|
||||
// m2 = n_minute % 10;
|
||||
// s1 = n_second / 10;
|
||||
// s2 = n_second % 10;
|
||||
// s_hour.Format("%d%d", h1, h2);
|
||||
// s_minute.Format("%d%d", m1, m2);
|
||||
// s_second.Format("%d%d", s1, s2);
|
||||
// }
|
||||
// UpdateData(FALSE);
|
||||
// }
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
//
|
||||
// CDialogEx::OnTimer(nIDEvent);
|
||||
//}
|
||||
void CHuaGoCorrectDlg::OnTimer(UINT_PTR nIDEvent)
|
||||
{
|
||||
// TODO: 在此添加消息处理程序代码和/或调用默认值
|
||||
switch (nIDEvent)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
if (b_review == FALSE)
|
||||
{
|
||||
n_second++;
|
||||
if (n_second == 60)
|
||||
{
|
||||
n_second = 0;
|
||||
n_minute++;
|
||||
}
|
||||
if (n_minute == 60)
|
||||
{
|
||||
n_minute = 0;
|
||||
n_hour++;
|
||||
}
|
||||
}
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if (b_review == FALSE)
|
||||
{
|
||||
int h1, h2, m1, m2, s1, s2;
|
||||
h1 = n_hour / 10;
|
||||
h2 = n_hour % 10;
|
||||
m1 = n_minute / 10;
|
||||
m2 = n_minute % 10;
|
||||
s1 = n_second / 10;
|
||||
s2 = n_second % 10;
|
||||
s_hour.Format(L"%d%d", h1, h2);
|
||||
s_minute.Format(L"%d%d", m1, m2);
|
||||
s_second.Format(L"%d%d", s1, s2);
|
||||
}
|
||||
UpdateData(FALSE);
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
CDialogEx::OnTimer(nIDEvent);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 选择更新文件
|
||||
|
@ -530,8 +544,10 @@ void CHuaGoCorrectDlg::OnBnClickedBtnSelectfile()
|
|||
NULL);
|
||||
if (IDOK == ofd.DoModal())
|
||||
{
|
||||
USES_CONVERSION;
|
||||
|
||||
updateFilePath = ofd.GetPathName();
|
||||
SetDlgItemText(IDC_LB_FILEPATH, updateFilePath.c_str());
|
||||
SetDlgItemText(IDC_LB_FILEPATH, updateFilePath);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -584,7 +600,8 @@ void CHuaGoCorrectDlg::OnCbnSelchangeCmbUsbs()
|
|||
GetDlgItem(IDC_CKBUVMODEL)->EnableWindow(i->vid == 0x3072 && i->pid == 0x0300);
|
||||
}
|
||||
m_drv->open(i->vid, i->pid, 0);
|
||||
std::string savepath(GetMainApp()->path.GetBuffer());
|
||||
USES_CONVERSION;
|
||||
std::string savepath(W2A(GetMainApp()->path.GetBuffer()));
|
||||
m_drv->SetPath(savepath);
|
||||
if (i->pid & 0x39)
|
||||
{
|
||||
|
@ -608,7 +625,7 @@ void CHuaGoCorrectDlg::OnCbnSelchangeCmbUsbs()
|
|||
{
|
||||
MessageBox(TEXT("open current select usb scanner failed"), TEXT("Notify"), MB_OK | MB_ICONINFORMATION);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -624,11 +641,11 @@ void CHuaGoCorrectDlg::OnBnClickedBtnstart()
|
|||
|
||||
if (!m_drv->IsConnected())
|
||||
{
|
||||
MessageBox("扫描仪未连接!");
|
||||
MessageBox(L"扫描仪未连接!");
|
||||
return;
|
||||
}
|
||||
m_iColorIndex = m_ComboxColor.GetCurSel();
|
||||
GetDlgItem(IDC_STATIC_NUM)->SetWindowText("0");
|
||||
GetDlgItem(IDC_STATIC_NUM)->SetWindowText(L"0");
|
||||
m_drv->DevStateChange();
|
||||
m_drv->reset();
|
||||
Scan();
|
||||
|
@ -656,9 +673,9 @@ void CHuaGoCorrectDlg::OnBnClickedBtnstop()
|
|||
m2 = n_minute % 10;
|
||||
s1 = n_second / 10;
|
||||
s2 = n_second % 10;
|
||||
s_hour.Format("%d%d", h1, h2);
|
||||
s_minute.Format("%d%d", m1, m2);
|
||||
s_second.Format("%d%d", s1, s2);
|
||||
s_hour.Format(L"%d%d", h1, h2);
|
||||
s_minute.Format(L"%d%d", m1, m2);
|
||||
s_second.Format(L"%d%d", s1, s2);
|
||||
UpdateData(FALSE);
|
||||
}
|
||||
m_drv->Stop_scan();
|
||||
|
@ -667,8 +684,10 @@ void CHuaGoCorrectDlg::OnBnClickedBtnstop()
|
|||
void CHuaGoCorrectDlg::updatefunc()
|
||||
{
|
||||
CProgressCtrl* prb = (CProgressCtrl*)GetDlgItem(IDC_PRB_UPDATE);
|
||||
int ret= m_drv->Updata(updateFilePath, [this,&prb](long pos, long len) {
|
||||
prb->SetRange32(0,len);
|
||||
USES_CONVERSION;
|
||||
std::string updatefile(W2A(updateFilePath));
|
||||
int ret = m_drv->Updata(updatefile, [this, &prb](long pos, long len) {
|
||||
prb->SetRange32(0, len);
|
||||
prb->SetPos(pos);
|
||||
});
|
||||
if (ret == false)
|
||||
|
@ -679,60 +698,4 @@ void CHuaGoCorrectDlg::updatefunc()
|
|||
{
|
||||
MessageBox(TEXT("更新完成!"), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
|
||||
}
|
||||
//std::ifstream updatefile;
|
||||
//updatefile.open(updateFilePath, std::ios_base::in | std::ios_base::binary);
|
||||
//if (!updatefile.is_open())
|
||||
//{
|
||||
// MessageBox(TEXT("更新文件打开失败!"), TEXT("提示"), MB_OK);
|
||||
//}
|
||||
//CProgressCtrl* prb = (CProgressCtrl*)GetDlgItem(IDC_PRB_UPDATE);
|
||||
//updatefile.seekg(0, std::ios::end);
|
||||
//size_t length = updatefile.tellg();
|
||||
//prb->SetRange32(0, length);
|
||||
//updatefile.seekg(0, std::ios::beg);
|
||||
//USBCB pre_update = { PRE_UPGRADE,0,length };
|
||||
//m_drv->m_usb->write_bulk(&pre_update, sizeof(pre_update));
|
||||
//size_t nreaded = 0;
|
||||
//size_t nleft = length;
|
||||
//int buffersize = 1024 * 1024;
|
||||
//if (length <= buffersize)//小于1MB
|
||||
//{
|
||||
// char* uotstream = new char[length];
|
||||
// USBCB update = { START_UPGRADE,0,length };
|
||||
// m_drv->m_usb->write_bulk(&update, sizeof(update));
|
||||
// updatefile.read(uotstream, length);
|
||||
// m_drv->m_usb->write_bulk(uotstream, length);
|
||||
// m_drv->m_usb->read_bulk(&update, sizeof(update));
|
||||
// if (update.u32_Count != length)
|
||||
// MessageBox(TEXT("下载失败!"), TEXT("警告!"), MB_OK);
|
||||
// delete[] uotstream;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// while (true)
|
||||
// {
|
||||
// int ntotransfer;
|
||||
// if (nleft < buffersize)
|
||||
// ntotransfer = nleft;
|
||||
// else
|
||||
// ntotransfer = buffersize;
|
||||
// USBCB update = { START_UPGRADE,0,ntotransfer };
|
||||
// m_drv->m_usb->write_bulk(&update, sizeof(update));
|
||||
// std::vector<char> data;
|
||||
// data.resize(ntotransfer);
|
||||
// updatefile.read(data.data(), ntotransfer);
|
||||
// m_drv->m_usb->write_bulk(data.data(), ntotransfer);
|
||||
// m_drv->m_usb->read_bulk(&update, sizeof(update));
|
||||
// nreaded += ntotransfer;
|
||||
// nleft -= ntotransfer;
|
||||
// prb->SetPos(nreaded);
|
||||
// if (nreaded >= length)
|
||||
// break;
|
||||
// this_thread::sleep_for(std::chrono::milliseconds(10));
|
||||
// }
|
||||
//}
|
||||
|
||||
//USBCB updatefinished = { UPDATE_FINISHED,0,0 };
|
||||
//m_drv->m_usb->write_bulk(&updatefinished, sizeof(updatefinished));
|
||||
//MessageBox(TEXT("固件下载完成!"), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
#include "twain.h"
|
||||
#include "A3.h"
|
||||
#include "A4.h"
|
||||
#include "ConfigParam.h"
|
||||
//#include "ConfigParam.h"
|
||||
#include "afxwin.h"
|
||||
#include "CVISON.h"
|
||||
#include "scn_usb.h"
|
||||
|
@ -63,7 +63,6 @@ public:
|
|||
CA4 m_A4Dlg;
|
||||
CVISON m_VisonDlg;
|
||||
CA3 m_A3dlg;
|
||||
CConfigParam m_ConfigParam;
|
||||
std::shared_ptr<IScanner> m_drv;
|
||||
CRect tabRect; // 标签控件客户区的位置和大小
|
||||
void Scan();
|
||||
|
@ -104,7 +103,7 @@ public:
|
|||
CString s_minute;
|
||||
CString s_second;
|
||||
afx_msg void OnBnClickedStopScan();
|
||||
//afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||
afx_msg void OnBnClickedBtnSelectfile();
|
||||
afx_msg void OnBnClickedBtnUpdate();
|
||||
afx_msg void OnBnClickedBtnRefresh();
|
||||
|
@ -112,7 +111,7 @@ public:
|
|||
afx_msg void OnBnClickedBtnstart();
|
||||
afx_msg void OnBnClickedBtnstop();
|
||||
private:
|
||||
std::string updateFilePath;
|
||||
CString updateFilePath;
|
||||
std::thread m_updateThread;
|
||||
void updatefunc();
|
||||
};
|
||||
|
|
|
@ -15,6 +15,7 @@ public:
|
|||
virtual void SetFWVersion() = 0;
|
||||
virtual std::string GetSerialNum() = 0;
|
||||
virtual void SetSerialNum(std::string serial) = 0;
|
||||
virtual std::string GetKernelVersion() =0;
|
||||
virtual void SetRatio(int tyepe, int ration) = 0;
|
||||
virtual void GetRatio(int type, int& ratio) = 0;
|
||||
virtual void Reboot() = 0;
|
||||
|
@ -44,8 +45,12 @@ public:
|
|||
virtual void SetSptime(int type, int time) = 0;
|
||||
virtual void GetSleepTime(int& sleeptime) = 0;
|
||||
virtual void SetSleepTime(int sleeptime) = 0;
|
||||
virtual bool Updata(std::string filename, std::function<void(long, long)> func) = 0;
|
||||
|
||||
virtual void GetFlatMaxBright(bool iscolor, unsigned int& val) = 0;
|
||||
virtual void SetFlatMaxBright(bool iscolor, unsigned int val) = 0;
|
||||
virtual bool Updata(std::string filename, std::function<void(long, long)> func) = 0;
|
||||
virtual void SetFlatCallback(std::function<void(std::string)> func) = 0;
|
||||
virtual void GetSpeedMode(int& speedmode,bool get) = 0 ;
|
||||
void SetPath(std::string csFilePath)
|
||||
{
|
||||
csPath = csFilePath;
|
||||
|
|
|
@ -49,7 +49,7 @@ cv::Mat JpegBuffer::getMat( int pixType)
|
|||
//XdPrint("buffer size is :%d ==========================\n",getSize());
|
||||
cv::Mat image = jl.decode(m_buffer, pixType);//oixtype
|
||||
|
||||
XdPrint("Decode Image time epleased :%lf ==========================\n",sw.elapsed_ms());
|
||||
XdPrint(L"Decode Image time epleased :%lf ==========================\n",sw.elapsed_ms());
|
||||
|
||||
//XdPrint("==image col is :%d, image row is :%d, image size is :%d===\n",image.cols, image.rows, image.size);
|
||||
//FileTools::write_log("D:/1.txt",)
|
||||
|
|
|
@ -313,34 +313,34 @@ TCHAR* GetCurExeFilePath(HINSTANCE hInstance, TCHAR* lpPath, DWORD dwSize)
|
|||
|
||||
TCHAR* GetExistFileDir(TCHAR* p_file_path)
|
||||
{
|
||||
WIN32_FIND_DATA wfd = {0};
|
||||
LPSTR p_test = NULL;
|
||||
HANDLE hFindFile = INVALID_HANDLE_VALUE;
|
||||
//WIN32_FIND_DATA wfd = {0};
|
||||
//LPSTR p_test = NULL;
|
||||
//HANDLE hFindFile = INVALID_HANDLE_VALUE;
|
||||
|
||||
if ( p_file_path == NULL )
|
||||
//if ( p_file_path == NULL )
|
||||
// return NULL;
|
||||
//
|
||||
//hFindFile = FindFirstFile(p_file_path, &wfd);
|
||||
//if (hFindFile != NULL)
|
||||
//{
|
||||
// FindClose(hFindFile);
|
||||
// hFindFile= INVALID_HANDLE_VALUE;
|
||||
//}
|
||||
//if ( wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
|
||||
//{
|
||||
// return p_file_path;
|
||||
//}
|
||||
//
|
||||
//p_test = _tcsrchr(p_file_path, '\\');
|
||||
//if ( p_test != NULL )
|
||||
//{
|
||||
// *p_test = 0;
|
||||
// return GetExistFileDir(p_file_path);
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
return NULL;
|
||||
|
||||
hFindFile = FindFirstFile(p_file_path, &wfd);
|
||||
if (hFindFile != NULL)
|
||||
{
|
||||
FindClose(hFindFile);
|
||||
hFindFile= INVALID_HANDLE_VALUE;
|
||||
}
|
||||
if ( wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
|
||||
{
|
||||
return p_file_path;
|
||||
}
|
||||
|
||||
p_test = _tcsrchr(p_file_path, '\\');
|
||||
if ( p_test != NULL )
|
||||
{
|
||||
*p_test = 0;
|
||||
return GetExistFileDir(p_file_path);
|
||||
}
|
||||
else
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
//}
|
||||
}
|
||||
|
||||
DWORD CALLBACK BrowserCallbackProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
|
@ -375,10 +375,10 @@ BOOL CheckAndCreateFileDir(TCHAR* p_file_path, BOOL flg)
|
|||
return FALSE;
|
||||
}
|
||||
}
|
||||
if ( _access(p_file_path, 0) == 0)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
//if ( _access(p_file_path, 0) == 0)
|
||||
//{
|
||||
// return TRUE;
|
||||
//}
|
||||
|
||||
if ( !flg )
|
||||
return FALSE;
|
||||
|
@ -412,67 +412,67 @@ BOOL CheckAndCreateFileDir(TCHAR* p_file_path, BOOL flg)
|
|||
|
||||
BOOL CheckDiskFreeBitM(HWND hWin, TCHAR *p_disk_name, DWORD dw_min_bit_m)
|
||||
{
|
||||
TCHAR *p = NULL;
|
||||
TCHAR sz_root_path_name[MAX_PATH + 1] = {0};
|
||||
INT len = 0;
|
||||
|
||||
DWORD dwTotalDiskSpace = 0;
|
||||
DWORD dwFreeDiskSpace = 0;
|
||||
DWORD dwUsedDiskSpace = 0;
|
||||
//TCHAR *p = NULL;
|
||||
//TCHAR sz_root_path_name[MAX_PATH + 1] = {0};
|
||||
//INT len = 0;
|
||||
//
|
||||
//DWORD dwTotalDiskSpace = 0;
|
||||
//DWORD dwFreeDiskSpace = 0;
|
||||
//DWORD dwUsedDiskSpace = 0;
|
||||
|
||||
ULARGE_INTEGER uiFreeBytesAvailableToCaller;
|
||||
ULARGE_INTEGER uiTotalNumberOfBytes;
|
||||
ULARGE_INTEGER uiTotalNumberOfFreeBytes;
|
||||
//ULARGE_INTEGER uiFreeBytesAvailableToCaller;
|
||||
//ULARGE_INTEGER uiTotalNumberOfBytes;
|
||||
//ULARGE_INTEGER uiTotalNumberOfFreeBytes;
|
||||
|
||||
UINT un_ret = 0;
|
||||
if ( p_disk_name == NULL )
|
||||
return FALSE;
|
||||
//UINT un_ret = 0;
|
||||
//if ( p_disk_name == NULL )
|
||||
// return FALSE;
|
||||
|
||||
len = _tcslen(p_disk_name);
|
||||
if ( len > MAX_PATH )
|
||||
{
|
||||
len = MAX_PATH;
|
||||
}
|
||||
//len = _tcslen(p_disk_name);
|
||||
//if ( len > MAX_PATH )
|
||||
//{
|
||||
// len = MAX_PATH;
|
||||
//}
|
||||
|
||||
memcpy(sz_root_path_name, p_disk_name, (size_t)len);
|
||||
//memcpy(sz_root_path_name, p_disk_name, (size_t)len);
|
||||
|
||||
p = _tcsstr(sz_root_path_name, "\\");
|
||||
if ( p == NULL )
|
||||
{
|
||||
if ( len == 2 )
|
||||
{
|
||||
if ( !((sz_root_path_name[0] >= 'A' && sz_root_path_name[0] <= 'Z' || sz_root_path_name[0] >= 'a' && sz_root_path_name[0] <= 'z') && sz_root_path_name[1]== ':') )
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
if ( p != NULL )
|
||||
*(p+1) = 0;
|
||||
un_ret = GetDriveType(sz_root_path_name);
|
||||
if ( un_ret == 0 || un_ret == 1)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if(GetDiskFreeSpaceEx(sz_root_path_name, &uiFreeBytesAvailableToCaller, &uiTotalNumberOfBytes, &uiTotalNumberOfFreeBytes))
|
||||
{
|
||||
//dwTotalDiskSpace = (DWORD)(uiTotalNumberOfBytes.QuadPart / 1024 / 1024);
|
||||
dwFreeDiskSpace = (DWORD)(uiFreeBytesAvailableToCaller.QuadPart >> 20);
|
||||
//dwUsedDiskSpace = dwTotalDiskSpace - dwFreeDiskSpace;
|
||||
if ( dwFreeDiskSpace < dw_min_bit_m )
|
||||
{
|
||||
//ShowErrorStr(hWin, 1101);//1101=磁盘空间不足
|
||||
MyMessageBox( TEXT("磁盘分区可用空间不足"), 0, MB_ICONWARNING);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
MyMessageBox( TEXT("磁盘分区可用空间不足"), 0, MB_ICONWARNING);
|
||||
//GetErrorMessage(NULL, 0, FALSE);
|
||||
return FALSE;
|
||||
}
|
||||
//p = _tcsstr(sz_root_path_name, "\\");
|
||||
//if ( p == NULL )
|
||||
//{
|
||||
// if ( len == 2 )
|
||||
// {
|
||||
// if ( !((sz_root_path_name[0] >= 'A' && sz_root_path_name[0] <= 'Z' || sz_root_path_name[0] >= 'a' && sz_root_path_name[0] <= 'z') && sz_root_path_name[1]== ':') )
|
||||
// return FALSE;
|
||||
// }
|
||||
// else
|
||||
// return FALSE;
|
||||
//}
|
||||
//if ( p != NULL )
|
||||
// *(p+1) = 0;
|
||||
//un_ret = GetDriveType(sz_root_path_name);
|
||||
//if ( un_ret == 0 || un_ret == 1)
|
||||
//{
|
||||
// return FALSE;
|
||||
//}
|
||||
//
|
||||
//if(GetDiskFreeSpaceEx(sz_root_path_name, &uiFreeBytesAvailableToCaller, &uiTotalNumberOfBytes, &uiTotalNumberOfFreeBytes))
|
||||
//{
|
||||
// //dwTotalDiskSpace = (DWORD)(uiTotalNumberOfBytes.QuadPart / 1024 / 1024);
|
||||
// dwFreeDiskSpace = (DWORD)(uiFreeBytesAvailableToCaller.QuadPart >> 20);
|
||||
// //dwUsedDiskSpace = dwTotalDiskSpace - dwFreeDiskSpace;
|
||||
// if ( dwFreeDiskSpace < dw_min_bit_m )
|
||||
// {
|
||||
// //ShowErrorStr(hWin, 1101);//1101=磁盘空间不足
|
||||
// MyMessageBox( TEXT("磁盘分区可用空间不足"), 0, MB_ICONWARNING);
|
||||
// return FALSE;
|
||||
// }
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// MyMessageBox( TEXT("磁盘分区可用空间不足"), 0, MB_ICONWARNING);
|
||||
// //GetErrorMessage(NULL, 0, FALSE);
|
||||
// return FALSE;
|
||||
//}
|
||||
//ShowErrorStr(hWin, 1101);//1101=磁盘空间不足
|
||||
//return FALSE;
|
||||
return TRUE;
|
||||
|
|
Binary file not shown.
|
@ -312,7 +312,12 @@ enum Scanner_Reg_Defs
|
|||
SR_SET_COLOR_SP,
|
||||
SR_SET_SLEEPTIME,
|
||||
SR_GET_SLEEPTIME,
|
||||
SR_GET_SLEEP_STAUTUS,
|
||||
SR_GET_SLEEP_STAUTUS,
|
||||
SR_GET_IMAGEPROCESSDONE,
|
||||
SR_GET_KEEP_LAST_PAPER,
|
||||
SR_GET_PAPERON,
|
||||
SR_SET_SPEEDMODE,
|
||||
SR_GET_SPEEDMODE,
|
||||
SR_GET_CUO_ERROR = 0x50,
|
||||
SR_GET_DOU_ERROR,
|
||||
SR_GET_JAM_ERROR,
|
||||
|
@ -326,7 +331,11 @@ enum Scanner_Reg_Defs
|
|||
SR_UPDATA_RECOVERY = 0x103,
|
||||
SR_UPDATA_REBOOT = 0x104,
|
||||
SR_POWEROFF = 0x105,
|
||||
SR_REBOOT = 0x106
|
||||
SR_REBOOT = 0x106,
|
||||
SR_FLAT_CLR_MAX_BRIGHT,
|
||||
SR_FLAT_GRAY_MAX_BRIGHT,
|
||||
SR_KERNEL_VERSION_INFO_LENGTH,
|
||||
SR_GET_KERNEL_VERSION
|
||||
};
|
||||
|
||||
enum Scanner_Cmd_Defs
|
||||
|
@ -355,7 +364,8 @@ enum HGType
|
|||
FPGA,
|
||||
V4L2,
|
||||
IMG,
|
||||
STOPSCAN,
|
||||
AutoCorrect,
|
||||
STOPSCAN
|
||||
};
|
||||
|
||||
typedef union HG_ScanConfig
|
||||
|
@ -396,4 +406,5 @@ struct HGEIntInfo
|
|||
{
|
||||
HGType From;
|
||||
unsigned int Code;
|
||||
unsigned int Img_Index;
|
||||
};
|
|
@ -147,6 +147,22 @@ void gscan3399::SetSerialNum(std::string serial)
|
|||
}
|
||||
}
|
||||
|
||||
std::string gscan3399::GetKernelVersion()
|
||||
{
|
||||
std::string version = "unkown";
|
||||
if (m_usb.get() && m_usb->is_connected())
|
||||
{
|
||||
int length = scanner_read_reg(m_usb, SR_KERNEL_VERSION_INFO_LENGTH);
|
||||
version.resize(length);
|
||||
if (length > 0)
|
||||
{
|
||||
scanner_write_reg(m_usb, SR_GET_KERNEL_VERSION, length);
|
||||
read_data(&version[0], version.length(), 200);
|
||||
}
|
||||
}
|
||||
return version;
|
||||
}
|
||||
|
||||
void gscan3399::SetRatio(int tyepe, int ration)
|
||||
{
|
||||
scanner_write_reg(m_usb, tyepe == 0 ? SR_SET_H_RATIO : SR_SET_V_RATIO, ration);
|
||||
|
@ -181,7 +197,7 @@ bool gscan3399::Get_Scanner_PaperOn()
|
|||
void gscan3399::Config_Scanner(HGScanConfig config)
|
||||
{
|
||||
m_config = config;
|
||||
scanner_write_reg(m_usb, SR_CONFIG_SCAN_PARAM, config.value);
|
||||
scanner_write_reg(m_usb, SR_CONFIG_SCAN_PARAM, config.value);
|
||||
}
|
||||
void gscan3399::Scanner_StartScan(UINT16 count)
|
||||
{
|
||||
|
@ -227,6 +243,22 @@ void gscan3399::set_decompress_pix_type(int pixtype)
|
|||
|
||||
}
|
||||
|
||||
void gscan3399::GetFlatMaxBright(bool iscolor, unsigned int& val)
|
||||
{
|
||||
if (m_usb.get() && m_usb->is_connected())
|
||||
{
|
||||
val= scanner_read_reg(m_usb, iscolor?SR_FLAT_CLR_MAX_BRIGHT:SR_FLAT_GRAY_MAX_BRIGHT);
|
||||
}
|
||||
}
|
||||
|
||||
void gscan3399::SetFlatMaxBright(bool iscolor, unsigned int val)
|
||||
{
|
||||
if (m_usb.get() && m_usb->is_connected())
|
||||
{
|
||||
scanner_write_reg(m_usb, iscolor ? SR_FLAT_CLR_MAX_BRIGHT : SR_FLAT_GRAY_MAX_BRIGHT,val);
|
||||
}
|
||||
}
|
||||
|
||||
bool gscan3399::Updata(std::string filename, std::function<void(long, long)> func)
|
||||
{
|
||||
std::ifstream updatefile;
|
||||
|
@ -369,25 +401,18 @@ CaptureParams gscan3399::GetFlatData()
|
|||
void gscan3399::StartFlat(bool iscolor)
|
||||
{
|
||||
int color = iscolor ? 1 : 0;
|
||||
scanner_write_reg(m_usb, SC_AUTOCORRECT, color);
|
||||
unsigned char buff[64] = { 0 };
|
||||
StopWatch sw;
|
||||
while (sw.elapsed_s() < 120)
|
||||
if (m_usbthread.get())
|
||||
{
|
||||
auto lenght = m_usb->read_int(buff, sizeof(buff));
|
||||
if (lenght == sizeof(buff))
|
||||
b_usbthread = false;
|
||||
if (m_usbthread->joinable())
|
||||
{
|
||||
HGEIntInfo info = *(HGEIntInfo*)&buff;
|
||||
if (info.From == 5 && info.Code == 6)
|
||||
break;
|
||||
m_usbthread->join();
|
||||
m_usbthread.reset();
|
||||
}
|
||||
this_thread::sleep_for(chrono::milliseconds(30));
|
||||
DoEvents();
|
||||
}
|
||||
if(sw.elapsed_s()<120)
|
||||
MessageBox(NULL, TEXT(iscolor?"彩色自动校正已完成!":"灰度自动校正已完成!"), TEXT("提示"), MB_OK);
|
||||
else
|
||||
MessageBox(NULL, TEXT(iscolor ? "彩色自动校正失败!" : "彩色自动校正失败!"), TEXT("提示"), MB_OK);
|
||||
b_usbthread = true;
|
||||
m_usbthread.reset(new thread(&gscan3399::usb_run, this));
|
||||
scanner_write_reg(m_usb, SC_AUTOCORRECT, color);
|
||||
}
|
||||
|
||||
void gscan3399::DevStateChange()
|
||||
|
@ -404,7 +429,6 @@ void gscan3399::close()
|
|||
{
|
||||
if (m_usb.get())
|
||||
m_usb->close();
|
||||
|
||||
}
|
||||
|
||||
void gscan3399::GetExpose(int& Aside, int& Bside)
|
||||
|
@ -440,6 +464,25 @@ void gscan3399::SetSleepTime(int sleeptime)
|
|||
scanner_write_reg(m_usb, SR_SET_SLEEPTIME, sleeptime);
|
||||
}
|
||||
|
||||
void gscan3399::SetFlatCallback(std::function<void(std::string)> func)
|
||||
{
|
||||
m_flatcallback = func;
|
||||
}
|
||||
|
||||
void gscan3399::GetSpeedMode(int& speedmode, bool get)
|
||||
{
|
||||
if (m_usb.get() && m_usb->is_connected())
|
||||
{
|
||||
if (get)
|
||||
{
|
||||
speedmode= scanner_read_reg(m_usb, SR_GET_SPEEDMODE);
|
||||
}
|
||||
else
|
||||
{
|
||||
scanner_write_reg(m_usb, SR_SET_SPEEDMODE,speedmode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void gscan3399::usbcallback(bool isleft, void* usrdata)
|
||||
{
|
||||
|
@ -471,7 +514,7 @@ void gscan3399::get_imgdata()
|
|||
if (is_bulktransferring())
|
||||
{
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
||||
continue;
|
||||
return;
|
||||
}
|
||||
imgremains++;
|
||||
auto& buffi = im_data;
|
||||
|
@ -535,7 +578,9 @@ void gscan3399::imgproce(std::shared_ptr<std::vector<char>>& buffs)
|
|||
p = localtime(&timp);
|
||||
std::string filename = std::to_string(p->tm_hour) + "_" + std::to_string(p->tm_min) + "_" + std::to_string(p->tm_sec);
|
||||
static int indeximg = 0;
|
||||
std::string path = csPath+"\\"+filename + ".png";
|
||||
++indeximg;
|
||||
auto str = indeximg % 2 == 1 ? "F" : "B";
|
||||
std::string path = csPath+"\\"+filename + str+".png";
|
||||
if (!mat.empty()) {
|
||||
cv::imwrite(path, mat);
|
||||
m_imagespath.Put(path);
|
||||
|
@ -559,7 +604,7 @@ void gscan3399::usb_run()
|
|||
}
|
||||
memset(buff, 0, sizeof(buff));
|
||||
auto length = m_usb->read_int(buff, sizeof(buff));
|
||||
if (((length) == sizeof(buff)) || is_bulktransferring())
|
||||
if (((length) == sizeof(buff)))
|
||||
{
|
||||
HGEIntInfo info = *(HGEIntInfo*)&buff;
|
||||
switch (info.From)
|
||||
|
@ -568,6 +613,19 @@ void gscan3399::usb_run()
|
|||
if (is_runing())
|
||||
get_imgdata();
|
||||
break;
|
||||
case AutoCorrect:
|
||||
if (info.Img_Index != 0)
|
||||
{
|
||||
std::string s_info;
|
||||
s_info.resize(info.Img_Index);
|
||||
m_usb->read_bulk(&s_info[0], s_info.length());
|
||||
//FileTools::write_log("D:\\info.txt", s_info);
|
||||
if (m_flatcallback)
|
||||
m_flatcallback(s_info);
|
||||
}
|
||||
if (info.Code == 4)//flat done
|
||||
return;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ public:
|
|||
virtual void SetFWVersion();
|
||||
virtual std::string GetSerialNum();
|
||||
virtual void SetSerialNum(std::string serial);
|
||||
virtual std::string GetKernelVersion();
|
||||
virtual void SetRatio(int tyepe, int ration);
|
||||
virtual void GetRatio(int type, int& ratio);
|
||||
virtual void Reboot();
|
||||
|
@ -31,7 +32,8 @@ public:
|
|||
virtual void run();
|
||||
virtual int get_decompress_pix_type();
|
||||
virtual void set_decompress_pix_type(int pixtype);
|
||||
|
||||
virtual void GetFlatMaxBright(bool iscolor, unsigned int& val);
|
||||
virtual void SetFlatMaxBright(bool iscolor, unsigned int val);
|
||||
virtual bool Updata(std::string filename, std::function<void(long, long)> func);
|
||||
|
||||
virtual void SetIsDuplex(bool value);
|
||||
|
@ -64,6 +66,11 @@ public:
|
|||
|
||||
virtual void GetSleepTime(int& sleeptime);
|
||||
virtual void SetSleepTime(int sleeptime);
|
||||
|
||||
virtual void SetFlatCallback(std::function<void(std::string)> func);
|
||||
virtual void GetSpeedMode(int& speedmode,bool getorset);
|
||||
|
||||
|
||||
private:
|
||||
static void usbcallback(bool isleft, void* usrdata);
|
||||
int read_data(void* data, int length, int timeout);
|
||||
|
@ -88,4 +95,5 @@ private:
|
|||
BlockingQueue<std::string> m_imagespath;
|
||||
std::atomic_int imgremains;
|
||||
HGScanConfig m_config;
|
||||
std::function<void(std::string)> m_flatcallback;
|
||||
};
|
|
@ -18,7 +18,7 @@ GScn_Drv::GScn_Drv()
|
|||
{
|
||||
//run();
|
||||
|
||||
XdPrint("Init GScn_Drv() \n");
|
||||
XdPrint(L"Init GScn_Drv() \n");
|
||||
|
||||
m_bRun = false;
|
||||
devState = DEV_STOP;
|
||||
|
@ -35,9 +35,9 @@ GScn_Drv::~GScn_Drv()
|
|||
m_bRun = false;
|
||||
devState = DEV_STOP;
|
||||
m_threadUsb.join();
|
||||
XdPrint("m_threadUsb Released True 22222222222222222222222 \n");
|
||||
XdPrint(L"m_threadUsb Released True 22222222222222222222222 \n");
|
||||
}
|
||||
XdPrint("~ GScn_Drv() \n");
|
||||
XdPrint(L"~ GScn_Drv() \n");
|
||||
}
|
||||
|
||||
void GScn_Drv::InitMSGMap()
|
||||
|
@ -82,7 +82,7 @@ void GScn_Drv::open(int vid, int pid,int index)
|
|||
m_usb->open();//同时存在多个同种扫描设备时,默认选取第一个vid pid匹配的设备
|
||||
selectDeviceIndex=index;
|
||||
m_scannerType=G300;
|
||||
h= ::FindWindow(NULL, "HGScannerTool");
|
||||
h= ::FindWindow(NULL, L"HGScannerTool");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -223,6 +223,23 @@ void GScn_Drv::SetSleepTime(int sleeptime)
|
|||
}
|
||||
}
|
||||
|
||||
void GScn_Drv::GetFlatMaxBright(bool iscolor, unsigned int& val)
|
||||
{
|
||||
}
|
||||
|
||||
void GScn_Drv::SetFlatMaxBright(bool iscolor, unsigned int val)
|
||||
{
|
||||
}
|
||||
|
||||
void GScn_Drv::SetFlatCallback(std::function<void(std::string)> func)
|
||||
{
|
||||
m_flatcallback = func;
|
||||
}
|
||||
|
||||
void GScn_Drv::GetSpeedMode(int& speedmode, bool get)
|
||||
{
|
||||
}
|
||||
|
||||
void GScn_Drv::reset()
|
||||
{
|
||||
while (!m_pImages.empty())
|
||||
|
@ -425,11 +442,13 @@ DWORD GScn_Drv::usbmain()
|
|||
case DETECT_STAPLE:
|
||||
case PAPER_SKEW:
|
||||
case HARDWARE_ERROR:
|
||||
case PC_SCAN_BUSY_or_ERROR:
|
||||
MessageBox(h, ntcMsg[usbcb.u32_Data].c_str(), "Ìáʾ", MB_OK | MB_ICONERROR);
|
||||
case PC_SCAN_BUSY_or_ERROR:{
|
||||
USES_CONVERSION;
|
||||
MessageBox(h, CString(ntcMsg[usbcb.u32_Data].c_str()), L"Ìáʾ", MB_OK | MB_ICONERROR);
|
||||
devState = DEV_WRONG;
|
||||
m_pImages.SetScanFlag(false);
|
||||
break;
|
||||
}
|
||||
case NORMAL:
|
||||
break;
|
||||
default:
|
||||
|
@ -442,15 +461,15 @@ DWORD GScn_Drv::usbmain()
|
|||
}
|
||||
catch (CMemoryException* e)
|
||||
{
|
||||
XdPrint("CMemoryException");
|
||||
XdPrint(L"CMemoryException");
|
||||
}
|
||||
catch (CFileException* e)
|
||||
{
|
||||
XdPrint("CFileException");
|
||||
XdPrint(L"CFileException");
|
||||
}
|
||||
catch (CException* e)
|
||||
{
|
||||
XdPrint("CException");
|
||||
XdPrint(L"CException");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -508,11 +527,11 @@ std::string GScn_Drv::GetFWVersion()
|
|||
std::lock_guard<std::mutex> lck(m_imgLocker);
|
||||
std::string pFWVersion = " ";
|
||||
USBCB usbcb = { GET_FW_VERSION,0,0 };
|
||||
XdPrint("Get GetFWVersion");
|
||||
XdPrint(L"Get GetFWVersion");
|
||||
m_usb->write_bulk(&usbcb, sizeof(usbcb));
|
||||
|
||||
CString cslog;
|
||||
cslog.Format("GetFWVersion Read_Data %d",usbcb.u32_Data);
|
||||
cslog.Format(L"GetFWVersion Read_Data %d",usbcb.u32_Data);
|
||||
|
||||
m_usb->read_bulk(&pFWVersion[0], 10);
|
||||
return pFWVersion;
|
||||
|
@ -541,16 +560,21 @@ void GScn_Drv::SetSerialNum(std::string pvalue)
|
|||
return;
|
||||
}
|
||||
|
||||
std::string GScn_Drv::GetKernelVersion()
|
||||
{
|
||||
return "un support";
|
||||
}
|
||||
|
||||
int GScn_Drv::GetScanNum()
|
||||
{
|
||||
std::lock_guard<std::mutex> lck(m_imgLocker);
|
||||
USBCB usbcb = { GET_SCANN_NUM,0,4 };
|
||||
DWORD transfer;
|
||||
XdPrint("Get GetScanNum");
|
||||
XdPrint(L"Get GetScanNum");
|
||||
m_usb->write_bulk(&usbcb, sizeof(usbcb));
|
||||
|
||||
CString cslog;
|
||||
cslog.Format("GetScanNum Read_Data %d",usbcb.u32_Data);
|
||||
cslog.Format(L"GetScanNum Read_Data %d",usbcb.u32_Data);
|
||||
//WriteLog(cslog);
|
||||
|
||||
m_usb->read_bulk(&usbcb, sizeof(usbcb));
|
||||
|
@ -562,7 +586,7 @@ void GScn_Drv::ClrRollerNum()
|
|||
std::lock_guard<std::mutex> lck(m_imgLocker);
|
||||
USBCB usbcb = { CLR_ROLLER_NUM,0,4 };
|
||||
DWORD transfer;
|
||||
XdPrint("Get ClrRollerNum");
|
||||
XdPrint(L"Get ClrRollerNum");
|
||||
m_usb->write_bulk(&usbcb, sizeof(usbcb));
|
||||
return;
|
||||
}
|
||||
|
@ -572,7 +596,7 @@ void GScn_Drv::ClrScanNum()
|
|||
std::lock_guard<std::mutex> lck(m_imgLocker);
|
||||
USBCB usbcb = { CLR_SCAN_NUM,0,4 };
|
||||
DWORD transfer;
|
||||
XdPrint("Get ClrScanNum");
|
||||
XdPrint(L"Get ClrScanNum");
|
||||
m_usb->write_bulk(&usbcb, sizeof(usbcb));
|
||||
return;
|
||||
}
|
||||
|
@ -648,7 +672,7 @@ std::string GScn_Drv::GetSerialNum()
|
|||
str.resize(14);
|
||||
USBCB usbcb = { GET_SERIAL,0,14 };
|
||||
m_usb->write_bulk(&usbcb, sizeof(usbcb));
|
||||
XdPrint("GetSerialNum Read_Data %d",usbcb.u32_Data);
|
||||
XdPrint(L"GetSerialNum Read_Data %d",usbcb.u32_Data);
|
||||
m_usb->read_bulk(&str, 14);
|
||||
return str;
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ public:
|
|||
virtual void SetFWVersion();
|
||||
virtual std::string GetSerialNum();
|
||||
virtual void SetSerialNum(std::string serial);
|
||||
virtual std::string GetKernelVersion();
|
||||
virtual void SetRatio(int tyepe, int ration);
|
||||
virtual void GetRatio(int type, int& ratio);
|
||||
virtual void Reboot();
|
||||
|
@ -71,6 +72,12 @@ public:
|
|||
virtual void GetSleepTime(int& sleeptime);
|
||||
virtual void SetSleepTime(int sleeptime);
|
||||
|
||||
virtual void GetFlatMaxBright(bool iscolor, unsigned int& val);
|
||||
virtual void SetFlatMaxBright(bool iscolor, unsigned int val);
|
||||
|
||||
virtual void SetFlatCallback(std::function<void(std::string)> func);
|
||||
virtual void GetSpeedMode(int& speedmode, bool get);
|
||||
|
||||
private:
|
||||
volatile int devState;
|
||||
volatile bool m_bRun;
|
||||
|
@ -95,4 +102,5 @@ private:
|
|||
DWORD usbmain();
|
||||
void Pop_Image();
|
||||
HGScanConfig m_config;
|
||||
std::function<void(std::string)> m_flatcallback;
|
||||
};
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
130
HuaGoScan.ini
130
HuaGoScan.ini
|
@ -1,130 +0,0 @@
|
|||
[ColorCorrection]
|
||||
;²ÊɫУÕýģʽ
|
||||
FRExposure =900
|
||||
FGExposure =900
|
||||
FBExposure =900
|
||||
F1Gain =30
|
||||
F2Gain =30
|
||||
F3Gain =30
|
||||
F4Gain =30
|
||||
F5Gain =30
|
||||
F6Gain =30
|
||||
F1Offset =255
|
||||
F2Offset =255
|
||||
F3Offset =255
|
||||
F4Offset =255
|
||||
F5Offset =255
|
||||
F6Offset =255
|
||||
BRExposure =900
|
||||
BGExposure =900
|
||||
BBExposure =900
|
||||
B1Gain =30
|
||||
B2Gain =30
|
||||
B3Gain =30
|
||||
B4Gain =30
|
||||
B5Gain =30
|
||||
B6Gain =30
|
||||
B1Offset =255
|
||||
B2Offset =255
|
||||
B3Offset =255
|
||||
B4Offset =255
|
||||
B5Offset =255
|
||||
B6Offset =255
|
||||
[ColorFlat]
|
||||
;²ÊÉ«
|
||||
FRExposure =340
|
||||
FGExposure =620
|
||||
FBExposure =324
|
||||
F1Gain =24
|
||||
F2Gain =24
|
||||
F3Gain =24
|
||||
F4Gain =24
|
||||
F5Gain =24
|
||||
F6Gain =24
|
||||
F1Offset =117
|
||||
F2Offset =117
|
||||
F3Offset =117
|
||||
F4Offset =117
|
||||
F5Offset =117
|
||||
F6Offset =117
|
||||
BRExposure =233
|
||||
BGExposure =418
|
||||
BBExposure =220
|
||||
B1Gain =24
|
||||
B2Gain =24
|
||||
B3Gain =24
|
||||
B4Gain =24
|
||||
B5Gain =24
|
||||
B6Gain =24
|
||||
B1Offset =64
|
||||
B2Offset =64
|
||||
B3Offset =64
|
||||
B4Offset =64
|
||||
B5Offset =64
|
||||
B6Offset =64
|
||||
[GrayCorrection]
|
||||
;»Ò¶ÈУÕýģʽ
|
||||
FRExposure =200
|
||||
FGExposure =200
|
||||
FBExposure =200
|
||||
F1Gain =30
|
||||
F2Gain =30
|
||||
F3Gain =30
|
||||
F4Gain =30
|
||||
F5Gain =30
|
||||
F6Gain =30
|
||||
F1Offset =255
|
||||
F2Offset =255
|
||||
F3Offset =255
|
||||
F4Offset =255
|
||||
F5Offset =255
|
||||
F6Offset =255
|
||||
BRExposure =200
|
||||
BGExposure =200
|
||||
BBExposure =200
|
||||
B1Gain =30
|
||||
B2Gain =30
|
||||
B3Gain =30
|
||||
B4Gain =30
|
||||
B5Gain =30
|
||||
B6Gain =30
|
||||
B1Offset =255
|
||||
B2Offset =255
|
||||
B3Offset =255
|
||||
B4Offset =255
|
||||
B5Offset =255
|
||||
B6Offset =255
|
||||
[GrayFlat]
|
||||
;»Ò¶È
|
||||
FRExposure =340
|
||||
FGExposure =620
|
||||
FBExposure =324
|
||||
F1Gain =24
|
||||
F2Gain =24
|
||||
F3Gain =24
|
||||
F4Gain =24
|
||||
F5Gain =24
|
||||
F6Gain =24
|
||||
F1Offset =117
|
||||
F2Offset =117
|
||||
F3Offset =117
|
||||
F4Offset =117
|
||||
F5Offset =117
|
||||
F6Offset =117
|
||||
BRExposure =233
|
||||
BGExposure =418
|
||||
BBExposure =220
|
||||
B1Gain =24
|
||||
B2Gain =24
|
||||
B3Gain =24
|
||||
B4Gain =24
|
||||
B5Gain =24
|
||||
B6Gain =24
|
||||
B1Offset =64
|
||||
B2Offset =64
|
||||
B3Offset =64
|
||||
B4Offset =64
|
||||
B5Offset =64
|
||||
B6Offset =64
|
||||
|
||||
|
Loading…
Reference in New Issue