添加USB读数据事件通知(纸张计数);修复读取部分属性BUG

This commit is contained in:
gb 2022-06-18 16:47:21 +08:00
parent ee1a8450fb
commit 34e0dbfb95
2 changed files with 14 additions and 18 deletions

View File

@ -1870,6 +1870,8 @@ int hg_scanner::save_usb_data(std::shared_ptr<tiny_buffer> data)
if (wait_img_.is_waiting()) if (wait_img_.is_waiting())
wait_img_.notify(); wait_img_.notify();
} }
unsigned int bytes = data->size();
ui_ev_cb_((scanner_handle)this, SANE_EVENT_USB_DATA_RECEIVED, NULL, &bytes, NULL);
return ret; return ret;
} }
@ -2444,13 +2446,10 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len)
return SCANNER_ERR_INSUFFICIENT_MEMORY; return SCANNER_ERR_INSUFFICIENT_MEMORY;
} }
char* buf = strcpy((char*)data, fw.c_str()); if (data)
strcpy((char*)data, fw.c_str());
if (buf) return SCANNER_ERR_OK;
{
return SCANNER_ERR_OK;
}
return SCANNER_ERR_DATA_DAMAGED;
} }
else if(code == IO_CTRL_CODE_GET_SERIAL) else if(code == IO_CTRL_CODE_GET_SERIAL)
{ {
@ -2460,12 +2459,10 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len)
*len = ser.size(); *len = ser.size();
return SCANNER_ERR_INSUFFICIENT_MEMORY; return SCANNER_ERR_INSUFFICIENT_MEMORY;
} }
char* buf = strcpy((char*)data, ser.c_str()); if (data)
if (buf) strcpy((char*)data, ser.c_str());
{
return SCANNER_ERR_OK; return SCANNER_ERR_OK;
}
return SCANNER_ERR_DATA_DAMAGED;
} }
else if (code == IO_CTRL_CODE_GET_HARDWARE_VERSION) else if (code == IO_CTRL_CODE_GET_HARDWARE_VERSION)
{ {
@ -2475,13 +2472,10 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len)
*len = ip.size(); *len = ip.size();
return SCANNER_ERR_INSUFFICIENT_MEMORY; return SCANNER_ERR_INSUFFICIENT_MEMORY;
} }
char* buf = strcpy((char*)data, ip.c_str()); if (data)
strcpy((char*)data, ip.c_str());
if (buf) return SCANNER_ERR_OK;
{
return SCANNER_ERR_OK;
}
return SCANNER_ERR_DATA_DAMAGED;
} }
else if (code == IO_CTRL_CODE_GET_PAPER_ON) else if (code == IO_CTRL_CODE_GET_PAPER_ON)
{ {

View File

@ -2024,10 +2024,12 @@ extern "C" { // avoid compiler exporting name in C++ style !!!
#ifdef WIN32 #ifdef WIN32
HMODULE g_my_inst = NULL;
BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, LPVOID reserved) BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, LPVOID reserved)
{ {
if (reason == DLL_PROCESS_ATTACH) if (reason == DLL_PROCESS_ATTACH)
{ {
g_my_inst = inst;
if (g_sane_path.empty()) if (g_sane_path.empty())
{ {
char path[MAX_PATH] = { 0 }; char path[MAX_PATH] = { 0 };