3288 400 敦南cis功能适配

This commit is contained in:
lovelyyoung 2022-01-26 17:05:59 +08:00
parent 21b4849332
commit a285d89660
18 changed files with 279 additions and 118 deletions

View File

@ -46,6 +46,7 @@ BEGIN_MESSAGE_MAP(CA3, CDialog)
ON_BN_CLICKED(IDC_BTNSETSPEED, &CA3::OnBnClickedBtnsetspeed)
ON_BN_CLICKED(IDC_BTNGETSPEED, &CA3::OnBnClickedBtngetspeed)
ON_BN_CLICKED(IDC_BTNGETIP, &CA3::OnBnClickedBtngetip)
ON_BN_CLICKED(IDC_BTNGETSYSINFO, &CA3::OnBnClickedBtnGetSysInfo)
END_MESSAGE_MAP()
@ -363,3 +364,13 @@ void CA3::OnBnClickedBtngetip()
SetDlgItemText(IDC_LBIPADDR, vs);
}
}
void CA3::OnBnClickedBtnGetSysInfo()
{
auto parent = (CHuaGoCorrectDlg*)GetParent();
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
std::string version = parent->m_drv->GetSysInfo();
CString vs(version.c_str());
MessageBox(vs, TEXT("ϵͳÐÅÏ¢"),MB_OK);
}
}

View File

@ -28,7 +28,7 @@ public:
afx_msg void OnBnClickedBtnsetuvsp();
afx_msg void OnBnClickedBtngetcolorsp();
afx_msg void OnBnClickedBtnsetcolorsp();
afx_msg void OnBnClickedBtnGetSysInfo();
private:
void OnGetOrSetSp(bool get, int type);
public:

View File

@ -265,7 +265,8 @@ void CA4::OnBnClickedBtnGethor()
auto parent = (CHuaGoCorrectDlg*)GetParent();
int ratio = 0;
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
parent->m_drv->GetRatio(0, ratio);
int dpi = parent->GetSelectDPIIndex() == 0 ? 1 : (parent->GetSelectDPIIndex() == 1 ? 2 : 3);
parent->m_drv->GetRatio(0, ratio, dpi);
float f_ratio = *(float*)∶
CString str;
str.Format(L"%.4f", f_ratio);
@ -279,7 +280,8 @@ void CA4::OnBnClickedBtnGetver()
auto parent = (CHuaGoCorrectDlg*)GetParent();
int ratio = 0;
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
parent->m_drv->GetRatio(1, ratio);
int dpi = parent->GetSelectDPIIndex() == 0 ? 1 : (parent->GetSelectDPIIndex() == 1 ? 2 : 3);
parent->m_drv->GetRatio(1, ratio, dpi);
float f_ratio = *(float*)∶
CString str;
str.Format(L"%.4f", f_ratio);
@ -292,13 +294,14 @@ void CA4::OnBnClickedBtnSethor()
{
auto parent = (CHuaGoCorrectDlg*)GetParent();
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
int dpi = parent->GetSelectDPIIndex() == 0 ? 1 : (parent->GetSelectDPIIndex() == 1 ? 2 : 3);
CString str;
GetDlgItemText(IDC_tbxHOR, str);
USES_CONVERSION;
std::string s_str(W2A(str));
float f_value = atof(s_str.c_str());
int value = *(int*)&f_value;
parent->m_drv->SetRatio(0, value);
parent->m_drv->SetRatio(0, value, dpi);
}
}
@ -307,13 +310,14 @@ void CA4::OnBnClickedBtnSetver()
{
auto parent = (CHuaGoCorrectDlg*)GetParent();
if (parent->m_drv.get() && parent->m_drv->IsConnected()) {
int dpi = parent->GetSelectDPIIndex() == 0 ? 1 : (parent->GetSelectDPIIndex() == 1 ? 2 : 3);
CString str;
GetDlgItemText(IDC_tbxVER, str);
USES_CONVERSION;
std::string s_str(W2A(str));
float f_value = atof(s_str.c_str());
int value = *(int*)&f_value;
parent->m_drv->SetRatio(1, value);
parent->m_drv->SetRatio(1, value, dpi);
}
}

Binary file not shown.

Binary file not shown.

View File

@ -234,6 +234,7 @@ opencv_imgproc2410d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ClInclude Include="MutexEx.h" />
<ClInclude Include="PublicFunc.h" />
<ClInclude Include="Resource.h" />
<ClInclude Include="ScannerTypeConfig.h" />
<ClInclude Include="scn_config.h" />
<ClInclude Include="scn_usb.h" />
<ClInclude Include="stdafx.h" />
@ -255,6 +256,7 @@ opencv_imgproc2410d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ClCompile Include="jpeglib.cpp" />
<ClCompile Include="JsonConfig.cpp" />
<ClCompile Include="PublicFunc.cpp" />
<ClCompile Include="ScannerTypeConfig.cpp" />
<ClCompile Include="scn_config.cpp" />
<ClCompile Include="scn_usb.cpp" />
<ClCompile Include="stdafx.cpp">

View File

@ -123,6 +123,9 @@
<ClInclude Include="vendorconfig.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="ScannerTypeConfig.h">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="HuaGoCorrect.cpp">
@ -176,6 +179,9 @@
<ClCompile Include="vendorconfig.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="ScannerTypeConfig.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="HuaGoCorrect.rc">

View File

@ -177,10 +177,10 @@ BOOL CHuaGoCorrectDlg::OnInitDialog()
// 根据调整好的tabRect放置m_VisonDlg子对话框并设置为隐藏
m_VisonDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
m_ComboxDpi.InsertString(0, _T("300"));
m_ComboxDpi.InsertString(1, _T("200"));
m_ComboxDpi.InsertString(2, _T("150"));
m_ComboxDpi.SetCurSel(1);
m_ComboxDpi.InsertString(0, _T("200"));
m_ComboxDpi.InsertString(1, _T("300"));
m_ComboxDpi.InsertString(2, _T("600"));
m_ComboxDpi.SetCurSel(0);
m_ComboxColor.InsertString(0, _T("gray"));
m_ComboxColor.InsertString(1, _T("color"));
@ -345,8 +345,8 @@ void CHuaGoCorrectDlg::Scan()
m_drv->PID == 0x8739 ||
m_drv->PID == 0x8629)
{
config.g200params.dpi = 1;//only support 200DPI
config.g200params.paper = 2;
config.g200params.dpi = m_iDpiIndex==0?1:(m_iDpiIndex==1?2:3);//only support 200DPI
config.g200params.paper = 16;
config.g200params.pc_correct = ((CButton*)GetDlgItem(IDC_CKBORGINIMG))->GetCheck();
config.g200params.color = m_iColorIndex == 1 ? 1 : 0;
config.g200params.double_feed_enbale = TRUE;
@ -355,7 +355,7 @@ void CHuaGoCorrectDlg::Scan()
}
else
{
config.g400params.dpi = 1;//only support 200DPI
config.g400params.dpi = m_iDpiIndex == 0 ? 1 : (m_iDpiIndex == 1 ? 2 : 3);//only support 200DPI ;// 1;//only support 200DPI
config.g400params.pageSize = 0;
config.g400params.isCorrect = !((CButton*)GetDlgItem(IDC_CKBORGINIMG))->GetCheck();
config.g400params.isColor = m_iColorIndex == 1 ? 1 : 0;

View File

@ -110,6 +110,9 @@ public:
afx_msg void OnCbnSelchangeCmbUsbs();
afx_msg void OnBnClickedBtnstart();
afx_msg void OnBnClickedBtnstop();
int GetSelectDPIIndex() {
return m_iDpiIndex;
}
private:
CString updateFilePath;
std::thread m_updateThread;

View File

@ -18,8 +18,8 @@ public:
virtual std::string GetMbVersion() = 0;
virtual std::string GetIpAddr() = 0;
virtual std::string GetKernelVersion() =0;
virtual void SetRatio(int tyepe, int ration) = 0;
virtual void GetRatio(int type, int& ratio) = 0;
virtual void SetRatio(int tyepe, int ration,int dpi=0) = 0;
virtual void GetRatio(int type, int& ratio,int dpi=0) = 0;
virtual void Reboot(bool loader=false) = 0;
virtual void PowerOff() = 0;
virtual bool is_scan() = 0;
@ -54,6 +54,7 @@ public:
virtual void SetFlatCallback(std::function<void(std::string)> func) = 0;
virtual void GetSpeedMode(int& speedmode,bool get) = 0 ;
virtual void GetOrSetVIDPID(int& value, bool get) = 0;
virtual std::string GetSysInfo() = 0;
void SetPath(std::string csFilePath)
{
csPath = csFilePath;

Binary file not shown.

View File

@ -0,0 +1,61 @@
#include "stdafx.h"
#include "ScannerTypeConfig.h"
#include "json.hpp"
#include <io.h>
#include <iostream>
#include <fstream>
ScannerTypeConfig::ScannerTypeConfig()
{
if (_access("scannerconfig.json", 0) != 0)
{
json j = json::array();
{
for (size_t i = 0; i < m_supscanner.size(); i++)
{
json t_j;
auto tsup = m_supscanner[i];
to_json(t_j, tsup);
j.push_back(t_j);
}
}
std::ofstream ofs("scannerconfig.json");
//ofs << std::setw(4) << js << std::endl;
}
}
ScannerTypeConfig::~ScannerTypeConfig()
{
}
std::vector<SupScanner> ScannerTypeConfig::GetSupScanners()
{
return std::vector<SupScanner>();
}
void ScannerTypeConfig::AddSupScanner(SupScanner add)
{
}
void ScannerTypeConfig::initconfig()
{
}
void ScannerTypeConfig::from_json(json& j, SupScanner& sup)
{
j.at("VID").get_to(sup.VID);
j.at("PID").get_to(sup.PID);
j.at("ScannerType").get_to(sup.ScannerType);
}
void ScannerTypeConfig::to_json(json& j, SupScanner& sup)
{
j = json{
{"VID",sup.VID},
{"PID",sup.PID},
{"ScannerType",sup.ScannerType}
};
}

View File

@ -0,0 +1,29 @@
#pragma once
#include "commondef.h"
#include <map>
#include <vector>
#include "json.hpp"
using json = nlohmann::json;
class ScannerTypeConfig
{
public:
ScannerTypeConfig();
~ScannerTypeConfig();
std::vector<SupScanner> GetSupScanners();
void AddSupScanner(SupScanner add);
private:
void initconfig();
void from_json(json& j, SupScanner& sup);
void to_json(json& j, SupScanner& sup);
const std::vector< SupScanner> m_supscanner = {
{0x064b,0x7823,ScannerType::S_G139},
{0x3072,0x0139,ScannerType::S_G139},
{0x3072,0x0239,ScannerType::S_G239},
{0x3072,0x0300,ScannerType::S_G300_3288},
{0x3072,0x0300,ScannerType::S_G300UV_3288},
{0x3072,0x0339,ScannerType::S_G300_3399},
{0x3072,0x0400,ScannerType::S_G400_3288},
{0x3072,0x0439,ScannerType::S_G400_3399},
};
};

View File

@ -167,7 +167,9 @@ enum tagUsbKeyWords :unsigned int
GET_UV_EXPOSA = 0x100,
GET_UV_EXPOSB = 0x101,
SET_UV_EXPOSA = 0x102,
SET_UV_EXPOSB = 0x103
SET_UV_EXPOSB = 0x103,
GETSYSINFO_LEN = 0x200,
GETSYSINFO = 0x201
};
typedef enum tagUsbKeyWords UsbKeyWords, * PUsbKeyWords;
@ -416,4 +418,22 @@ struct HGEIntInfo
HGType From;
unsigned int Code;
unsigned int Img_Index;
};
};
enum class ScannerType
{
S_G139,
S_G239,
S_G300_3288,
S_G300UV_3288,
S_G300_3399,
S_G400_3288,
S_G400_3399
};
typedef struct {
unsigned short VID;
unsigned short PID;
ScannerType ScannerType;
}SupScanner;

View File

@ -197,12 +197,12 @@ std::string gscan3399::GetKernelVersion()
return version;
}
void gscan3399::SetRatio(int tyepe, int ration)
void gscan3399::SetRatio(int tyepe, int ration,int dpi)
{
scanner_write_reg(m_usb, tyepe == 0 ? SR_SET_H_RATIO : SR_SET_V_RATIO, ration);
}
void gscan3399::GetRatio(int type, int& ratio)
void gscan3399::GetRatio(int type, int& ratio,int dpi)
{
ratio = scanner_read_reg(m_usb, type == 0 ? SR_GET_H_RATIO : SR_GET_V_RATIO);
}
@ -532,6 +532,11 @@ void gscan3399::GetOrSetVIDPID(int& value, bool get)
}
}
std::string gscan3399::GetSysInfo()
{
return "Unsupported";
}
void gscan3399::usbcallback(bool isleft, void* usrdata)
{
gscan3399* This = (gscan3399*)usrdata;

View File

@ -19,8 +19,8 @@ public:
virtual std::string GetKernelVersion();
virtual std::string GetIpAddr();
virtual std::string GetMbVersion();
virtual void SetRatio(int tyepe, int ration);
virtual void GetRatio(int type, int& ratio);
virtual void SetRatio(int tyepe, int ration,int dpi=0);
virtual void GetRatio(int type, int& ratio,int dpi=0);
virtual void Reboot(bool loader=false);
virtual void PowerOff();
virtual bool is_scan();
@ -72,7 +72,7 @@ public:
virtual void SetFlatCallback(std::function<void(std::string)> func);
virtual void GetSpeedMode(int& speedmode,bool getorset);
virtual void GetOrSetVIDPID(int& value, bool get) override;
virtual std::string GetSysInfo() override;
private:
static void usbcallback(bool isleft, void* usrdata);
int read_data(void* data, int length, int timeout);

View File

@ -14,10 +14,10 @@
//#define BYTE unsigned char
GScn_Drv::GScn_Drv()
:selectDeviceIndex(-1),m_scannerType(-1),m_isScanning(false)
:selectDeviceIndex(-1), m_scannerType(-1), m_isScanning(false)
{
//run();
XdPrint(L"Init GScn_Drv() \n");
m_bRun = false;
@ -25,7 +25,7 @@ GScn_Drv::GScn_Drv()
InitMSGMap();
InitScannerDiviceMap();
}
GScn_Drv::~GScn_Drv()
@ -42,38 +42,38 @@ GScn_Drv::~GScn_Drv()
void GScn_Drv::InitMSGMap()
{
if (ntcMsg.size()>0)
if (ntcMsg.size() > 0)
ntcMsg.clear();
ntcMsg[COUNT_MODE]="计数模式,请先退出计数模式!";
ntcMsg[NO_FEED]="无纸,请放置纸张!";
ntcMsg[OPEN_COVER]="扫描仪开盖!";
ntcMsg[FEED_IN_ERROR]="拾纸错误!";
ntcMsg[PAPER_JAM]="卡纸!";
ntcMsg[DETECT_DOUBLE_FEED]="双张!";
ntcMsg[DETECT_STAPLE]="订书针!";
ntcMsg[PAPER_SKEW]="纸张歪斜!";
ntcMsg[HARDWARE_ERROR]="硬件错误!";
ntcMsg[PC_SCAN_BUSY_or_ERROR]="PC错误";
ntcMsg[COUNT_MODE] = "计数模式,请先退出计数模式!";
ntcMsg[NO_FEED] = "无纸,请放置纸张!";
ntcMsg[OPEN_COVER] = "扫描仪开盖!";
ntcMsg[FEED_IN_ERROR] = "拾纸错误!";
ntcMsg[PAPER_JAM] = "卡纸!";
ntcMsg[DETECT_DOUBLE_FEED] = "双张!";
ntcMsg[DETECT_STAPLE] = "订书针!";
ntcMsg[PAPER_SKEW] = "纸张歪斜!";
ntcMsg[HARDWARE_ERROR] = "硬件错误!";
ntcMsg[PC_SCAN_BUSY_or_ERROR] = "PC错误";
}
void GScn_Drv::InitScannerDiviceMap()
{
if (devType.size()>0)
if (devType.size() > 0)
{
devType.clear();
}
devType["G100"]=G100;
devType["G200"]=G200;
devType["G300"]=G300;
devType["G400"]=G400;
devType["G500"]=G500;
devType["G100"] = G100;
devType["G200"] = G200;
devType["G300"] = G300;
devType["G400"] = G400;
devType["G500"] = G500;
}
static int iNum = 0;
void GScn_Drv::open(int vid, int pid,int index)
void GScn_Drv::open(int vid, int pid, int index)
{
auto devs = UsbScan_List::find_vid_pid(vid, pid);
@ -83,9 +83,9 @@ void GScn_Drv::open(int vid, int pid,int index)
m_usb->open();//?同时存在多个同种扫描设备时默认选取第一个vid pid匹配的设备
VID = vid;
PID = pid;
selectDeviceIndex=index;
m_scannerType=G300;
h= ::FindWindow(NULL, L"HGScannerTool");
selectDeviceIndex = index;
m_scannerType = G300;
h = ::FindWindow(NULL, L"HGScannerTool");
}
}
@ -108,7 +108,7 @@ std::string GScn_Drv::popMat(int num)
}
int GScn_Drv::aquire_image(std::string& image,int num)
int GScn_Drv::aquire_image(std::string& image, int num)
{
while (true)
{
@ -166,7 +166,7 @@ void GScn_Drv::SetExpose(int aside, int bside)
void GScn_Drv::GetSptime(int type, int& time)
{
USBCB usb = {0,0,0};
USBCB usb = { 0,0,0 };
switch (type)
{
case 0:
@ -213,7 +213,7 @@ void GScn_Drv::GetSleepTime(int& sleeptime)
USBCB usb = { GET_SLEEP_TIME,0,0 };
m_usb->write_bulk(&usb, sizeof(usb));
m_usb->read_bulk(&usb, sizeof(usb));
sleeptime=usb.u32_Data;
sleeptime = usb.u32_Data;
}
}
@ -243,7 +243,7 @@ void GScn_Drv::GetSpeedMode(int& speedmode, bool get)
{
if (m_usb.get() && m_usb->is_connected())
{
USBCB speed = { get ? GET_SPEED_MODE:SET_SPEED_MODE,speedmode,0 };
USBCB speed = { get ? GET_SPEED_MODE : SET_SPEED_MODE,speedmode,0 };
m_usb->write_bulk(&speed, sizeof(speed));
if (get)
{
@ -267,6 +267,24 @@ void GScn_Drv::GetOrSetVIDPID(int& value, bool get)
}
}
std::string GScn_Drv::GetSysInfo()
{
UsbKeyWords keyword = GETSYSINFO_LEN;
USBCB cmd = { keyword ,0,0 };
m_usb->write_bulk(&cmd, sizeof(cmd));
m_usb->read_bulk(&cmd, sizeof(cmd));
int len = cmd.u32_Count;
string str;
str.resize(4096);
cmd.u32_CMD = GETSYSINFO;
cmd.u32_Count = 0;
cmd.u32_Data = 0;
m_usb->write_bulk(&cmd, sizeof(cmd));
m_usb->read_bulk(&str[0], len);
int aa = 0;
return str;
}
void GScn_Drv::reset()
{
while (!m_pImages.empty())
@ -282,8 +300,8 @@ void GScn_Drv::pushMat(JpegBuffer& data)
}
bool GScn_Drv::IsConnected()
{
if(m_usb.get())
{
if (m_usb.get())
return m_usb->is_connected();
else
return false;
@ -294,7 +312,7 @@ bool GScn_Drv::IsConnected()
cv::Mat GScn_Drv::Get_Img_Data(int bufferSize)
{
std::lock_guard<std::mutex> lck(m_Locker);
cv::Mat iData(1, bufferSize,CV_8UC1);
cv::Mat iData(1, bufferSize, CV_8UC1);
USBCB usbcb = { GET_IMAGE,0,bufferSize };
DWORD transfer;
@ -399,8 +417,8 @@ DWORD GScn_Drv::usbmain()
try
{
while (m_bRun)
{
if (devState==DEV_ISRUNNING)
{
if (devState == DEV_ISRUNNING)
{
if (!IsConnected())
{
@ -411,60 +429,60 @@ DWORD GScn_Drv::usbmain()
switch (usbcb.u32_Data)
{
case HAVE_IMAGE:
{
int totalNum = usbcb.u32_Count;
DWORD transferCount = 0;
iNum++;
cv::Mat imgData = Get_Img_Data(totalNum);
switch (m_scannerType)
{
int totalNum = usbcb.u32_Count;
DWORD transferCount = 0;
iNum++;
cv::Mat imgData = Get_Img_Data(totalNum);
switch(m_scannerType)
case G100:
case G200:
{
cv::Mat bufferF = imgData.clone();
cv::Mat bufferB = imgData.clone();
int j = 0;
int k = 0;
for (int i = 0; i < totalNum / 1024; i++)
{
case G100:
case G200:
if (imgData.data[1023 + i * 1024] == 0)
{
cv::Mat bufferF = imgData.clone();
cv::Mat bufferB = imgData.clone();
int j = 0;
int k = 0;
for (int i = 0; i < totalNum / 1024; i++)
j++;
memcpy(&(bufferB.data[(j - 1) * 1023]), &(imgData.data[(j + k - 1) * 1024]), 1023);
}
else if (imgData.data[1023 + i * 1024] == 255)
{
if (imgData.data[1023 + i * 1024] == 0)
{
j++;
memcpy(&(bufferB.data[(j - 1) * 1023]), &(imgData.data[(j + k - 1) * 1024]), 1023);
}
else if (imgData.data[1023 + i * 1024] == 255)
{
k++;
memcpy(&(bufferF.data[(k - 1) * 1023]), &(imgData.data[(j + k - 1) * 1024]), 1023);
}
k++;
memcpy(&(bufferF.data[(k - 1) * 1023]), &(imgData.data[(j + k - 1) * 1024]), 1023);
}
pushMat(JpegBuffer(bufferB,m_config.g200params.color==1?TJPF_BGR:TJPF_GRAY,0,0));
pushMat(JpegBuffer(bufferF, m_config.g200params.color == 1 ? TJPF_BGR : TJPF_GRAY,1,0));
break;
}
case G300:
case G400:
case G500:
{
pushMat(JpegBuffer(imgData, m_config.g200params.color == 1 ? TJPF_BGR : TJPF_GRAY,0,0));
//auto img = fopen("inmg.jpg", "wb+");
//fwrite(imgData.data, 1, totalNum, img);
//fclose(img);
}
break;
default:
break;
}
Pop_Image();
pushMat(JpegBuffer(bufferB, m_config.g200params.color == 1 ? TJPF_BGR : TJPF_GRAY, 0, 0));
pushMat(JpegBuffer(bufferF, m_config.g200params.color == 1 ? TJPF_BGR : TJPF_GRAY, 1, 0));
break;
}
case G300:
case G400:
case G500:
{
pushMat(JpegBuffer(imgData, m_config.g200params.color == 1 ? TJPF_BGR : TJPF_GRAY, 0, 0));
//auto img = fopen("inmg.jpg", "wb+");
//fwrite(imgData.data, 1, totalNum, img);
//fclose(img);
}
break;
default:
break;
}
Pop_Image();
break;
}
case STOP_SCAN:
{
m_isScanning=false;
devState = DEV_STOP;
m_pImages.SetScanFlag(false);
break;
}
{
m_isScanning = false;
devState = DEV_STOP;
m_pImages.SetScanFlag(false);
break;
}
case AUTO_FLAT_FINISHED:
{
m_isScanning = false;
@ -499,7 +517,7 @@ DWORD GScn_Drv::usbmain()
case DETECT_STAPLE:
case PAPER_SKEW:
case HARDWARE_ERROR:
case PC_SCAN_BUSY_or_ERROR:{
case PC_SCAN_BUSY_or_ERROR: {
USES_CONVERSION;
MessageBox(h, CString(ntcMsg[usbcb.u32_Data].c_str()), L"提示?", MB_OK | MB_ICONERROR);
devState = DEV_WRONG;
@ -567,7 +585,7 @@ void GScn_Drv::Scanner_StartScan(UINT16 count)
USBCB usbcb = { START_COMMAND,AUTO_SCAN_MODE ,0 };
m_usb->write_bulk(&usbcb, sizeof(usbcb));
iNum = 0;
m_pImages.pixType=m_config.g200params.color;
m_pImages.pixType = m_config.g200params.color;
m_pImages.SetDevModel(m_scannerType);
m_pImages.SetFilePath(csPath);
m_pImages.run();
@ -581,14 +599,14 @@ std::string GScn_Drv::GetFWVersion()
{
if (m_usb->is_connected())
{
std::lock_guard<std::mutex> lck(m_imgLocker);
std::lock_guard<std::mutex> lck(m_imgLocker);
std::string pFWVersion = " ";
USBCB usbcb = { GET_FW_VERSION,0,0 };
XdPrint(L"Get GetFWVersion");
XdPrint(L"Get GetFWVersion");
m_usb->write_bulk(&usbcb, sizeof(usbcb));
CString cslog;
cslog.Format(L"GetFWVersion Read_Data %d",usbcb.u32_Data);
cslog.Format(L"GetFWVersion Read_Data %d", usbcb.u32_Data);
m_usb->read_bulk(&pFWVersion[0], 10);
return pFWVersion;
@ -619,7 +637,7 @@ void GScn_Drv::SetSerialNum(std::string pvalue)
if (m_usb->is_connected())
{
std::lock_guard<std::mutex> lck(m_imgLocker);
USBCB sercmd = { SEND_SERIAL ,0,14};
USBCB sercmd = { SEND_SERIAL ,0,14 };
m_usb->write_bulk(&sercmd, sizeof(sercmd));
m_usb->write_bulk(&pvalue, pvalue.length());
}
@ -640,7 +658,7 @@ int GScn_Drv::GetScanNum()
m_usb->write_bulk(&usbcb, sizeof(usbcb));
CString cslog;
cslog.Format(L"GetScanNum Read_Data %d",usbcb.u32_Data);
cslog.Format(L"GetScanNum Read_Data %d", usbcb.u32_Data);
//WriteLog(cslog);
m_usb->read_bulk(&usbcb, sizeof(usbcb));
@ -694,7 +712,7 @@ void GScn_Drv::SendFlatData(CorrectParam param, int index)
CaptureParams GScn_Drv::GetFlatData()
{
CaptureParams param = {0};
CaptureParams param = { 0 };
USBCB usbcb = { GET_FLAT_DATA,0,0 };
DWORD transfer;
m_usb->write_bulk(&usbcb, sizeof(usbcb));
@ -728,7 +746,7 @@ void GScn_Drv::DevStateChange()
///////////////////////////////////////////////////////////////////////////
std::string GScn_Drv::GetSerialNum()
{
if (!m_usb.get()&&!m_usb->is_connected())
if (!m_usb.get() && !m_usb->is_connected())
{
return "";
}
@ -738,22 +756,22 @@ std::string GScn_Drv::GetSerialNum()
str.resize(14);
USBCB usbcb = { GET_SERIAL,0,14 };
m_usb->write_bulk(&usbcb, sizeof(usbcb));
XdPrint(L"GetSerialNum Read_Data %d",usbcb.u32_Data);
XdPrint(L"GetSerialNum Read_Data %d", usbcb.u32_Data);
m_usb->read_bulk(&str, 14);
return str;
}
void GScn_Drv::SetRatio(int tyepe, int ration)
void GScn_Drv::SetRatio(int tyepe, int ration, int dpi)
{
UsbKeyWords keyword = tyepe == 0 ? SET_JUST_COF_H : SET_JUST_COF_V;
USBCB cmd = { keyword ,ration,0};
USBCB cmd = { keyword ,ration,dpi };
m_usb->write_bulk(&cmd, sizeof(cmd));
}
void GScn_Drv::GetRatio(int type, int& ratio)
void GScn_Drv::GetRatio(int type, int& ratio, int dpi)
{
UsbKeyWords keyword = type == 0 ? GET_JUST_COF_H : GET_JUST_COF_V;
USBCB cmd = { keyword ,0,0 };
USBCB cmd = { keyword ,0,dpi };
m_usb->write_bulk(&cmd, sizeof(cmd));
m_usb->read_bulk(&cmd, sizeof(cmd));
ratio = cmd.u32_Data;
@ -761,7 +779,7 @@ void GScn_Drv::GetRatio(int type, int& ratio)
void GScn_Drv::Reboot(bool loader)
{
USBCB cmd = { REBOOT,loader?1:0,0 };
USBCB cmd = { REBOOT,loader ? 1 : 0,0 };
m_usb->write_bulk(&cmd, sizeof(cmd));
}
@ -783,7 +801,7 @@ USBCB GScn_Drv::Get_Scanner_Status()
//XdPrint("Get_Scanner_Status Read_Data %d \n",usbcb.u32_Data);
m_usb->read_bulk(&usbcb,sizeof(usbcb));
m_usb->read_bulk(&usbcb, sizeof(usbcb));
//XdPrint("Get_Scanner_Status return usbcb \n",usbcb.u32_Data);
return usbcb;
@ -792,7 +810,7 @@ USBCB GScn_Drv::Get_Scanner_Status()
///////////////////////////////////////////////////////////////////////////
bool GScn_Drv::is_scan()
{
return devState==DEV_ISRUNNING;
return devState == DEV_ISRUNNING;
}
///////////////////////////////////////////////////////////////////////////

View File

@ -30,8 +30,8 @@ public:
virtual std::string GetMbVersion();
virtual std::string GetIpAddr();
virtual std::string GetKernelVersion();
virtual void SetRatio(int tyepe, int ration);
virtual void GetRatio(int type, int& ratio);
virtual void SetRatio(int tyepe, int ration,int dpi=0);
virtual void GetRatio(int type, int& ratio,int dpi=0);
virtual void Reboot(bool loader=false);
virtual void PowerOff() {};
virtual bool is_scan()override;
@ -80,6 +80,7 @@ public:
virtual void SetFlatCallback(std::function<void(std::string)> func)override;
virtual void GetSpeedMode(int& speedmode, bool get)override;
virtual void GetOrSetVIDPID(int& value, bool get) override;
virtual std::string GetSysInfo() override;
private:
volatile int devState;
volatile bool m_bRun;