3399板子配置适配

This commit is contained in:
lovelyyoung 2021-08-17 09:07:55 +08:00
parent a577af2d56
commit 8109139e24
56 changed files with 685 additions and 902 deletions

1
.gitignore vendored
View File

@ -3,3 +3,4 @@ Debug/*
Release/* Release/*
HuaGoCorrect/Debug/* HuaGoCorrect/Debug/*
HuaGoCorrect/Release/* HuaGoCorrect/Release/*
HuaGoCorrect/ScanPicture/*

View File

@ -7,3 +7,9 @@
2021年7月31日 2021年7月31日
1.增加3399 板子g100 g200 校正及配置功能 1.增加3399 板子g100 g200 校正及配置功能
2021年8月17日
1. 界面增加速度模式配置功能;
2. 增加明场暗场校正最大明场值配置;
3. 界面UI按钮顺序调整对齐等操作
V4.2版本

View File

@ -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

Binary file not shown.

View File

@ -25,6 +25,7 @@ CA3::~CA3()
void CA3::DoDataExchange(CDataExchange* pDX) void CA3::DoDataExchange(CDataExchange* pDX)
{ {
CDialog::DoDataExchange(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_BTNSETCOLORSP, &CA3::OnBnClickedBtnsetcolorsp)
ON_BN_CLICKED(IDC_BTNGETSLEEPTIME, &CA3::OnBnClickedBtngetsleeptime) ON_BN_CLICKED(IDC_BTNGETSLEEPTIME, &CA3::OnBnClickedBtngetsleeptime)
ON_BN_CLICKED(IDC_BTNSETSLEEPTIME, &CA3::OnBnClickedBtnsetsleeptime) 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() END_MESSAGE_MAP()
@ -48,7 +56,10 @@ BOOL CA3::OnInitDialog()
CDialog::OnInitDialog(); CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化 // 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 return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE // 异常: 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; int sp;
CString str_sp; CString str_sp;
auto parent = (CHuaGoCorrectDlg*)GetParent(); auto parent = (CHuaGoCorrectDlg*)GetParent();
int itemid = type == 0 ? IDC_LBGRAYSP : (type == 1 ? IDC_LBCOLORSP : IDC_LBGUVSP); //IDC_LBCOLORSP 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); parent->m_drv->GetSptime(type, sp);
str_sp.Format("%d", sp); str_sp.Format(L"%d", sp);
SetDlgItemText(itemid, str_sp); SetDlgItemText(itemid, str_sp);
} }
else else
{ {
GetDlgItemText(itemid, str_sp); GetDlgItemText(itemid, str_sp);
int value= atoi(str_sp); USES_CONVERSION;
parent->m_drv->SetSptime(type, value); 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; CString str_sp;
auto parent = (CHuaGoCorrectDlg*)GetParent(); auto parent = (CHuaGoCorrectDlg*)GetParent();
int itemid = type == 0 ? IDC_LBGRAYSP : (type == 1 ? IDC_LBCOLORSP : IDC_LBGUVSP); //IDC_LBCOLORSP 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); parent->m_drv->GetSptime(type, sp);
str_sp.Format("%d", sp); str_sp.Format(L"%d", sp);
SetDlgItemText(itemid, str_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); void CA3::UpdateMaxBright(bool get, int id)
int value = atoi(str_sp); {
parent->m_drv->SetSptime(type, value); 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; int sp;
CString str_sp; CString str_sp;
auto parent = (CHuaGoCorrectDlg*)GetParent(); auto parent = (CHuaGoCorrectDlg*)GetParent();
if (get) if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
{ if (get)
parent->m_drv->GetSleepTime(sp); {
str_sp.Format("%d", sp); parent->m_drv->GetSleepTime(sp);
SetDlgItemText(IDC_LBSLEEPTIME, str_sp); str_sp.Format(L"%d", sp);
} SetDlgItemText(IDC_LBSLEEPTIME, str_sp);
else }
{ else
GetDlgItemText(IDC_LBSLEEPTIME, str_sp); {
int value = atoi(str_sp); GetDlgItemText(IDC_LBSLEEPTIME, str_sp);
if (value <= 0) value = 60; USES_CONVERSION;
parent->m_drv->SetSleepTime(value); std::string str(W2A(str_sp));
int value = atoi(str.c_str());
if (value <= 0) value = 60;
parent->m_drv->SetSleepTime(value);
}
} }
} }
@ -179,3 +228,101 @@ void CA3::OnBnClickedBtnsetsleeptime()
{ {
UpdateSleepTime(false); 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);
}
}
}

View File

@ -1,5 +1,5 @@
#pragma once #pragma once
#include <map>
// CA3 对话框 // CA3 对话框
@ -32,11 +32,43 @@ public:
private: private:
void OnGetOrSetSp(bool get, int type); void OnGetOrSetSp(bool get, int type);
public: public:
afx_msg afx_msg void OnGetOrSetSleepTime(bool get, int type);
void OnGetOrSetSleepTime(bool get, int type); void UpdateMaxBright(bool get,int id);
void UpdateSleepTime(bool get); void UpdateSleepTime(bool get);
void OnBnClickedBtngetsleeptime(); void OnBnClickedBtngetsleeptime();
afx_msg void OnBnClickedBtnsetsleeptime(); afx_msg void OnBnClickedBtnsetsleeptime();
afx_msg void OnBnClickedBtngetcolorsp2(); afx_msg void OnBnClickedBtnsetclrmaxbrt();
afx_msg void OnBnClickedBtnsetcolorsp2(); 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;
}; };

View File

@ -118,14 +118,16 @@ void CA4::SendCorrectParam()
UpdateData(); UpdateData();
int index = m_A4FlatModel.GetCurSel(); int index = m_A4FlatModel.GetCurSel();
auto parent = (CHuaGoCorrectDlg*)GetParent(); 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() void CA4::OnCbnSelChangeA4FlatModel()
{ {
auto parent = (CHuaGoCorrectDlg*)GetParent(); auto parent = (CHuaGoCorrectDlg*)GetParent();
if (parent->m_drv->IsConnected()) if (parent->m_drv.get()&&parent->m_drv->IsConnected())
{ {
auto correctdata = parent->m_drv->GetFlatData(); auto correctdata = parent->m_drv->GetFlatData();
updateA4Config(correctdata); updateA4Config(correctdata);
@ -179,7 +181,9 @@ void CA4::LoadCfg()
void CA4::OnBnClickedBtnReboot() void CA4::OnBnClickedBtnReboot()
{ {
auto parent = (CHuaGoCorrectDlg*)GetParent(); auto parent = (CHuaGoCorrectDlg*)GetParent();
parent->m_drv->Reboot(); if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
parent->m_drv->Reboot();
}
} }
/// <summary> /// <summary>
@ -203,9 +207,11 @@ void CA4::OnBnClickedBtnGetvidpid()
void CA4::OnBnClickedBtngetSerial() void CA4::OnBnClickedBtngetSerial()
{ {
auto parent = (CHuaGoCorrectDlg*)GetParent(); auto parent = (CHuaGoCorrectDlg*)GetParent();
std::string serial= parent->m_drv->GetSerialNum(); if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
CString c_serial(serial.c_str()); std::string serial = parent->m_drv->GetSerialNum();
SetDlgItemText(IDC_tbxSerial, c_serial); CString c_serial(serial.c_str());
SetDlgItemText(IDC_tbxSerial, c_serial);
}
} }
/// <summary> /// <summary>
@ -224,10 +230,13 @@ void CA4::OnBnClickedBtnSetSerial()
auto parent = (CHuaGoCorrectDlg*)GetParent(); auto parent = (CHuaGoCorrectDlg*)GetParent();
CString cserial; CString cserial;
GetDlgItemText(IDC_tbxSerial, cserial); GetDlgItemText(IDC_tbxSerial, cserial);
if (!cserial.IsEmpty()) if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
{ if (!cserial.IsEmpty())
std::string ser(cserial.GetBuffer()); {
parent->m_drv->SetSerialNum(ser); USES_CONVERSION;
std::string str(W2A(cserial));
parent->m_drv->SetSerialNum(str);
}
} }
} }
@ -236,11 +245,13 @@ void CA4::OnBnClickedBtnGethor()
{ {
auto parent = (CHuaGoCorrectDlg*)GetParent(); auto parent = (CHuaGoCorrectDlg*)GetParent();
int ratio = 0; int ratio = 0;
parent->m_drv->GetRatio(0, ratio); if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
float f_ratio = *(float*)&ratio; parent->m_drv->GetRatio(0, ratio);
CString str; float f_ratio = *(float*)&ratio;
str.Format("%.4f", f_ratio); CString str;
SetDlgItemText(IDC_tbxHOR, str); str.Format(L"%.4f", f_ratio);
SetDlgItemText(IDC_tbxHOR, str);
}
} }
@ -248,44 +259,56 @@ void CA4::OnBnClickedBtnGetver()
{ {
auto parent = (CHuaGoCorrectDlg*)GetParent(); auto parent = (CHuaGoCorrectDlg*)GetParent();
int ratio = 0; int ratio = 0;
parent->m_drv->GetRatio(1, ratio); if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
float f_ratio = *(float*)&ratio; parent->m_drv->GetRatio(1, ratio);
CString str; float f_ratio = *(float*)&ratio;
str.Format("%.4f", f_ratio); CString str;
SetDlgItemText(IDC_tbxVER, str); str.Format(L"%.4f", f_ratio);
SetDlgItemText(IDC_tbxVER, str);
}
} }
void CA4::OnBnClickedBtnSethor() void CA4::OnBnClickedBtnSethor()
{ {
auto parent = (CHuaGoCorrectDlg*)GetParent(); auto parent = (CHuaGoCorrectDlg*)GetParent();
CString str; if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
GetDlgItemText(IDC_tbxHOR, str); CString str;
float f_value = atof(str); GetDlgItemText(IDC_tbxHOR, str);
int value = *(int*)&f_value; USES_CONVERSION;
parent->m_drv->SetRatio(0, value); 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() void CA4::OnBnClickedBtnSetver()
{ {
auto parent = (CHuaGoCorrectDlg*)GetParent(); auto parent = (CHuaGoCorrectDlg*)GetParent();
CString str; if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
GetDlgItemText(IDC_tbxVER, str); CString str;
float f_value = atof(str); GetDlgItemText(IDC_tbxVER, str);
int value = *(int*)&f_value; USES_CONVERSION;
parent->m_drv->SetRatio(1, value); 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() void CA4::OnBnClickedBtngetVersion()
{ {
auto parent = (CHuaGoCorrectDlg*)GetParent(); auto parent = (CHuaGoCorrectDlg*)GetParent();
std::string ver = parent->m_drv->GetFWVersion(); if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
if (ver.size() > 0) std::string ver = parent->m_drv->GetFWVersion();
{ if (ver.size() > 0)
CString str(ver.c_str()); {
SetDlgItemText(IDC_tbxVersion, str); CString str(ver.c_str());
SetDlgItemText(IDC_tbxVersion, str);
}
} }
} }
@ -315,14 +338,15 @@ void CA4::OnBnClickedBtnGetexpos()
{ {
// TODO: 在此添加控件通知处理程序代码 // TODO: 在此添加控件通知处理程序代码
auto parent = (CHuaGoCorrectDlg*)GetParent(); auto parent = (CHuaGoCorrectDlg*)GetParent();
int esposeA, exposeB; if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
parent->m_drv->GetExpose(esposeA,exposeB); int esposeA, exposeB;
CString expA, expB; parent->m_drv->GetExpose(esposeA, exposeB);
expA.Format("%d", esposeA); CString expA, expB;
expB.Format("%d", exposeB); expA.Format(L"%d", esposeA);
SetDlgItemText(IDC_tbxUVAExpos, expA); expB.Format(L"%d", exposeB);
SetDlgItemText(IDC_tbxUVBExpos, expB); SetDlgItemText(IDC_tbxUVAExpos, expA);
SetDlgItemText(IDC_tbxUVBExpos, expB);
}
} }
@ -334,9 +358,14 @@ void CA4::OnBnClickedBtnSetexpos()
CString expA, expB; CString expA, expB;
GetDlgItemText(IDC_tbxUVAExpos, expA); GetDlgItemText(IDC_tbxUVAExpos, expA);
GetDlgItemText(IDC_tbxUVBExpos, expB); GetDlgItemText(IDC_tbxUVBExpos, expB);
esposeA= atoi(expA); USES_CONVERSION;
exposeB = atoi(expB); std::string str_a(W2A(expA));
parent->m_drv->SetExpose(esposeA, exposeB); 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);
}
} }
@ -389,3 +418,13 @@ void CA4::UpdateGains(int id, bool increase)
} }
UpdateData(FALSE); UpdateData(FALSE);
} }
void CA4::OnEnChangetbxfrexposure2()
{
// TODO: 如果该控件是 RICHEDIT 控件,它将不
// 发送此通知,除非重写 CDialog::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask()
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
}

View File

@ -74,4 +74,5 @@ public:
afx_msg void OnBnClickedBtnbup(); afx_msg void OnBnClickedBtnbup();
afx_msg void OnBnClickedBtnbdown(); afx_msg void OnBnClickedBtnbdown();
void UpdateGains(int id, bool get); void UpdateGains(int id, bool get);
afx_msg void OnEnChangetbxfrexposure2();
}; };

View File

@ -177,12 +177,17 @@ void CVISON::showfun()
auto ret = ((CHuaGoCorrectDlg*)parent)->m_drv->aquire_image(path, 0); auto ret = ((CHuaGoCorrectDlg*)parent)->m_drv->aquire_image(path, 0);
if (ret != -1) if (ret != -1)
{ {
imageindex++;
aquiredimgindx++; if (path.length() > 0) {
CString cPath(path.c_str()); imageindex++;
m_path.push_back(cPath); aquiredimgindx++;
m_onStop(false, aquiredimgindx); USES_CONVERSION;
DrawPicture(cPath); 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 else
{ {

View File

@ -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);
}

View File

@ -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_)

View File

@ -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();
}

View File

@ -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.

View File

@ -104,8 +104,8 @@ void CHuaGoCorrectApp::CreateScanFile()
char cTime[11]; char cTime[11];
CTime currTime = CTime::GetCurrentTime(); CTime currTime = CTime::GetCurrentTime();
_snprintf(cTime, 11, "%04d-%02d-%02d", currTime.GetYear(), currTime.GetMonth(), currTime.GetDay()); _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\\"; path = ".\\ScanPicture\\";
if (!PathIsDirectory(path)) if (!PathIsDirectory(path))

Binary file not shown.

View File

@ -29,7 +29,7 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc> <UseOfMfc>Dynamic</UseOfMfc>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
<VCToolsVersion> <VCToolsVersion>
@ -47,7 +47,7 @@
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc> <UseOfMfc>Dynamic</UseOfMfc>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
@ -215,8 +215,6 @@ opencv_imgproc2410.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ClInclude Include="A4.h" /> <ClInclude Include="A4.h" />
<ClInclude Include="BlockingQueue.h" /> <ClInclude Include="BlockingQueue.h" />
<ClInclude Include="commondef.h" /> <ClInclude Include="commondef.h" />
<ClInclude Include="Config.h" />
<ClInclude Include="ConfigParam.h" />
<ClInclude Include="CVISON.h" /> <ClInclude Include="CVISON.h" />
<ClInclude Include="DefHSCommon.h" /> <ClInclude Include="DefHSCommon.h" />
<ClInclude Include="DefHSStructure.h" /> <ClInclude Include="DefHSStructure.h" />
@ -246,8 +244,6 @@ opencv_imgproc2410.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ItemGroup> <ItemGroup>
<ClCompile Include="A3.cpp" /> <ClCompile Include="A3.cpp" />
<ClCompile Include="A4.cpp" /> <ClCompile Include="A4.cpp" />
<ClCompile Include="Config.cpp" />
<ClCompile Include="ConfigParam.cpp" />
<ClCompile Include="CVISON.cpp" /> <ClCompile Include="CVISON.cpp" />
<ClCompile Include="gscan3399.cpp" /> <ClCompile Include="gscan3399.cpp" />
<ClCompile Include="gscn_drv.cpp" /> <ClCompile Include="gscn_drv.cpp" />

View File

@ -48,9 +48,6 @@
<ClInclude Include="Resource.h"> <ClInclude Include="Resource.h">
<Filter>头文件</Filter> <Filter>头文件</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Config.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="filetools.h"> <ClInclude Include="filetools.h">
<Filter>头文件</Filter> <Filter>头文件</Filter>
</ClInclude> </ClInclude>
@ -96,9 +93,6 @@
<ClInclude Include="A4.h"> <ClInclude Include="A4.h">
<Filter>头文件</Filter> <Filter>头文件</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="ConfigParam.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="CVISON.h"> <ClInclude Include="CVISON.h">
<Filter>头文件</Filter> <Filter>头文件</Filter>
</ClInclude> </ClInclude>
@ -137,9 +131,6 @@
<ClCompile Include="stdafx.cpp"> <ClCompile Include="stdafx.cpp">
<Filter>源文件</Filter> <Filter>源文件</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="Config.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="imageprocess.cpp"> <ClCompile Include="imageprocess.cpp">
<Filter>源文件</Filter> <Filter>源文件</Filter>
</ClCompile> </ClCompile>
@ -170,9 +161,6 @@
<ClCompile Include="A4.cpp"> <ClCompile Include="A4.cpp">
<Filter>源文件</Filter> <Filter>源文件</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="ConfigParam.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="CVISON.cpp"> <ClCompile Include="CVISON.cpp">
<Filter>源文件</Filter> <Filter>源文件</Filter>
</ClCompile> </ClCompile>

View File

@ -100,7 +100,7 @@ BEGIN_MESSAGE_MAP(CHuaGoCorrectDlg, CDialogEx)
ON_BN_CLICKED(IDC_BTN_FLAT, &CHuaGoCorrectDlg::OnBnClickedBtnFlat) ON_BN_CLICKED(IDC_BTN_FLAT, &CHuaGoCorrectDlg::OnBnClickedBtnFlat)
ON_CBN_SELCHANGE(IDC_dpi_comboBox, &CHuaGoCorrectDlg::OnCbnSelChangeDpi) ON_CBN_SELCHANGE(IDC_dpi_comboBox, &CHuaGoCorrectDlg::OnCbnSelChangeDpi)
ON_CBN_SELCHANGE(IDC_color_comboBox, &CHuaGoCorrectDlg::OnCbnSelChangeColor) 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_SELECTFILE, &CHuaGoCorrectDlg::OnBnClickedBtnSelectfile)
ON_BN_CLICKED(IDC_BTN_UPDATE, &CHuaGoCorrectDlg::OnBnClickedBtnUpdate) ON_BN_CLICKED(IDC_BTN_UPDATE, &CHuaGoCorrectDlg::OnBnClickedBtnUpdate)
ON_BN_CLICKED(IDC_BTN_REFRESH, &CHuaGoCorrectDlg::OnBnClickedBtnRefresh) ON_BN_CLICKED(IDC_BTN_REFRESH, &CHuaGoCorrectDlg::OnBnClickedBtnRefresh)
@ -157,7 +157,7 @@ BOOL CHuaGoCorrectDlg::OnInitDialog()
else else
{ {
CString str; CString str;
str.Format("%d", num); str.Format(L"%d", num);
SetDlgItemText(IDC_STATIC_NUM, str); SetDlgItemText(IDC_STATIC_NUM, str);
} }
}; };
@ -165,7 +165,7 @@ BOOL CHuaGoCorrectDlg::OnInitDialog()
m_tab.GetClientRect(&tabRect); // 获取标签控件客户区Rect m_tab.GetClientRect(&tabRect); // 获取标签控件客户区Rect
// 调整tabRect使其覆盖范围适合放置标签页 // 调整tabRect使其覆盖范围适合放置标签页
tabRect.left += 1; tabRect.left += 10;
tabRect.right -= 1; tabRect.right -= 1;
tabRect.top += 35; tabRect.top += 35;
tabRect.bottom -= 1; tabRect.bottom -= 1;
@ -185,7 +185,6 @@ BOOL CHuaGoCorrectDlg::OnInitDialog()
m_ComboxColor.InsertString(0, _T("gray")); m_ComboxColor.InsertString(0, _T("gray"));
m_ComboxColor.InsertString(1, _T("color")); m_ComboxColor.InsertString(1, _T("color"));
m_ComboxColor.SetCurSel(1); m_ComboxColor.SetCurSel(1);
//m_drv->set_decompress_pix_type(TWPT_RGB);
m_A4Scanner.SetCheck(0); m_A4Scanner.SetCheck(0);
n_hour = 0; n_hour = 0;
@ -239,7 +238,7 @@ bool CHuaGoCorrectDlg::RefreshUSBList()
while (info != ret.end()) while (info != ret.end())
{ {
CString strinfo; 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); m_Usbs.InsertString(i, strinfo);
info++; info++;
i++; i++;
@ -311,9 +310,9 @@ void CHuaGoCorrectDlg::RefreshTabChange()
// 获取标签控件客户区Rect并对其调整以适合放置标签页 // 获取标签控件客户区Rect并对其调整以适合放置标签页
m_tab.GetClientRect(&tabRect); m_tab.GetClientRect(&tabRect);
tabRect.left += 10; tabRect.left += 15;
tabRect.right -= 1; tabRect.right += 20;
tabRect.top += 35; tabRect.top += 20;
tabRect.bottom -= 1; tabRect.bottom -= 1;
switch (m_tab.GetCurSel()) switch (m_tab.GetCurSel())
@ -343,7 +342,7 @@ void CHuaGoCorrectDlg::Scan()
HGScanConfig config = { 0 }; HGScanConfig config = { 0 };
config.g200params.dpi = 1;//only support 200DPI config.g200params.dpi = 1;//only support 200DPI
config.g200params.paper = 0; 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.color = m_iColorIndex == 1 ? 1 : 0;
config.g200params.double_feed_enbale = TRUE; config.g200params.double_feed_enbale = TRUE;
config.g200params.screw_detect_enable = FALSE; config.g200params.screw_detect_enable = FALSE;
@ -354,15 +353,15 @@ void CHuaGoCorrectDlg::Scan()
m_drv->Scanner_StartScan(-1); m_drv->Scanner_StartScan(-1);
m_drv->run(); m_drv->run();
//if (b_suspend) if (b_suspend)
// KillTimer(N_TIMER_SEC); KillTimer(N_TIMER_SEC);
//b_suspend = FALSE; b_suspend = FALSE;
//n_hour = 0; n_hour = 0;
//n_minute = 0; n_minute = 0;
//n_second = 0; n_second = 0;
//SetTimer(N_TIMER_SEC, N_TIME_SEC, NULL); SetTimer(N_TIMER_SEC, N_TIME_SEC, NULL);
//SetTimer(N_TIMER_SHOW, N_TIME_SHOW, NULL); SetTimer(N_TIMER_SHOW, N_TIME_SHOW, NULL);
} }
@ -371,7 +370,7 @@ void CHuaGoCorrectDlg::OnBnClickedCheckparamset()
// TODO: 在此添加控件通知处理程序代码 // TODO: 在此添加控件通知处理程序代码
if (!m_drv->IsConnected()) if (!m_drv->IsConnected())
{ {
MessageBox("扫描仪未连接!"); MessageBox(TEXT("扫描仪未连接!"));
return; return;
} }
m_A4Dlg.SendCorrectParam(); m_A4Dlg.SendCorrectParam();
@ -383,7 +382,7 @@ void CHuaGoCorrectDlg::OnBnClickedCheckparamread()
// TODO: 在此添加控件通知处理程序代码 // TODO: 在此添加控件通知处理程序代码
if (!m_drv->IsConnected()) if (!m_drv->IsConnected())
{ {
MessageBox("扫描仪未连接!"); MessageBox(TEXT("扫描仪未连接!"));
return; return;
} }
m_tab.SetCurSel(0); m_tab.SetCurSel(0);
@ -397,14 +396,29 @@ void CHuaGoCorrectDlg::OnBnClickedBtnFlat()
m_iflatIndex = -2; m_iflatIndex = -2;
if (!m_drv->IsConnected()) if (!m_drv->IsConnected())
{ {
MessageBox("扫描仪未连接!"); MessageBox(TEXT("扫描仪未连接!"));
return; return;
} }
if (GetDlgItem(IDC_CKBCORRECTMODE)->IsWindowVisible()) 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()); m_drv->StartFlat(((CButton*)GetDlgItem(IDC_CKBCORRECTMODE))->GetCheck());
}
}
else else
m_drv->StartFlat(true);//彩色 m_drv->StartFlat(true);//彩色
} }
@ -413,26 +427,26 @@ void CHuaGoCorrectDlg::WriteLog(CString msg)
{ {
if (!msg.IsEmpty()) if (!msg.IsEmpty())
{ {
FILE* pFile = fopen(".//log//CorrectLog.log", "a+"); //FILE* pFile = fopen(".//log//CorrectLog.log", "a+");
if (pFile != NULL) //if (pFile != NULL)
{ //{
char cTime[32]; // char cTime[32];
CTime currTime = CTime::GetCurrentTime(); // CTime currTime = CTime::GetCurrentTime();
_snprintf(cTime, 30, "[%04d-%02d-%02d %02d:%02d:%02d]", // _snprintf(cTime, 30, "[%04d-%02d-%02d %02d:%02d:%02d]",
currTime.GetYear(), currTime.GetMonth(), currTime.GetDay(), // currTime.GetYear(), currTime.GetMonth(), currTime.GetDay(),
currTime.GetHour(), currTime.GetMinute(), currTime.GetSecond()); // currTime.GetHour(), currTime.GetMinute(), currTime.GetSecond());
fwrite(cTime, 1, strlen(cTime), pFile); // fwrite(cTime, 1, strlen(cTime), pFile);
fwrite(msg, 1, strlen(msg), pFile); // fwrite(msg, 1, strlen(msg.GetBuffer()), pFile);
fwrite("\n", 1, 1, pFile); // fwrite("\n", 1, 1, pFile);
fclose(pFile); // fclose(pFile);
} //}
} }
} }
void CHuaGoCorrectDlg::OnCancel() void CHuaGoCorrectDlg::OnCancel()
{ {
// TODO: 在此添加专用代码和/或调用基类 // TODO: 在此添加专用代码和/或调用基类
if (IDOK != AfxMessageBox("确定要退出服务器吗?", MB_ICONQUESTION | MB_OKCANCEL)) if (IDOK != AfxMessageBox(L"确定要退出此程序吗?", MB_ICONQUESTION | MB_OKCANCEL))
{ {
return; return;
} }
@ -469,51 +483,51 @@ void CHuaGoCorrectDlg::OnBnClickedStopScan()
} }
//void CHuaGoCorrectDlg::OnTimer(UINT_PTR nIDEvent) void CHuaGoCorrectDlg::OnTimer(UINT_PTR nIDEvent)
//{ {
// // TODO: 在此添加消息处理程序代码和/或调用默认值 // TODO: 在此添加消息处理程序代码和/或调用默认值
// switch (nIDEvent) switch (nIDEvent)
// { {
// case 1: case 1:
// { {
// if (b_review == FALSE) if (b_review == FALSE)
// { {
// n_second++; n_second++;
// if (n_second == 60) if (n_second == 60)
// { {
// n_second = 0; n_second = 0;
// n_minute++; n_minute++;
// } }
// if (n_minute == 60) if (n_minute == 60)
// { {
// n_minute = 0; n_minute = 0;
// n_hour++; n_hour++;
// } }
// } }
// } }
// case 2: case 2:
// { {
// if (b_review == FALSE) if (b_review == FALSE)
// { {
// int h1, h2, m1, m2, s1, s2; int h1, h2, m1, m2, s1, s2;
// h1 = n_hour / 10; h1 = n_hour / 10;
// h2 = n_hour % 10; h2 = n_hour % 10;
// m1 = n_minute / 10; m1 = n_minute / 10;
// m2 = n_minute % 10; m2 = n_minute % 10;
// s1 = n_second / 10; s1 = n_second / 10;
// s2 = n_second % 10; s2 = n_second % 10;
// s_hour.Format("%d%d", h1, h2); s_hour.Format(L"%d%d", h1, h2);
// s_minute.Format("%d%d", m1, m2); s_minute.Format(L"%d%d", m1, m2);
// s_second.Format("%d%d", s1, s2); s_second.Format(L"%d%d", s1, s2);
// } }
// UpdateData(FALSE); UpdateData(FALSE);
// } }
// default: default:
// break; break;
// } }
//
// CDialogEx::OnTimer(nIDEvent); CDialogEx::OnTimer(nIDEvent);
//} }
/// <summary> /// <summary>
/// 选择更新文件 /// 选择更新文件
@ -530,8 +544,10 @@ void CHuaGoCorrectDlg::OnBnClickedBtnSelectfile()
NULL); NULL);
if (IDOK == ofd.DoModal()) if (IDOK == ofd.DoModal())
{ {
USES_CONVERSION;
updateFilePath = ofd.GetPathName(); 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); GetDlgItem(IDC_CKBUVMODEL)->EnableWindow(i->vid == 0x3072 && i->pid == 0x0300);
} }
m_drv->open(i->vid, i->pid, 0); 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); m_drv->SetPath(savepath);
if (i->pid & 0x39) if (i->pid & 0x39)
{ {
@ -624,11 +641,11 @@ void CHuaGoCorrectDlg::OnBnClickedBtnstart()
if (!m_drv->IsConnected()) if (!m_drv->IsConnected())
{ {
MessageBox("扫描仪未连接!"); MessageBox(L"扫描仪未连接!");
return; return;
} }
m_iColorIndex = m_ComboxColor.GetCurSel(); m_iColorIndex = m_ComboxColor.GetCurSel();
GetDlgItem(IDC_STATIC_NUM)->SetWindowText("0"); GetDlgItem(IDC_STATIC_NUM)->SetWindowText(L"0");
m_drv->DevStateChange(); m_drv->DevStateChange();
m_drv->reset(); m_drv->reset();
Scan(); Scan();
@ -656,9 +673,9 @@ void CHuaGoCorrectDlg::OnBnClickedBtnstop()
m2 = n_minute % 10; m2 = n_minute % 10;
s1 = n_second / 10; s1 = n_second / 10;
s2 = n_second % 10; s2 = n_second % 10;
s_hour.Format("%d%d", h1, h2); s_hour.Format(L"%d%d", h1, h2);
s_minute.Format("%d%d", m1, m2); s_minute.Format(L"%d%d", m1, m2);
s_second.Format("%d%d", s1, s2); s_second.Format(L"%d%d", s1, s2);
UpdateData(FALSE); UpdateData(FALSE);
} }
m_drv->Stop_scan(); m_drv->Stop_scan();
@ -667,8 +684,10 @@ void CHuaGoCorrectDlg::OnBnClickedBtnstop()
void CHuaGoCorrectDlg::updatefunc() void CHuaGoCorrectDlg::updatefunc()
{ {
CProgressCtrl* prb = (CProgressCtrl*)GetDlgItem(IDC_PRB_UPDATE); CProgressCtrl* prb = (CProgressCtrl*)GetDlgItem(IDC_PRB_UPDATE);
int ret= m_drv->Updata(updateFilePath, [this,&prb](long pos, long len) { USES_CONVERSION;
prb->SetRange32(0,len); std::string updatefile(W2A(updateFilePath));
int ret = m_drv->Updata(updatefile, [this, &prb](long pos, long len) {
prb->SetRange32(0, len);
prb->SetPos(pos); prb->SetPos(pos);
}); });
if (ret == false) if (ret == false)
@ -679,60 +698,4 @@ void CHuaGoCorrectDlg::updatefunc()
{ {
MessageBox(TEXT("更新完成!"), TEXT("提示"), MB_OK | MB_ICONINFORMATION); 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);
} }

View File

@ -11,7 +11,7 @@
#include "twain.h" #include "twain.h"
#include "A3.h" #include "A3.h"
#include "A4.h" #include "A4.h"
#include "ConfigParam.h" //#include "ConfigParam.h"
#include "afxwin.h" #include "afxwin.h"
#include "CVISON.h" #include "CVISON.h"
#include "scn_usb.h" #include "scn_usb.h"
@ -63,7 +63,6 @@ public:
CA4 m_A4Dlg; CA4 m_A4Dlg;
CVISON m_VisonDlg; CVISON m_VisonDlg;
CA3 m_A3dlg; CA3 m_A3dlg;
CConfigParam m_ConfigParam;
std::shared_ptr<IScanner> m_drv; std::shared_ptr<IScanner> m_drv;
CRect tabRect; // 标签控件客户区的位置和大小 CRect tabRect; // 标签控件客户区的位置和大小
void Scan(); void Scan();
@ -104,7 +103,7 @@ public:
CString s_minute; CString s_minute;
CString s_second; CString s_second;
afx_msg void OnBnClickedStopScan(); 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 OnBnClickedBtnSelectfile();
afx_msg void OnBnClickedBtnUpdate(); afx_msg void OnBnClickedBtnUpdate();
afx_msg void OnBnClickedBtnRefresh(); afx_msg void OnBnClickedBtnRefresh();
@ -112,7 +111,7 @@ public:
afx_msg void OnBnClickedBtnstart(); afx_msg void OnBnClickedBtnstart();
afx_msg void OnBnClickedBtnstop(); afx_msg void OnBnClickedBtnstop();
private: private:
std::string updateFilePath; CString updateFilePath;
std::thread m_updateThread; std::thread m_updateThread;
void updatefunc(); void updatefunc();
}; };

View File

@ -15,6 +15,7 @@ public:
virtual void SetFWVersion() = 0; virtual void SetFWVersion() = 0;
virtual std::string GetSerialNum() = 0; virtual std::string GetSerialNum() = 0;
virtual void SetSerialNum(std::string serial) = 0; virtual void SetSerialNum(std::string serial) = 0;
virtual std::string GetKernelVersion() =0;
virtual void SetRatio(int tyepe, int ration) = 0; virtual void SetRatio(int tyepe, int ration) = 0;
virtual void GetRatio(int type, int& ratio) = 0; virtual void GetRatio(int type, int& ratio) = 0;
virtual void Reboot() = 0; virtual void Reboot() = 0;
@ -44,8 +45,12 @@ public:
virtual void SetSptime(int type, int time) = 0; virtual void SetSptime(int type, int time) = 0;
virtual void GetSleepTime(int& sleeptime) = 0; virtual void GetSleepTime(int& sleeptime) = 0;
virtual void SetSleepTime(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) void SetPath(std::string csFilePath)
{ {
csPath = csFilePath; csPath = csFilePath;

View File

@ -49,7 +49,7 @@ cv::Mat JpegBuffer::getMat( int pixType)
//XdPrint("buffer size is :%d ==========================\n",getSize()); //XdPrint("buffer size is :%d ==========================\n",getSize());
cv::Mat image = jl.decode(m_buffer, pixType);//oixtype 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); //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",) //FileTools::write_log("D:/1.txt",)

View File

@ -313,34 +313,34 @@ TCHAR* GetCurExeFilePath(HINSTANCE hInstance, TCHAR* lpPath, DWORD dwSize)
TCHAR* GetExistFileDir(TCHAR* p_file_path) TCHAR* GetExistFileDir(TCHAR* p_file_path)
{ {
WIN32_FIND_DATA wfd = {0}; //WIN32_FIND_DATA wfd = {0};
LPSTR p_test = NULL; //LPSTR p_test = NULL;
HANDLE hFindFile = INVALID_HANDLE_VALUE; //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; 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) 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; return FALSE;
} }
} }
if ( _access(p_file_path, 0) == 0) //if ( _access(p_file_path, 0) == 0)
{ //{
return TRUE; // return TRUE;
} //}
if ( !flg ) if ( !flg )
return FALSE; 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) BOOL CheckDiskFreeBitM(HWND hWin, TCHAR *p_disk_name, DWORD dw_min_bit_m)
{ {
TCHAR *p = NULL; //TCHAR *p = NULL;
TCHAR sz_root_path_name[MAX_PATH + 1] = {0}; //TCHAR sz_root_path_name[MAX_PATH + 1] = {0};
INT len = 0; //INT len = 0;
//
//DWORD dwTotalDiskSpace = 0;
//DWORD dwFreeDiskSpace = 0;
//DWORD dwUsedDiskSpace = 0;
DWORD dwTotalDiskSpace = 0; //ULARGE_INTEGER uiFreeBytesAvailableToCaller;
DWORD dwFreeDiskSpace = 0; //ULARGE_INTEGER uiTotalNumberOfBytes;
DWORD dwUsedDiskSpace = 0; //ULARGE_INTEGER uiTotalNumberOfFreeBytes;
ULARGE_INTEGER uiFreeBytesAvailableToCaller; //UINT un_ret = 0;
ULARGE_INTEGER uiTotalNumberOfBytes; //if ( p_disk_name == NULL )
ULARGE_INTEGER uiTotalNumberOfFreeBytes; // return FALSE;
UINT un_ret = 0; //len = _tcslen(p_disk_name);
if ( p_disk_name == NULL ) //if ( len > MAX_PATH )
return FALSE; //{
// len = MAX_PATH;
//}
len = _tcslen(p_disk_name); //memcpy(sz_root_path_name, p_disk_name, (size_t)len);
if ( len > MAX_PATH )
{
len = MAX_PATH;
}
memcpy(sz_root_path_name, p_disk_name, (size_t)len); //p = _tcsstr(sz_root_path_name, "\\");
//if ( p == NULL )
p = _tcsstr(sz_root_path_name, "\\"); //{
if ( p == NULL ) // if ( len == 2 )
{ // {
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;
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;
else //}
return FALSE; //if ( p != NULL )
} // *(p+1) = 0;
if ( p != NULL ) //un_ret = GetDriveType(sz_root_path_name);
*(p+1) = 0; //if ( un_ret == 0 || un_ret == 1)
un_ret = GetDriveType(sz_root_path_name); //{
if ( un_ret == 0 || un_ret == 1) // return FALSE;
{ //}
return FALSE; //
} //if(GetDiskFreeSpaceEx(sz_root_path_name, &uiFreeBytesAvailableToCaller, &uiTotalNumberOfBytes, &uiTotalNumberOfFreeBytes))
//{
if(GetDiskFreeSpaceEx(sz_root_path_name, &uiFreeBytesAvailableToCaller, &uiTotalNumberOfBytes, &uiTotalNumberOfFreeBytes)) // //dwTotalDiskSpace = (DWORD)(uiTotalNumberOfBytes.QuadPart / 1024 / 1024);
{ // dwFreeDiskSpace = (DWORD)(uiFreeBytesAvailableToCaller.QuadPart >> 20);
//dwTotalDiskSpace = (DWORD)(uiTotalNumberOfBytes.QuadPart / 1024 / 1024); // //dwUsedDiskSpace = dwTotalDiskSpace - dwFreeDiskSpace;
dwFreeDiskSpace = (DWORD)(uiFreeBytesAvailableToCaller.QuadPart >> 20); // if ( dwFreeDiskSpace < dw_min_bit_m )
//dwUsedDiskSpace = dwTotalDiskSpace - dwFreeDiskSpace; // {
if ( dwFreeDiskSpace < dw_min_bit_m ) // //ShowErrorStr(hWin, 1101);//1101=磁盘空间不足
{ // MyMessageBox( TEXT("磁盘分区可用空间不足"), 0, MB_ICONWARNING);
//ShowErrorStr(hWin, 1101);//1101=磁盘空间不足 // return FALSE;
MyMessageBox( TEXT("磁盘分区可用空间不足"), 0, MB_ICONWARNING); // }
return FALSE; //}
} //else
} //{
else // MyMessageBox( TEXT("磁盘分区可用空间不足"), 0, MB_ICONWARNING);
{ // //GetErrorMessage(NULL, 0, FALSE);
MyMessageBox( TEXT("磁盘分区可用空间不足"), 0, MB_ICONWARNING); // return FALSE;
//GetErrorMessage(NULL, 0, FALSE); //}
return FALSE;
}
//ShowErrorStr(hWin, 1101);//1101=磁盘空间不足 //ShowErrorStr(hWin, 1101);//1101=磁盘空间不足
//return FALSE; //return FALSE;
return TRUE; return TRUE;

Binary file not shown.

View File

@ -313,6 +313,11 @@ enum Scanner_Reg_Defs
SR_SET_SLEEPTIME, SR_SET_SLEEPTIME,
SR_GET_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_CUO_ERROR = 0x50,
SR_GET_DOU_ERROR, SR_GET_DOU_ERROR,
SR_GET_JAM_ERROR, SR_GET_JAM_ERROR,
@ -326,7 +331,11 @@ enum Scanner_Reg_Defs
SR_UPDATA_RECOVERY = 0x103, SR_UPDATA_RECOVERY = 0x103,
SR_UPDATA_REBOOT = 0x104, SR_UPDATA_REBOOT = 0x104,
SR_POWEROFF = 0x105, 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 enum Scanner_Cmd_Defs
@ -355,7 +364,8 @@ enum HGType
FPGA, FPGA,
V4L2, V4L2,
IMG, IMG,
STOPSCAN, AutoCorrect,
STOPSCAN
}; };
typedef union HG_ScanConfig typedef union HG_ScanConfig
@ -396,4 +406,5 @@ struct HGEIntInfo
{ {
HGType From; HGType From;
unsigned int Code; unsigned int Code;
unsigned int Img_Index;
}; };

View File

@ -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) void gscan3399::SetRatio(int tyepe, int ration)
{ {
scanner_write_reg(m_usb, tyepe == 0 ? SR_SET_H_RATIO : SR_SET_V_RATIO, ration); scanner_write_reg(m_usb, tyepe == 0 ? SR_SET_H_RATIO : SR_SET_V_RATIO, ration);
@ -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) bool gscan3399::Updata(std::string filename, std::function<void(long, long)> func)
{ {
std::ifstream updatefile; std::ifstream updatefile;
@ -369,25 +401,18 @@ CaptureParams gscan3399::GetFlatData()
void gscan3399::StartFlat(bool iscolor) void gscan3399::StartFlat(bool iscolor)
{ {
int color = iscolor ? 1 : 0; int color = iscolor ? 1 : 0;
scanner_write_reg(m_usb, SC_AUTOCORRECT, color); if (m_usbthread.get())
unsigned char buff[64] = { 0 };
StopWatch sw;
while (sw.elapsed_s() < 120)
{ {
auto lenght = m_usb->read_int(buff, sizeof(buff)); b_usbthread = false;
if (lenght == sizeof(buff)) if (m_usbthread->joinable())
{ {
HGEIntInfo info = *(HGEIntInfo*)&buff; m_usbthread->join();
if (info.From == 5 && info.Code == 6) m_usbthread.reset();
break;
} }
this_thread::sleep_for(chrono::milliseconds(30));
DoEvents();
} }
if(sw.elapsed_s()<120) b_usbthread = true;
MessageBox(NULL, TEXT(iscolor?"彩色自动校正已完成!":"灰度自动校正已完成!"), TEXT("提示"), MB_OK); m_usbthread.reset(new thread(&gscan3399::usb_run, this));
else scanner_write_reg(m_usb, SC_AUTOCORRECT, color);
MessageBox(NULL, TEXT(iscolor ? "彩色自动校正失败!" : "彩色自动校正失败!"), TEXT("提示"), MB_OK);
} }
void gscan3399::DevStateChange() void gscan3399::DevStateChange()
@ -404,7 +429,6 @@ void gscan3399::close()
{ {
if (m_usb.get()) if (m_usb.get())
m_usb->close(); m_usb->close();
} }
void gscan3399::GetExpose(int& Aside, int& Bside) 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); 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) void gscan3399::usbcallback(bool isleft, void* usrdata)
{ {
@ -471,7 +514,7 @@ void gscan3399::get_imgdata()
if (is_bulktransferring()) if (is_bulktransferring())
{ {
std::this_thread::sleep_for(std::chrono::milliseconds(1)); std::this_thread::sleep_for(std::chrono::milliseconds(1));
continue; return;
} }
imgremains++; imgremains++;
auto& buffi = im_data; auto& buffi = im_data;
@ -535,7 +578,9 @@ void gscan3399::imgproce(std::shared_ptr<std::vector<char>>& buffs)
p = localtime(&timp); p = localtime(&timp);
std::string filename = std::to_string(p->tm_hour) + "_" + std::to_string(p->tm_min) + "_" + std::to_string(p->tm_sec); 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; 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()) { if (!mat.empty()) {
cv::imwrite(path, mat); cv::imwrite(path, mat);
m_imagespath.Put(path); m_imagespath.Put(path);
@ -559,7 +604,7 @@ void gscan3399::usb_run()
} }
memset(buff, 0, sizeof(buff)); memset(buff, 0, sizeof(buff));
auto length = m_usb->read_int(buff, 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; HGEIntInfo info = *(HGEIntInfo*)&buff;
switch (info.From) switch (info.From)
@ -568,6 +613,19 @@ void gscan3399::usb_run()
if (is_runing()) if (is_runing())
get_imgdata(); get_imgdata();
break; 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: default:
break; break;
} }

View File

@ -16,6 +16,7 @@ public:
virtual void SetFWVersion(); virtual void SetFWVersion();
virtual std::string GetSerialNum(); virtual std::string GetSerialNum();
virtual void SetSerialNum(std::string serial); virtual void SetSerialNum(std::string serial);
virtual std::string GetKernelVersion();
virtual void SetRatio(int tyepe, int ration); virtual void SetRatio(int tyepe, int ration);
virtual void GetRatio(int type, int& ratio); virtual void GetRatio(int type, int& ratio);
virtual void Reboot(); virtual void Reboot();
@ -31,7 +32,8 @@ public:
virtual void run(); virtual void run();
virtual int get_decompress_pix_type(); virtual int get_decompress_pix_type();
virtual void set_decompress_pix_type(int pixtype); 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 bool Updata(std::string filename, std::function<void(long, long)> func);
virtual void SetIsDuplex(bool value); virtual void SetIsDuplex(bool value);
@ -64,6 +66,11 @@ public:
virtual void GetSleepTime(int& sleeptime); virtual void GetSleepTime(int& sleeptime);
virtual void SetSleepTime(int sleeptime); virtual void SetSleepTime(int sleeptime);
virtual void SetFlatCallback(std::function<void(std::string)> func);
virtual void GetSpeedMode(int& speedmode,bool getorset);
private: private:
static void usbcallback(bool isleft, void* usrdata); static void usbcallback(bool isleft, void* usrdata);
int read_data(void* data, int length, int timeout); int read_data(void* data, int length, int timeout);
@ -88,4 +95,5 @@ private:
BlockingQueue<std::string> m_imagespath; BlockingQueue<std::string> m_imagespath;
std::atomic_int imgremains; std::atomic_int imgremains;
HGScanConfig m_config; HGScanConfig m_config;
std::function<void(std::string)> m_flatcallback;
}; };

View File

@ -18,7 +18,7 @@ GScn_Drv::GScn_Drv()
{ {
//run(); //run();
XdPrint("Init GScn_Drv() \n"); XdPrint(L"Init GScn_Drv() \n");
m_bRun = false; m_bRun = false;
devState = DEV_STOP; devState = DEV_STOP;
@ -35,9 +35,9 @@ GScn_Drv::~GScn_Drv()
m_bRun = false; m_bRun = false;
devState = DEV_STOP; devState = DEV_STOP;
m_threadUsb.join(); 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() void GScn_Drv::InitMSGMap()
@ -82,7 +82,7 @@ void GScn_Drv::open(int vid, int pid,int index)
m_usb->open();//同时存在多个同种扫描设备时默认选取第一个vid pid匹配的设备 m_usb->open();//同时存在多个同种扫描设备时默认选取第一个vid pid匹配的设备
selectDeviceIndex=index; selectDeviceIndex=index;
m_scannerType=G300; 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() void GScn_Drv::reset()
{ {
while (!m_pImages.empty()) while (!m_pImages.empty())
@ -425,11 +442,13 @@ DWORD GScn_Drv::usbmain()
case DETECT_STAPLE: case DETECT_STAPLE:
case PAPER_SKEW: case PAPER_SKEW:
case HARDWARE_ERROR: case HARDWARE_ERROR:
case PC_SCAN_BUSY_or_ERROR: case PC_SCAN_BUSY_or_ERROR:{
MessageBox(h, ntcMsg[usbcb.u32_Data].c_str(), "Ìáʾ", MB_OK | MB_ICONERROR); USES_CONVERSION;
MessageBox(h, CString(ntcMsg[usbcb.u32_Data].c_str()), L"Ìáʾ", MB_OK | MB_ICONERROR);
devState = DEV_WRONG; devState = DEV_WRONG;
m_pImages.SetScanFlag(false); m_pImages.SetScanFlag(false);
break; break;
}
case NORMAL: case NORMAL:
break; break;
default: default:
@ -442,15 +461,15 @@ DWORD GScn_Drv::usbmain()
} }
catch (CMemoryException* e) catch (CMemoryException* e)
{ {
XdPrint("CMemoryException"); XdPrint(L"CMemoryException");
} }
catch (CFileException* e) catch (CFileException* e)
{ {
XdPrint("CFileException"); XdPrint(L"CFileException");
} }
catch (CException* e) catch (CException* e)
{ {
XdPrint("CException"); XdPrint(L"CException");
} }
return 0; return 0;
} }
@ -508,11 +527,11 @@ std::string GScn_Drv::GetFWVersion()
std::lock_guard<std::mutex> lck(m_imgLocker); std::lock_guard<std::mutex> lck(m_imgLocker);
std::string pFWVersion = " "; std::string pFWVersion = " ";
USBCB usbcb = { GET_FW_VERSION,0,0 }; USBCB usbcb = { GET_FW_VERSION,0,0 };
XdPrint("Get GetFWVersion"); XdPrint(L"Get GetFWVersion");
m_usb->write_bulk(&usbcb, sizeof(usbcb)); m_usb->write_bulk(&usbcb, sizeof(usbcb));
CString cslog; 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); m_usb->read_bulk(&pFWVersion[0], 10);
return pFWVersion; return pFWVersion;
@ -541,16 +560,21 @@ void GScn_Drv::SetSerialNum(std::string pvalue)
return; return;
} }
std::string GScn_Drv::GetKernelVersion()
{
return "un support";
}
int GScn_Drv::GetScanNum() int GScn_Drv::GetScanNum()
{ {
std::lock_guard<std::mutex> lck(m_imgLocker); std::lock_guard<std::mutex> lck(m_imgLocker);
USBCB usbcb = { GET_SCANN_NUM,0,4 }; USBCB usbcb = { GET_SCANN_NUM,0,4 };
DWORD transfer; DWORD transfer;
XdPrint("Get GetScanNum"); XdPrint(L"Get GetScanNum");
m_usb->write_bulk(&usbcb, sizeof(usbcb)); m_usb->write_bulk(&usbcb, sizeof(usbcb));
CString cslog; CString cslog;
cslog.Format("GetScanNum Read_Data %d",usbcb.u32_Data); cslog.Format(L"GetScanNum Read_Data %d",usbcb.u32_Data);
//WriteLog(cslog); //WriteLog(cslog);
m_usb->read_bulk(&usbcb, sizeof(usbcb)); m_usb->read_bulk(&usbcb, sizeof(usbcb));
@ -562,7 +586,7 @@ void GScn_Drv::ClrRollerNum()
std::lock_guard<std::mutex> lck(m_imgLocker); std::lock_guard<std::mutex> lck(m_imgLocker);
USBCB usbcb = { CLR_ROLLER_NUM,0,4 }; USBCB usbcb = { CLR_ROLLER_NUM,0,4 };
DWORD transfer; DWORD transfer;
XdPrint("Get ClrRollerNum"); XdPrint(L"Get ClrRollerNum");
m_usb->write_bulk(&usbcb, sizeof(usbcb)); m_usb->write_bulk(&usbcb, sizeof(usbcb));
return; return;
} }
@ -572,7 +596,7 @@ void GScn_Drv::ClrScanNum()
std::lock_guard<std::mutex> lck(m_imgLocker); std::lock_guard<std::mutex> lck(m_imgLocker);
USBCB usbcb = { CLR_SCAN_NUM,0,4 }; USBCB usbcb = { CLR_SCAN_NUM,0,4 };
DWORD transfer; DWORD transfer;
XdPrint("Get ClrScanNum"); XdPrint(L"Get ClrScanNum");
m_usb->write_bulk(&usbcb, sizeof(usbcb)); m_usb->write_bulk(&usbcb, sizeof(usbcb));
return; return;
} }
@ -648,7 +672,7 @@ std::string GScn_Drv::GetSerialNum()
str.resize(14); str.resize(14);
USBCB usbcb = { GET_SERIAL,0,14 }; USBCB usbcb = { GET_SERIAL,0,14 };
m_usb->write_bulk(&usbcb, sizeof(usbcb)); 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); m_usb->read_bulk(&str, 14);
return str; return str;
} }

View File

@ -27,6 +27,7 @@ public:
virtual void SetFWVersion(); virtual void SetFWVersion();
virtual std::string GetSerialNum(); virtual std::string GetSerialNum();
virtual void SetSerialNum(std::string serial); virtual void SetSerialNum(std::string serial);
virtual std::string GetKernelVersion();
virtual void SetRatio(int tyepe, int ration); virtual void SetRatio(int tyepe, int ration);
virtual void GetRatio(int type, int& ratio); virtual void GetRatio(int type, int& ratio);
virtual void Reboot(); virtual void Reboot();
@ -71,6 +72,12 @@ public:
virtual void GetSleepTime(int& sleeptime); virtual void GetSleepTime(int& sleeptime);
virtual void SetSleepTime(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: private:
volatile int devState; volatile int devState;
volatile bool m_bRun; volatile bool m_bRun;
@ -95,4 +102,5 @@ private:
DWORD usbmain(); DWORD usbmain();
void Pop_Image(); void Pop_Image();
HGScanConfig m_config; HGScanConfig m_config;
std::function<void(std::string)> m_flatcallback;
}; };

View File

@ -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