调整twain在open设备时可能会出现未打开的情况

This commit is contained in:
13038267101 2023-04-26 15:02:05 +08:00
parent d278ab3fef
commit 5217432a8f
1 changed files with 17 additions and 4 deletions

View File

@ -1039,13 +1039,26 @@ Result huagao_ds::identityOpenDs(const Identity& id)
return result; return result;
} }
int err = 0; int err = 0, attempt = 0;
Sleep(100); // Sleep(500);
scanner_.reset(load_sane_util::open(scanner_guid, &err)); scanner_.reset(load_sane_util::open(scanner_guid, &err));
while (err == SCANNER_ERR_DEVICE_NOT_FOUND && attempt++ < 100)
{
if (attempt == 1)
{
load_sane_util::log_info(L"Driver is not ready, we wait ... \r\n", 0);
}
std::this_thread::sleep_for(std::chrono::milliseconds(5));
err = 0;
scanner_.reset(load_sane_util::open(scanner_guid, &err));
}
if (!scanner_.get()) if (!scanner_.get())
{ {
//CloseHandle(singleton_); //CloseHandle(singleton_);
//singleton_ = NULL; //singleton_ = NULL;
wchar_t info[128] = { 0 };
swprintf_s(info, _countof(info) - 1, L"OpenDS error: %d\r\n", err);
load_sane_util::log_info(info, 0);
load_sane_util::uninitialize(); load_sane_util::uninitialize();
return { ReturnCode::Failure, huagao_ds::condition_code_from_hg_error(err) }; return { ReturnCode::Failure, huagao_ds::condition_code_from_hg_error(err) };
@ -1121,7 +1134,7 @@ Result huagao_ds::setupMemXferGet(const Identity& id, SetupMemXfer& data)
{ {
int def_w = 2000, int def_w = 2000,
def_h = 6000; def_h = 6000;
data.setMinSize(def_w * 3 * def_h); data.setMinSize(def_w * 3/* * def_h*/);
data.setPreferredSize(def_w * 3 * def_h); data.setPreferredSize(def_w * 3 * def_h);
data.setMaxSize(def_w * 3 * def_h); data.setMaxSize(def_w * 3 * def_h);
} }
@ -1635,7 +1648,7 @@ Result huagao_ds::call(const Identity& origin, DataGroup dg, Dat dat, Msg msg, v
trigger_ProcessEvent(dg, dat, msg); // some APPs may be not trigger (Control, Event, ProcessEvent), we help them :( ... // 云阅卷扫描端不等状态改变,直接取图,此处设置一次状态 2022-11-07 trigger_ProcessEvent(dg, dat, msg); // some APPs may be not trigger (Control, Event, ProcessEvent), we help them :( ... // 云阅卷扫描端不等状态改变,直接取图,此处设置一次状态 2022-11-07
rt = Base::call(origin, dg, dat, msg, data); rt = Base::call(origin, dg, dat, msg, data);
if(log_all_triple_ || (int)rt.returnCode()) if (log_all_triple_ || ((int)rt.returnCode() && rt.returnCode() != ReturnCode::NotDsEvent))
{ {
wchar_t buf[128] = { 0 }, dgs[20] = { 0 }, dts[20] = { 0 }, ms[20] = { 0 }, ss[20] = { 0 }, rcs[20] = { 0 }, cs[20] = { 0 }; wchar_t buf[128] = { 0 }, dgs[20] = { 0 }, dts[20] = { 0 }, ms[20] = { 0 }, ss[20] = { 0 }, rcs[20] = { 0 }, cs[20] = { 0 };
swprintf_s(buf, _countof(buf) - 1, L"[%x - %s]DSEntry(%s, %s, %s) = {%s, %s}\r\n", GetCurrentThreadId(), desc_state(state(), ss), swprintf_s(buf, _countof(buf) - 1, L"[%x - %s]DSEntry(%s, %s, %s) = {%s, %s}\r\n", GetCurrentThreadId(), desc_state(state(), ss),