调整、增加部分协议

This commit is contained in:
lovelyyoung 2020-07-07 09:54:19 +08:00
parent 788f1c5cf9
commit 391da4144e
2 changed files with 107 additions and 26 deletions

View File

@ -113,18 +113,18 @@ static list<UInt16> paperSizeList = { (UInt16)PaperSize::A3,(UInt16)PaperSize::A
static list<float> imageRotateList = { 0.0,90.0,180.0,270.0 }; static list<float> imageRotateList = { 0.0,90.0,180.0,270.0 };
static map<unsigned int, CString> noticeMsgMap = { {OPEN_COVER,_T("扫描仪开盖")}, //static map<unsigned int, CString> noticeMsgMap = { {OPEN_COVER,_T("扫描仪开盖")},
{NO_FEED,_T("无纸!")}, // {NO_FEED,_T("无纸!")},
{FEED_IN_ERROR,_T("搓纸失败!")}, // {FEED_IN_ERROR,_T("搓纸失败!")},
{PAPER_JAM,_T("卡纸!")}, // {PAPER_JAM,_T("卡纸!")},
{DETECT_DOUBLE_FEED,_T("双张!")}, // {DETECT_DOUBLE_FEED,_T("双张!")},
{DETECT_STAPLE,_T("订书针!")}, // {DETECT_STAPLE,_T("订书针!")},
{PAPER_SKEW,_T("纸张歪斜!")}, // {PAPER_SKEW,_T("纸张歪斜!")},
{COUNT_MODE,_T("计数模式,请退出计数模式!")}, // {COUNT_MODE,_T("计数模式,请退出计数模式!")},
{HARDWARE_ERROR,_T("硬件错误")}, // {HARDWARE_ERROR,_T("硬件错误")},
{FPGA_ERROR,_T("FPGA 异常")}, // {FPGA_ERROR,_T("FPGA 异常")},
{USB_DISCONNECTED,_T("USB连接异常")} // {USB_DISCONNECTED,_T("USB连接异常")}
}; //};
static void DeleteWnd(CDialog* pWnd) { static void DeleteWnd(CDialog* pWnd) {
if (pWnd && pWnd->GetSafeHwnd()) { if (pWnd && pWnd->GetSafeHwnd()) {
@ -387,13 +387,17 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
m_iBitdepth = m_scanparam->pixtype == 2 ? 24 : (m_scanparam->pixtype == 1 ? 8 : 0); m_iBitdepth = m_scanparam->pixtype == 2 ? 24 : (m_scanparam->pixtype == 1 ? 8 : 0);
scanner->open(0x064B, 0x7823); scanner->open(0x064B, 0x7823);
if (!scanner->IsConnected()) { if (!scanner->IsConnected()) {
MessageBox(NULL, _T("未找到扫描仪!请检查电源或者USB连接线是否接通!"), _T("提示"), MB_SYSTEMMODAL | MB_OK | MB_ICONINFORMATION); //MessageBox(NULL, _T("未找到扫描仪!请检查电源或者USB连接线是否接通!"), _T("提示"), MB_SYSTEMMODAL | MB_OK | MB_ICONINFORMATION);
//CString str("201");
ShellExecute(NULL, TEXT("open"), GetHidedlgPath(), CString("201"), NULL, SW_HIDE);
return checkDeviceOnline(); return checkDeviceOnline();
} }
hMutex = CreateMutex(NULL, FALSE, _T("LookitApp")); hMutex = CreateMutex(NULL, FALSE, _T("LookitApp"));
if (GetLastError() == ERROR_ALREADY_EXISTS) { //如果已经存在同名的Mutex会得到这个错误. if (GetLastError() == ERROR_ALREADY_EXISTS) { //如果已经存在同名的Mutex会得到这个错误.
CloseHandle(hMutex); CloseHandle(hMutex);
MessageBox(NULL, _T("设备已被其他程序占用,请关闭占用程序之后再重试!"), _T("提示"), MB_OK); //MessageBox(NULL, _T("设备已被其他程序占用,请关闭占用程序之后再重试!"), _T("提示"), MB_OK);
//CString str("202");
ShellExecute(NULL, TEXT("open"), GetHidedlgPath(), CString("202"), NULL, SW_HIDE);
return seqError(); return seqError();
} }
@ -567,8 +571,8 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
else else
{ {
m_scanparam->multi_output_red = 0;//非彩色模式下多流输出不可用 m_scanparam->multi_output_red = 0;//非彩色模式下多流输出不可用
if (m_scanparam->pixtype == (int)PixelType::BlackWhite) //if (m_scanparam->pixtype == (int)PixelType::BlackWhite)
m_scanparam->sharpen = SharpenBlur::Sharpen_None; // m_scanparam->sharpen = SharpenBlur::Sharpen_None;
} }
m_iBitdepth = mech == PixelType::Rgb ? 24 : (mech == PixelType::Gray ? 8 : 1); m_iBitdepth = mech == PixelType::Rgb ? 24 : (mech == PixelType::Gray ? 8 : 1);
return success(); return success();
@ -743,7 +747,11 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
if (contains) { if (contains) {
m_scanparam->papertype = (byte)res; m_scanparam->papertype = (byte)res;
if (res == (byte)PaperSize::None) if (res == (byte)PaperSize::None)
{
m_scanparam->autodescrew = 1;//设置papertype为NONE 则默认自动裁切 m_scanparam->autodescrew = 1;//设置papertype为NONE 则默认自动裁切
m_scanparam->paperAlign = PaperAlign::Rot0;
}
return success(); return success();
} }
return badValue(); return badValue();
@ -1094,12 +1102,11 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
} }
}; };
m_query[CapType::IAutomaticCropUsesFrame] = msgSupportGetAllSetReset; m_query[CapType::IAutomaticCropUsesFrame] = msgSupportGetAll;
m_caps[CapType::IAutomaticCropUsesFrame] = [this](Msg msg, Capability& data)->Result { m_caps[CapType::IAutomaticCropUsesFrame] = [this](Msg msg, Capability& data)->Result {
switch (msg) { switch (msg) {
case Msg::Get: case Msg::Get:
data = Capability::createEnumeration<CapType::IAutomaticCropUsesFrame>( data = Capability::Capability::createOneValue<CapType::IAutomaticCropUsesFrame>(m_scanparam->is_autocrop);
{ Bool(), Bool(true) }, Bool(m_scanparam->is_autocrop));
return success(); return success();
case Msg::Reset: case Msg::Reset:
case Msg::GetCurrent: case Msg::GetCurrent:
@ -1111,11 +1118,38 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
data = Capability::createOneValue<CapType::IAutomaticCropUsesFrame>(false); data = Capability::createOneValue<CapType::IAutomaticCropUsesFrame>(false);
return success(); return success();
//case Msg::Set: {
// auto autocrop = data.currentItem<CapType::IAutomaticCropUsesFrame>();
// m_scanparam->is_autocrop = (bool)autocrop;
// if (autocrop)
// m_scanparam->papertype = (byte)PaperSize::None;
// return success();
//}
default:
return capBadOperation();
}
};
m_query[CapType::AutoScan] = msgSupportGetAllSetReset;
m_caps[CapType::AutoScan] = [this](Msg msg, Capability& data)->Result {
switch (msg) {
case Msg::Get:
data = Capability::createEnumeration<CapType::AutoScan>(
{ Bool(), Bool(true) }, m_autoscan);
return success();
case Msg::Reset:
case Msg::GetCurrent:
m_autoscan = true;
data = Capability::createOneValue<CapType::AutoScan>(m_autoscan);
return success();
case Msg::GetDefault:
data = Capability::createOneValue<CapType::AutoScan>(true);
return success();
case Msg::Set: { case Msg::Set: {
auto autocrop = data.currentItem<CapType::IAutomaticCropUsesFrame>(); auto autoscan = data.currentItem<CapType::AutoScan>();
m_scanparam->is_autocrop = (bool)autocrop; m_autoscan = autoscan;
if (autocrop)
m_scanparam->papertype = (byte)PaperSize::None;
return success(); return success();
} }
default: default:
@ -1141,6 +1175,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
case Msg::Set: { case Msg::Set: {
auto autosize = data.currentItem<CapType::IAutoSize>(); auto autosize = data.currentItem<CapType::IAutoSize>();
if (autosize == AutoSize::Auto)
{
m_scanparam->is_autocrop = 1;
m_scanparam->papertype = (byte)Twpp::PaperSize::None;
m_scanparam->paperAlign = PaperAlign::Rot0;
}
m_autosize = (byte)autosize; m_autosize = (byte)autosize;
return success(); return success();
} }
@ -1149,6 +1189,39 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
} }
}; };
m_query[CapType::IAutomaticBorderDetection] = msgSupportGetAllSetReset;
m_caps[CapType::IAutomaticBorderDetection] = [this](Msg msg, Capability& data)->Result {
switch (msg) {
case Msg::Get:
data = Capability::createEnumeration<CapType::IAutomaticBorderDetection>(
{ Bool(), Bool(true) }, m_autoboarderdetcet);
return success();
case Msg::Reset:
case Msg::GetCurrent:
m_autoscan = true;
data = Capability::createOneValue<CapType::IAutomaticBorderDetection>(m_autoboarderdetcet);
return success();
case Msg::GetDefault:
data = Capability::createOneValue<CapType::IAutomaticBorderDetection>(false);
return success();
case Msg::Set: {
auto autodetectborder = data.currentItem<CapType::IAutomaticBorderDetection>();
if (autodetectborder)
{
m_scanparam->is_autocrop = true;
m_scanparam->papertype = (byte)Twpp::PaperSize::None;
m_scanparam->paperAlign = PaperAlign::Rot0;
}
m_autoboarderdetcet = autodetectborder;
return success();
}
default:
return capBadOperation();
}
};
m_query[CapType::IImageMerge] = msgSupportGetAllSetReset; m_query[CapType::IImageMerge] = msgSupportGetAllSetReset;
m_caps[CapType::IImageMerge] = [this](Msg msg, Capability& data)->Result { m_caps[CapType::IImageMerge] = [this](Msg msg, Capability& data)->Result {
switch (msg) { switch (msg) {
@ -1772,7 +1845,11 @@ Result HuagaoDs::pendingXfersEnd(const Identity&, PendingXfers& data) {
scanner->Set_ErrorCode(0); scanner->Set_ErrorCode(0);
guiIndicator.reset(); guiIndicator.reset();
if (ret != -1) { if (ret != -1) {
MessageBox(guiTwain ? guiTwain->m_hWnd : NULL, noticeMsgMap[ret], _T("提示"), MB_SYSTEMMODAL | MB_OK | MB_ICONINFORMATION);// //ShellExecute(NULL, _T("open"), _T("aa.exe"), CString("1"), _T(""), SW_HIDE);
//MessageBox(guiTwain ? guiTwain->m_hWnd : NULL, noticeMsgMap[ret], _T("提示"), MB_SYSTEMMODAL | MB_OK | MB_ICONINFORMATION);//
CString str;
str.Format(_T("%d"), ret);
ShellExecute(NULL, TEXT("open"), GetHidedlgPath(), str, NULL, SW_HIDE);
#ifndef G200 #ifndef G200
scanner->clear_hwerror(); scanner->clear_hwerror();
#endif // G200 #endif // G200
@ -2208,7 +2285,10 @@ Twpp::Result HuagaoDs::startScan()
scanner->Set_ErrorCode(0); scanner->Set_ErrorCode(0);
guiIndicator.reset(); guiIndicator.reset();
if (retCode != -1) { if (retCode != -1) {
MessageBox(guiTwain ? guiTwain->m_hWnd : NULL, noticeMsgMap[retCode], _T("提示"), MB_SYSTEMMODAL | MB_OK | MB_ICONINFORMATION); //MessageBox(guiTwain ? guiTwain->m_hWnd : NULL, noticeMsgMap[retCode], _T("提示"), MB_SYSTEMMODAL | MB_OK | MB_ICONINFORMATION);
CString str;
str.Format(_T("%d"), retCode);
ShellExecute(guiTwain ? guiTwain->m_hWnd : NULL, TEXT("open"), GetHidedlgPath(), str, NULL, SW_HIDE);
#ifndef G200 #ifndef G200
scanner->clear_hwerror(); scanner->clear_hwerror();
#endif // #endif //

View File

@ -83,7 +83,8 @@ private:
Twpp::UInt32 m_memXferYOff = 0; Twpp::UInt32 m_memXferYOff = 0;
Twpp::UInt16 m_pendingXfers = 0; Twpp::UInt16 m_pendingXfers = 0;
Twpp::UInt16 m_autosize = 0; Twpp::UInt16 m_autosize = 0;
Twpp::Bool m_autoscan = true;
Twpp::Bool m_autoboarderdetcet = false;
Twpp::Int16 m_capXferCount = -1; Twpp::Int16 m_capXferCount = -1;
Twpp::Fix32 m_brightness = 0.0f; Twpp::Fix32 m_brightness = 0.0f;
Twpp::XferMech m_capXferMech = Twpp::XferMech::Native; Twpp::XferMech m_capXferMech = Twpp::XferMech::Native;