huago-corrcet_tools/HuaGoCorrect/HuaGoCorrectDlg.cpp

702 lines
17 KiB
C++
Raw Normal View History

2020-08-31 08:08:50 +00:00
// HuaGoCorrectDlg.cpp : ʵ<><CAB5><EFBFBD>ļ<EFBFBD>
//
#include "stdafx.h"
#include "HuaGoCorrect.h"
#include "HuaGoCorrectDlg.h"
#include "afxdialogex.h"
#include "scn_config.h"
#include <numeric>
#include "imageprocess.h"
#include <iostream>
#include <fstream>
#include "gscan3399.h"
#include "gscn_drv.h"
2020-08-31 08:08:50 +00:00
using namespace std;
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#define N_TIME_SEC 1000 //һ<><D2BB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define N_TIME_SHOW 300 //0.2sˢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
2020-08-31 08:08:50 +00:00
#define N_TIMER_SEC 1
#define N_TIMER_SHOW 2
// <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3>򡰹<EFBFBD><F2A1B0B9>ڡ<EFBFBD><DAA1>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD> CAboutDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
class CAboutDlg : public CDialogEx
{
public:
CAboutDlg();
// <20>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2020-08-31 08:08:50 +00:00
enum { IDD = IDD_ABOUTBOX };
protected:
2020-08-31 08:08:50 +00:00
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧<><D6A7>
// ʵ<><CAB5>
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()
// CHuaGoCorrectDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
CHuaGoCorrectDlg::CHuaGoCorrectDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CHuaGoCorrectDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
2020-08-31 08:08:50 +00:00
papercount = 0;
ls_flat = FALSE;
m_bExit = FALSE;
m_iPicIndex = 0;
m_iflatIndex = -2;
m_iDpiIndex = 0;
m_iColorIndex = 0;
b_review = FALSE;
b_suspend = FALSE;
2020-08-31 08:08:50 +00:00
}
void CHuaGoCorrectDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_TAB1, m_tab);
DDX_Control(pDX, IDC_dpi_comboBox, m_ComboxDpi);
DDX_Control(pDX, IDC_color_comboBox, m_ComboxColor);
DDX_Control(pDX, IDC_lsFpgaFlat, m_A4Scanner);
DDX_Control(pDX, IDC_CMB_USBS, m_Usbs);
2020-08-31 08:08:50 +00:00
DDX_Text(pDX, IDC_EDIT_HOUR, s_hour);
DDX_Text(pDX, IDC_EDIT_MINUTE, s_minute);
DDX_Text(pDX, IDC_EDIT_SECOND, s_second);
}
BEGIN_MESSAGE_MAP(CHuaGoCorrectDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CHuaGoCorrectDlg::OnTcnSelChangeTab)
ON_BN_CLICKED(IDC_CheckParamSet, &CHuaGoCorrectDlg::OnBnClickedCheckparamset)
ON_BN_CLICKED(IDC_CheckParamRead, &CHuaGoCorrectDlg::OnBnClickedCheckparamread)
ON_BN_CLICKED(IDC_BTN_FLAT, &CHuaGoCorrectDlg::OnBnClickedBtnFlat)
ON_CBN_SELCHANGE(IDC_dpi_comboBox, &CHuaGoCorrectDlg::OnCbnSelChangeDpi)
ON_CBN_SELCHANGE(IDC_color_comboBox, &CHuaGoCorrectDlg::OnCbnSelChangeColor)
2021-08-17 01:07:55 +00:00
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)
ON_CBN_SELCHANGE(IDC_CMB_USBS, &CHuaGoCorrectDlg::OnCbnSelchangeCmbUsbs)
ON_BN_CLICKED(IDC_BTNSTART, &CHuaGoCorrectDlg::OnBnClickedBtnstart)
ON_BN_CLICKED(IDC_BTNSTOP, &CHuaGoCorrectDlg::OnBnClickedBtnstop)
2020-08-31 08:08:50 +00:00
END_MESSAGE_MAP()
// CHuaGoCorrectDlg <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL CHuaGoCorrectDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...<2E><><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ϵͳ<CFB5>˵<EFBFBD><CBB5>С<EFBFBD>
// IDM_ABOUTBOX <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>Χ<EEB7B6>ڡ<EFBFBD>
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// <20><><EFBFBD>ô˶Ի<CBB6><D4BB><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EAA1A3>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2>ǶԻ<C7B6><D4BB><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD>Զ<EFBFBD>
// ִ<>д˲<D0B4><CBB2><EFBFBD>
SetIcon(m_hIcon, TRUE); // <20><><EFBFBD>ô<EFBFBD>ͼ<EFBFBD><CDBC>
SetIcon(m_hIcon, FALSE); // <20><><EFBFBD><EFBFBD>Сͼ<D0A1><CDBC>
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_tab.InsertItem(0, _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
m_tab.InsertItem(1, _T("<EFBFBD><EFBFBD>ʾͼ<EFBFBD><EFBFBD>"));
m_tab.InsertItem(2, _T("CIS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
2020-08-31 08:08:50 +00:00
m_A4Dlg.Create(IDD_A4_DIALOG, &m_tab); // <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD>ǩҳ
m_VisonDlg.Create(IDD_VISION_DIALOG, &m_tab); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǩҳ
m_A3dlg.Create(IDD_A3_DIALOG, &m_tab);
m_A4Dlg.SetParent(this);
m_VisonDlg.SetParent(this);
m_A3dlg.SetParent(this);
auto callback = [this](bool stoped, int num) {
if (stoped)
{
KillTimer(N_TIMER_SEC);
KillTimer(N_TIMER_SHOW);
}
else
{
CString str;
2021-08-17 01:07:55 +00:00
str.Format(L"%d", num);
SetDlgItemText(IDC_STATIC_NUM, str);
}
};
m_VisonDlg.SetCallBack(callback);
2020-08-31 08:08:50 +00:00
m_tab.GetClientRect(&tabRect); // <20><>ȡ<EFBFBD><C8A1>ǩ<EFBFBD>ؼ<EFBFBD><D8BC>ͻ<EFBFBD><CDBB><EFBFBD>Rect
// <20><><EFBFBD><EFBFBD>tabRect<63><74>ʹ<EFBFBD><EFBFBD>Ƿ<EFBFBD>Χ<EFBFBD>ʺϷ<CABA><CFB7>ñ<EFBFBD>ǩҳ
2021-08-17 01:07:55 +00:00
tabRect.left += 10;
tabRect.right -= 1;
tabRect.top += 35;
tabRect.bottom -= 1;
2020-08-31 08:08:50 +00:00
// <20><><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD>õ<EFBFBD>tabRect<63><74><EFBFBD><EFBFBD>m_A3Dlg<6C>ӶԻ<D3B6><D4BB>򣬲<EFBFBD><F2A3ACB2><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʾ
m_A3dlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
2020-08-31 08:08:50 +00:00
// <20><><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD>õ<EFBFBD>tabRect<63><74><EFBFBD><EFBFBD>m_A4Dlg<6C>ӶԻ<D3B6><D4BB>򣬲<EFBFBD><F2A3ACB2><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
m_A4Dlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
2020-08-31 08:08:50 +00:00
// <20><><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD>õ<EFBFBD>tabRect<63><74><EFBFBD><EFBFBD>m_VisonDlg<6C>ӶԻ<D3B6><D4BB>򣬲<EFBFBD><F2A3ACB2><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
m_VisonDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
2020-08-31 08:08:50 +00:00
m_ComboxDpi.InsertString(0, _T("300"));
2020-08-31 08:08:50 +00:00
m_ComboxDpi.InsertString(1, _T("200"));
m_ComboxDpi.InsertString(2, _T("150"));
m_ComboxDpi.SetCurSel(1);
m_ComboxColor.InsertString(0, _T("gray"));
m_ComboxColor.InsertString(1, _T("color"));
m_ComboxColor.SetCurSel(1);
2020-08-31 08:08:50 +00:00
m_A4Scanner.SetCheck(0);
2020-08-31 08:08:50 +00:00
n_hour = 0;
n_minute = 0;
n_second = 0;
s_hour = "00";
s_minute = "00";
s_second = "00";
UpdateData(FALSE);
bool ret = RefreshUSBList();
if (ret)
{
m_Usbs.SetCurSel(0);//Ĭ<><C4AC>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>
OnCbnSelchangeCmbUsbs();
}
m_tab.SetCurSel(0);
RefreshTabChange();
2020-08-31 08:08:50 +00:00
return TRUE; // <20><><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD> TRUE
}
void CHuaGoCorrectDlg::EnableUIItem(bool enbale)
{
GetDlgItem(IDC_CMB_USBS)->EnableWindow(enbale);
GetDlgItem(IDC_BTNSTART)->EnableWindow(enbale);
GetDlgItem(IDC_BTNSTOP)->EnableWindow(enbale);
GetDlgItem(IDC_CheckParamSet)->EnableWindow(enbale);
GetDlgItem(IDC_CheckParamRead)->EnableWindow(enbale);
GetDlgItem(IDC_BTN_FLAT)->EnableWindow(enbale);
GetDlgItem(IDC_BTN_SELECTFILE)->EnableWindow(enbale);
GetDlgItem(IDC_BTN_UPDATE)->EnableWindow(enbale);
m_A4Dlg.EnableItem(enbale);
}
bool CHuaGoCorrectDlg::RefreshUSBList()
{
auto ret = UsbScan_List::find_all_usb();
if (m_Usbs.GetCount() > 0)
m_Usbs.ResetContent();
if (ret.size() <= 0)
{
EnableUIItem(false);
MessageBox(TEXT("δ<EFBFBD>ҵ<EFBFBD>ɨ<EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD>"), TEXT("<EFBFBD><EFBFBD>ʾ"), MB_OK | MB_ICONWARNING);
return false;
}
else
{
EnableUIItem(true);
auto info = ret.begin();
int i = 0;
while (info != ret.end())
{
CString strinfo;
2021-08-17 01:07:55 +00:00
strinfo.Format(L"vid0x%x pid0X%x", info->vid, info->pid);
m_Usbs.InsertString(i, strinfo);
info++;
i++;
}
m_Usbs.SetCurSel(0);
OnCbnSelchangeCmbUsbs();
return true;
}
}
2020-08-31 08:08:50 +00:00
void CHuaGoCorrectDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƹ<EFBFBD>ͼ<EFBFBD><EFBFBD><EAA1A3><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ĵ<EFBFBD>/<2F><>ͼģ<CDBC>͵<EFBFBD> MFC Ӧ<>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD>
// <20><EFBFBD>ɿ<EFBFBD><C9BF><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ɡ<EFBFBD>
void CHuaGoCorrectDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // <20><><EFBFBD>ڻ<EFBFBD><DABB>Ƶ<EFBFBD><C6B5><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// ʹͼ<CAB9><CDBC><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD>
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
2020-08-31 08:08:50 +00:00
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}
//<2F><><EFBFBD>û<EFBFBD><C3BB>϶<EFBFBD><CFB6><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱϵͳ<CFB5><CDB3><EFBFBD>ô˺<C3B4><CBBA><EFBFBD>ȡ<EFBFBD>ù<EFBFBD><C3B9><EFBFBD>
//<2F><>ʾ<EFBFBD><CABE>
HCURSOR CHuaGoCorrectDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CHuaGoCorrectDlg::OnTcnSelChangeTab(NMHDR* pNMHDR, LRESULT* pResult)
2020-08-31 08:08:50 +00:00
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*pResult = 0;
RefreshTabChange();
2020-08-31 08:08:50 +00:00
}
void CHuaGoCorrectDlg::RefreshTabChange()
{
CRect tabRect; // <20><>ǩ<EFBFBD>ؼ<EFBFBD><D8BC>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>Rect
// <20><>ȡ<EFBFBD><C8A1>ǩ<EFBFBD>ؼ<EFBFBD><D8BC>ͻ<EFBFBD><CDBB><EFBFBD>Rect<63><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʺϷ<CABA><CFB7>ñ<EFBFBD>ǩҳ
m_tab.GetClientRect(&tabRect);
2021-08-17 01:07:55 +00:00
tabRect.left += 15;
tabRect.right += 20;
tabRect.top += 20;
2020-08-31 08:08:50 +00:00
tabRect.bottom -= 1;
switch (m_tab.GetCurSel())
2020-08-31 08:08:50 +00:00
{
case 0:
m_A4Dlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
m_VisonDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
m_A3dlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
2020-08-31 08:08:50 +00:00
break;
case 1:
2020-08-31 08:08:50 +00:00
m_A4Dlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
m_VisonDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
m_A3dlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
2020-08-31 08:08:50 +00:00
break;
case 2:
2020-08-31 08:08:50 +00:00
m_A4Dlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
m_VisonDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
m_A3dlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
2020-08-31 08:08:50 +00:00
break;
default:
break;
}
}
void CHuaGoCorrectDlg::Scan()
{
HGScanConfig config = { 0 };
config.g200params.dpi = 1;//only support 200DPI
config.g200params.paper = 0;
2021-08-17 01:07:55 +00:00
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;
config.g200params.iscorrect_mode = 1;//У<><D0A3>ģʽ
m_drv->Config_Scanner(config);
this_thread::sleep_for(std::chrono::milliseconds(1000));
2020-08-31 08:08:50 +00:00
m_drv->Scanner_StartScan(-1);
m_drv->run();
2020-08-31 08:08:50 +00:00
2021-08-17 01:07:55 +00:00
if (b_suspend)
KillTimer(N_TIMER_SEC);
2020-08-31 08:08:50 +00:00
2021-08-17 01:07:55 +00:00
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);
2020-08-31 08:08:50 +00:00
}
void CHuaGoCorrectDlg::OnBnClickedCheckparamset()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!m_drv->IsConnected())
{
2021-08-17 01:07:55 +00:00
MessageBox(TEXT("ɨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>"));
2020-08-31 08:08:50 +00:00
return;
}
m_A4Dlg.SendCorrectParam();
2020-08-31 08:08:50 +00:00
}
void CHuaGoCorrectDlg::OnBnClickedCheckparamread()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!m_drv->IsConnected())
{
2021-08-17 01:07:55 +00:00
MessageBox(TEXT("ɨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>"));
2020-08-31 08:08:50 +00:00
return;
}
m_tab.SetCurSel(0);
auto read = m_drv->GetFlatData();
m_A4Dlg.updateA4Config(read);
2020-08-31 08:08:50 +00:00
}
void CHuaGoCorrectDlg::OnBnClickedBtnFlat()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_iflatIndex = -2;
if (!m_drv->IsConnected())
{
2021-08-17 01:07:55 +00:00
MessageBox(TEXT("ɨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>"));
2020-08-31 08:08:50 +00:00
return;
}
if (GetDlgItem(IDC_CKBCORRECTMODE)->IsWindowVisible())
2020-08-31 08:08:50 +00:00
{
2021-08-17 01:07:55 +00:00
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());
2021-08-17 01:07:55 +00:00
2020-08-31 08:08:50 +00:00
}
else
m_drv->StartFlat(true);//<2F><>ɫ
}
2020-08-31 08:08:50 +00:00
void CHuaGoCorrectDlg::WriteLog(CString msg)
{
if (!msg.IsEmpty())
{
2021-08-17 01:07:55 +00:00
//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);
//}
2020-08-31 08:08:50 +00:00
}
}
void CHuaGoCorrectDlg::OnCancel()
2020-08-31 08:08:50 +00:00
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>ר<EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>
2021-08-17 01:07:55 +00:00
if (IDOK != AfxMessageBox(L"ȷ<EFBFBD><EFBFBD>Ҫ<EFBFBD>˳<EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_ICONQUESTION | MB_OKCANCEL))
2020-08-31 08:08:50 +00:00
{
return;
}
m_bExit = TRUE;
CDialogEx::OnCancel();
2020-08-31 08:08:50 +00:00
}
void CHuaGoCorrectDlg::InitButton()
2020-08-31 08:08:50 +00:00
{
((CButton*)GetDlgItem(IDC_CheckParamSet))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_CheckParamRead))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_BTN_FLAT))->EnableWindow(FALSE);
}
2020-08-31 08:08:50 +00:00
void CHuaGoCorrectDlg::OnCbnSelChangeDpi()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_iDpiIndex = m_ComboxDpi.GetCurSel();
2020-08-31 08:08:50 +00:00
}
void CHuaGoCorrectDlg::OnCbnSelChangeColor()
2020-08-31 08:08:50 +00:00
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_iColorIndex = m_ComboxColor.GetCurSel();
//m_drv->set_decompress_pix_type(0 == m_iColorIndex ? TWPT_GRAY : TWPT_RGB);
}
2020-08-31 08:08:50 +00:00
void CHuaGoCorrectDlg::OnBnClickedStopScan()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
2020-08-31 08:08:50 +00:00
2021-08-17 01:07:55 +00:00
void CHuaGoCorrectDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
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);
}
2020-08-31 08:08:50 +00:00
/// <summary>
/// ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
/// </summary>
void CHuaGoCorrectDlg::OnBnClickedBtnSelectfile()
{
CProgressCtrl* prb = (CProgressCtrl*)GetDlgItem(IDC_PRB_UPDATE);
prb->SetRange(0, 100);
CFileDialog ofd(TRUE,
_T(".zip"),
NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
_TEXT("Upda Files (*.zip)|*.zip||)"),
NULL);
if (IDOK == ofd.DoModal())
{
2021-08-17 01:07:55 +00:00
USES_CONVERSION;
updateFilePath = ofd.GetPathName();
2021-08-17 01:07:55 +00:00
SetDlgItemText(IDC_LB_FILEPATH, updateFilePath);
}
2020-08-31 08:08:50 +00:00
}
/// <summary>
/// <20><>ʼϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
/// </summary>
void CHuaGoCorrectDlg::OnBnClickedBtnUpdate()
2020-08-31 08:08:50 +00:00
{
if (m_updateThread.joinable())
2020-08-31 08:08:50 +00:00
{
m_updateThread.join();
2020-08-31 08:08:50 +00:00
}
m_updateThread = std::thread(&CHuaGoCorrectDlg::updatefunc, this);
2020-08-31 08:08:50 +00:00
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8>USB
/// </summary>
void CHuaGoCorrectDlg::OnBnClickedBtnRefresh()
2020-08-31 08:08:50 +00:00
{
RefreshUSBList();
2020-08-31 08:08:50 +00:00
}
/// <summary>
/// USB<53>б<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>
/// </summary>
void CHuaGoCorrectDlg::OnCbnSelchangeCmbUsbs()
2020-08-31 08:08:50 +00:00
{
int ret = m_Usbs.GetCurSel();
if (ret >= 0)
2020-08-31 08:08:50 +00:00
{
if (m_drv.get() && m_drv->IsConnected())
m_drv->close();
2020-08-31 08:08:50 +00:00
auto usbs = UsbScan_List::find_all_usb();
if (usbs.size() > 0)
{
int vid, pid;
int j = 0;
for (auto i = usbs.begin(); i != usbs.end(); i++, j++)
{
if (j == ret)
{
if ((i->vid == 0x3072 && i->pid == 0x0139) || (i->vid == 0x3072 && i->pid == 0x0239))
m_drv.reset(new gscan3399());
else
{
m_drv.reset(new GScn_Drv());
GetDlgItem(IDC_CKBUVMODEL)->EnableWindow(i->vid == 0x3072 && i->pid == 0x0300);
}
m_drv->open(i->vid, i->pid, 0);
2021-08-17 01:07:55 +00:00
USES_CONVERSION;
std::string savepath(W2A(GetMainApp()->path.GetBuffer()));
m_drv->SetPath(savepath);
if (i->pid & 0x39)
{
GetDlgItem(IDC_CKBCORRECTMODE)->EnableWindow(TRUE);
m_A3dlg.GetDlgItem(IDC_STATICUVSP)->ShowWindow(SW_HIDE);
m_A3dlg.GetDlgItem(IDC_LBGUVSP)->ShowWindow(SW_HIDE);
m_A3dlg.GetDlgItem(IDC_BTNGETUVSP)->ShowWindow(SW_HIDE);
m_A3dlg.GetDlgItem(IDC_BTNSETUVSP)->ShowWindow(SW_HIDE);
}
else
{
GetDlgItem(IDC_CKBCORRECTMODE)->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_CKBCORRECTMODE))->SetCheck(FALSE);
m_A3dlg.GetDlgItem(IDC_STATICUVSP)->ShowWindow(SW_SHOW);
m_A3dlg.GetDlgItem(IDC_LBGUVSP)->ShowWindow(SW_SHOW);
m_A3dlg.GetDlgItem(IDC_BTNGETUVSP)->ShowWindow(SW_SHOW);
m_A3dlg.GetDlgItem(IDC_BTNSETUVSP)->ShowWindow(SW_SHOW);
}
2020-08-31 08:08:50 +00:00
if (!m_drv->IsConnected())
{
MessageBox(TEXT("open current select usb scanner failed"), TEXT("Notify"), MB_OK | MB_ICONINFORMATION);
}
2021-08-17 01:07:55 +00:00
}
}
}
2020-08-31 08:08:50 +00:00
}
}
/// <summary>
/// <20><>ʼɨ<CABC><C9A8>
/// </summary>
void CHuaGoCorrectDlg::OnBnClickedBtnstart()
2020-08-31 08:08:50 +00:00
{
m_iPicIndex = 0;
2020-08-31 08:08:50 +00:00
if (!m_drv->IsConnected())
{
2021-08-17 01:07:55 +00:00
MessageBox(L"ɨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>");
2020-08-31 08:08:50 +00:00
return;
}
m_iColorIndex = m_ComboxColor.GetCurSel();
2021-08-17 01:07:55 +00:00
GetDlgItem(IDC_STATIC_NUM)->SetWindowText(L"0");
2020-08-31 08:08:50 +00:00
m_drv->DevStateChange();
m_drv->reset();
Scan();
papercount = 0;
m_tab.SetCurSel(1);
RefreshTabChange();
m_VisonDlg.SetEnableShow(true);
2020-08-31 08:08:50 +00:00
}
/// <summary>
/// ֹͣɨ<D6B9><C9A8>
/// </summary>
void CHuaGoCorrectDlg::OnBnClickedBtnstop()
2020-08-31 08:08:50 +00:00
{
b_suspend = !b_suspend;
2020-08-31 08:08:50 +00:00
if (b_suspend)
{
KillTimer(N_TIMER_SEC);
KillTimer(N_TIMER_SHOW);
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;
2021-08-17 01:07:55 +00:00
s_hour.Format(L"%d%d", h1, h2);
s_minute.Format(L"%d%d", m1, m2);
s_second.Format(L"%d%d", s1, s2);
2020-08-31 08:08:50 +00:00
UpdateData(FALSE);
}
m_drv->Stop_scan();
}
void CHuaGoCorrectDlg::updatefunc()
2020-08-31 08:08:50 +00:00
{
CProgressCtrl* prb = (CProgressCtrl*)GetDlgItem(IDC_PRB_UPDATE);
2021-08-17 01:07:55 +00:00
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)
2020-08-31 08:08:50 +00:00
{
MessageBox(TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>"), TEXT("<EFBFBD><EFBFBD>ʾ"), MB_OK);
2020-08-31 08:08:50 +00:00
}
else
{
MessageBox(TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>"), TEXT("<EFBFBD><EFBFBD>ʾ"), MB_OK | MB_ICONINFORMATION);
}
2020-08-31 08:08:50 +00:00
}