增加设备打开失败提示;改变启动扫描失败的提示方式

This commit is contained in:
gb 2022-09-22 16:25:03 +08:00
parent 5dbba10ee1
commit fc8ca14ec5
3 changed files with 40 additions and 7 deletions

View File

@ -293,6 +293,11 @@ int scanner::open(void)
load_config((cfg_path_ + scanner_name_).c_str()); load_config((cfg_path_ + scanner_name_).c_str());
// apply_config(); // apply_config();
} }
else
{
std::wstring msg(local_trans::a2u(hg_scanner_err_description(ret), CP_UTF8));
MessageBoxW(NULL, msg.c_str(), L"\u6253\u5F00\u5931\u8D25", MB_OK | MB_ICONERROR);
}
return ret; return ret;
} }
@ -1689,9 +1694,16 @@ COM_API_IMPLEMENT(scanner, int, start(void))
img_fmt_.img_format = SANE_IMAGE_TYPE_BMP; img_fmt_.img_format = SANE_IMAGE_TYPE_BMP;
img_fmt_.compress.compression = cmprsn; img_fmt_.compress.compression = cmprsn;
} }
else if (indicator_.get()) //else if (indicator_.get())
//{
// indicator_->notify_scan_over(hg_scanner_err_description(ret), true);
//}
else
{ {
indicator_->notify_scan_over(hg_scanner_err_description(ret), true); std::wstring msg(local_trans::a2u(hg_scanner_err_description(ret), CP_UTF8));
if (indicator_.get())
indicator_.reset();
MessageBoxW(NULL, msg.c_str(), L"\u542F\u52A8\u5931\u8D25", MB_OK | MB_ICONERROR);
} }
prev_start_result_ = ret; prev_start_result_ = ret;
is_scanning_ = ret == SANE_STATUS_GOOD; is_scanning_ = ret == SANE_STATUS_GOOD;
@ -2237,7 +2249,10 @@ int scanner::handle_device_event(int ev_code, void* data, unsigned int* len)
return 0; return 0;
} }
int scanner::last_error(void)
{
return err_;
}
@ -2337,9 +2352,21 @@ int __stdcall open_scanner(SCANNERID scanner_id, ISaneInvoker** invoker)
return SCANNER_ERR_DEVICE_NOT_FOUND; return SCANNER_ERR_DEVICE_NOT_FOUND;
scanner* scn = new scanner(scanner_id); scanner* scn = new scanner(scanner_id);
*invoker = dynamic_cast<ISaneInvoker*>(scn); if (scn->last_error() == SCANNER_ERR_OK)
{
*invoker = dynamic_cast<ISaneInvoker*>(scn);
return 0; return 0;
}
else
{
int ret = scn->last_error();
scn->release();
*invoker = NULL;
return ret;
}
} }
#ifdef EXPORT_SANE_API #ifdef EXPORT_SANE_API
__declspec(dllexport) __declspec(dllexport)

View File

@ -325,4 +325,5 @@ public:
// methods: // methods:
public: public:
int handle_device_event(int ev_code, void* data, unsigned int* len); int handle_device_event(int ev_code, void* data, unsigned int* len);
int last_error(void);
}; };

View File

@ -679,6 +679,8 @@ Twpp::ConditionCode huagao_ds::condition_code_from_hg_error(int hgerr)
return Twpp::ConditionCode::DamagedCorner; return Twpp::ConditionCode::DamagedCorner;
if (hgerr == SCANNER_ERR_DEVICE_NO_PAPER) if (hgerr == SCANNER_ERR_DEVICE_NO_PAPER)
return Twpp::ConditionCode::NoMedia; return Twpp::ConditionCode::NoMedia;
if (hgerr == SCANNER_ERR_OPENED_BY_OTHER_PROCESS)
return Twpp::ConditionCode::MaxConnections;
return (Twpp::ConditionCode)((int)Twpp::ConditionCode::CustomBase + hgerr); return (Twpp::ConditionCode)((int)Twpp::ConditionCode::CustomBase + hgerr);
} }
@ -921,13 +923,16 @@ Result huagao_ds::userInterfaceEnable(const Identity&, UserInterface& ui)
return seqError(); return seqError();
scanner_->twain_set_transfer((twain_xfer)m_capXferMech); scanner_->twain_set_transfer((twain_xfer)m_capXferMech);
int err = scanner_->start();
if (scanner_->start() == SCANNER_ERR_OK) if (err == SCANNER_ERR_OK)
{ {
return success(); return success();
} }
else else
{ {
if (err == SCANNER_ERR_DEVICE_NO_PAPER)
return { ReturnCode::Failure, ConditionCode::NoMedia };
return bummer(); return bummer();
} }
} }