扫描仪事件直接回调到APP,不再依赖APP调用;设置界面启动扫描流程添加notifyXferReady调用
This commit is contained in:
parent
9c1fab4368
commit
51c732c008
|
@ -717,6 +717,18 @@ void scanner::on_ui_event(int uev, void* sender)
|
|||
{
|
||||
is_scanning_ = false;
|
||||
}
|
||||
int(__stdcall * h)(int, void*) = scanner_ev_handler_;
|
||||
if (uev == SANE_EVENT_UI_CLOSE_CANCEL) // notify when following message SANE_EVENT_SCAN_FINISHED arrived
|
||||
{
|
||||
stop();
|
||||
if (indicator_.get())
|
||||
indicator_.reset();
|
||||
}
|
||||
else if (h)
|
||||
{
|
||||
h(uev, evh_param_);
|
||||
}
|
||||
return;
|
||||
|
||||
events_.save(uev, sizeof(uev));
|
||||
|
||||
|
@ -3170,7 +3182,7 @@ COM_API_IMPLEMENT(scanner, bool, ui_show_progress(HWND parent, bool bIndicator))
|
|||
{
|
||||
callback::show_progress_ui(parent, ui_process,&ui_notify);
|
||||
}
|
||||
else
|
||||
else if(bIndicator)
|
||||
{
|
||||
if (setting_.get() && IsWindowVisible(setting_->hwnd()))
|
||||
parent = setting_->hwnd();
|
||||
|
@ -3304,7 +3316,7 @@ int scanner::handle_device_event(int ev_code, void* data, unsigned int* len)
|
|||
callback::bring_message_box_topmost(local_trans::lang_trans_between_hz936(CONST_STRING_ERROR).c_str());
|
||||
MessageBoxW(app_wnd_, msg.c_str(), local_trans::lang_trans_between_hz936(CONST_STRING_ERROR).c_str(), MB_OK);
|
||||
}
|
||||
on_ui_event(ev_code, (void*)ev_code);
|
||||
// on_ui_event(ev_code, (void*)ev_code);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -911,13 +911,13 @@ Result huagao_ds::capabilitySet(const Identity& origin, Capability& data)
|
|||
Result huagao_ds::eventProcess(const Identity&, Event& event)
|
||||
{
|
||||
const MSG* msg = (const MSG*)event.event();
|
||||
if (scanner_.get())
|
||||
{
|
||||
int ev = scanner_->get_event();
|
||||
|
||||
if(ev)
|
||||
handle_scanner_event(ev);
|
||||
}
|
||||
//if (scanner_.get())
|
||||
//{
|
||||
// int ev = scanner_->get_event();
|
||||
//
|
||||
// if(ev)
|
||||
// handle_scanner_event(ev);
|
||||
//}
|
||||
event.setMessage(Msg::Null);
|
||||
|
||||
|
||||
|
@ -1009,6 +1009,7 @@ Result huagao_ds::identityCloseDs(const Identity&)
|
|||
if (scanner_.get())
|
||||
{
|
||||
scanner_->set_event_callback();
|
||||
scanner_->ui_hide();
|
||||
scanner_.reset();
|
||||
}
|
||||
if (singleton_)
|
||||
|
@ -1574,41 +1575,41 @@ Result huagao_ds::call(const Identity& origin, DataGroup dg, Dat dat, Msg msg, v
|
|||
static unsigned nested_events = 0;
|
||||
|
||||
bool calling = in_calling;
|
||||
if (calling)
|
||||
{
|
||||
wchar_t buf[128] = { 0 }, dgs[20] = { 0 }, dts[20] = { 0 }, ms[20] = { 0 }, ss[20] = { 0 }, rcs[20] = { 0 }, cs[20] = { 0 };
|
||||
|
||||
if (dg == DataGroup::Control && dat == Dat::Event && msg == Msg::ProcessEvent)
|
||||
{
|
||||
if (is_getting_count_ && scanner_status_ == SCANNER_STATUS_SCAN_1)
|
||||
{
|
||||
// let it go ...
|
||||
}
|
||||
else
|
||||
{
|
||||
if(nested_events == 0)
|
||||
load_sane_util::log_info(L"Nested Call: discard 'Msg::ProcessEvent'!\r\n", 0);
|
||||
nested_events++;
|
||||
return { ReturnCode::NotDsEvent, ConditionCode::Success };
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
swprintf_s(buf, _countof(buf) - 1, L"Nested Call: [%x - %s]DSEntry(%s, %s, %s) called in another operation! \r\n", GetCurrentThreadId(), desc_state(state(), ss),
|
||||
desc_data_group(dg, dgs), desc_data(dat, dts), desc_msg(msg, ms));
|
||||
load_sane_util::log_info(buf, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
in_calling = true;
|
||||
}
|
||||
if (nested_events > 1)
|
||||
{
|
||||
wchar_t buf[256] = { 0 };
|
||||
swprintf_s(buf, _countof(buf) - 1, L"Discard %u nested Msg::ProcessEvent messages before.\r\n", nested_events);
|
||||
load_sane_util::log_info(buf, 0);
|
||||
}
|
||||
//if (calling)
|
||||
//{
|
||||
// wchar_t buf[128] = { 0 }, dgs[20] = { 0 }, dts[20] = { 0 }, ms[20] = { 0 }, ss[20] = { 0 }, rcs[20] = { 0 }, cs[20] = { 0 };
|
||||
//
|
||||
// if (dg == DataGroup::Control && dat == Dat::Event && msg == Msg::ProcessEvent)
|
||||
// {
|
||||
// if (is_getting_count_ && scanner_status_ == SCANNER_STATUS_SCAN_1)
|
||||
// {
|
||||
// // let it go ...
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// if(nested_events == 0)
|
||||
// load_sane_util::log_info(L"Nested Call: discard 'Msg::ProcessEvent'!\r\n", 0);
|
||||
// nested_events++;
|
||||
// return { ReturnCode::NotDsEvent, ConditionCode::Success };
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// swprintf_s(buf, _countof(buf) - 1, L"Nested Call: [%x - %s]DSEntry(%s, %s, %s) called in another operation! \r\n", GetCurrentThreadId(), desc_state(state(), ss),
|
||||
// desc_data_group(dg, dgs), desc_data(dat, dts), desc_msg(msg, ms));
|
||||
// load_sane_util::log_info(buf, 0);
|
||||
// }
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// in_calling = true;
|
||||
//}
|
||||
//if (nested_events > 1)
|
||||
//{
|
||||
// wchar_t buf[256] = { 0 };
|
||||
// swprintf_s(buf, _countof(buf) - 1, L"Discard %u nested Msg::ProcessEvent messages before.\r\n", nested_events);
|
||||
// load_sane_util::log_info(buf, 0);
|
||||
//}
|
||||
nested_events = 0;
|
||||
|
||||
try {
|
||||
|
@ -1616,7 +1617,7 @@ Result huagao_ds::call(const Identity& origin, DataGroup dg, Dat dat, Msg msg, v
|
|||
//FileTools::write_log("D:\\1.txt", "call:datagroup-"+to_string((int)dg)+"dat-"+to_string(int(dat))+"msg-"+to_string(int(msg)));
|
||||
Result rt;
|
||||
|
||||
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);
|
||||
if (log_all_triple_ || ((int)rt.returnCode() && rt.returnCode() != ReturnCode::NotDsEvent))
|
||||
|
@ -3555,16 +3556,16 @@ int huagao_ds::handle_scanner_event(int ev, bool from_event_proc)
|
|||
{
|
||||
case SANE_EVENT_WORKING:
|
||||
scanner_status_ = SCANNER_STATUS_SCANNING;
|
||||
rc = notifyXferReady();
|
||||
if (!Twpp::success(rc))
|
||||
{
|
||||
wchar_t msg[128] = { 0 };
|
||||
swprintf_s(msg, _countof(msg) - 1, L"[%x]Warning: change state to XferReady failed with error %d while in state(%d), STOP scanning ...\r\n", GetCurrentThreadId(), rc, state());
|
||||
load_sane_util::log_info(msg, 0);
|
||||
//rc = notifyXferReady();
|
||||
//if (!Twpp::success(rc))
|
||||
//{
|
||||
// wchar_t msg[128] = { 0 };
|
||||
// swprintf_s(msg, _countof(msg) - 1, L"[%x]Warning: change state to XferReady failed with error %d while in state(%d), STOP scanning ...\r\n", GetCurrentThreadId(), rc, state());
|
||||
// load_sane_util::log_info(msg, 0);
|
||||
|
||||
// we stop scanning here ...
|
||||
scanner_->stop();
|
||||
}
|
||||
// // we stop scanning here ...
|
||||
// scanner_->stop();
|
||||
//}
|
||||
break;
|
||||
case SANE_EVENT_UI_CLOSE_CANCEL:
|
||||
scanner_->stop();
|
||||
|
@ -3615,6 +3616,10 @@ int huagao_ds::handle_scanner_event(int ev, bool from_event_proc)
|
|||
load_sane_util::log_info(msg, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
notifyXferReady(); // scan from UI, should notify this state mannually
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue