2022-08-18 06:50:43 +00:00
|
|
|
|
#pragma once
|
2022-05-03 03:56:07 +00:00
|
|
|
|
|
|
|
|
|
#include "../../sdk/hginclude/huagaoxxx_warraper_ex.h"
|
|
|
|
|
#include "usb_manager.h"
|
|
|
|
|
#include <string>
|
|
|
|
|
#include <vector>
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
#include <mutex>
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////
|
2022-08-18 06:50:43 +00:00
|
|
|
|
// <20>豸<EFBFBD><E8B1B8>Ҫ֧<D2AA>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> (2022-02-24)
|
2022-05-03 03:56:07 +00:00
|
|
|
|
//
|
2022-08-18 06:50:43 +00:00
|
|
|
|
// 1<><31>ÿ̨<C3BF>豸Ӧ<E8B1B8><D3A6><EFBFBD><EFBFBD>Ψһ<CEA8><D2BB><EFBFBD><EFBFBD><EFBFBD>кţ<D0BA><C5A3><EFBFBD><EFBFBD>ɶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>Ծ<EFBFBD>ȷ<EFBFBD><C8B7>λ<EFBFBD><CEBB><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ÿһ̨<D2BB>豸<EFBFBD><E8B1B8>
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>ʵ<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ָ<EFBFBD>
|
2022-05-03 03:56:07 +00:00
|
|
|
|
//
|
2022-08-18 06:50:43 +00:00
|
|
|
|
// 2<><32><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>֧<EFBFBD>ְ<EFBFBD><D6B0><EFBFBD>ɨ<EFBFBD>蹦<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD>裩
|
2022-05-03 03:56:07 +00:00
|
|
|
|
//
|
2022-08-18 06:50:43 +00:00
|
|
|
|
// 3<><33><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ÿɶ<C3BF><C9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>豸ʵʱ״̬<D7B4>ļ<EFBFBD><C4BC><EFBFBD>
|
2022-05-03 03:56:07 +00:00
|
|
|
|
//
|
2022-08-18 06:50:43 +00:00
|
|
|
|
// 4<><34><EFBFBD>豸Ҫ֧<D2AA>֡<EFBFBD>reset<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA3AC>ʹ<EFBFBD>豸<EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>״̬
|
2022-05-03 03:56:07 +00:00
|
|
|
|
//
|
2022-08-18 06:50:43 +00:00
|
|
|
|
// 5<><35><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD>ÿһ<C3BF><D2BB><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>Ϣ<EFBFBD><CFA2><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD>ԣ<EFBFBD>״̬<D7B4><CCAC><EFBFBD>ݡ<EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
// Ϊ֧<CEAA><D6A7><EFBFBD>첽IO<49><4F><EFBFBD>Ե춨<D4B5><ECB6A8><EFBFBD><EFBFBD>
|
2022-05-03 03:56:07 +00:00
|
|
|
|
//
|
2022-08-18 06:50:43 +00:00
|
|
|
|
// 6<><36><EFBFBD>豸<EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD>ͨ<EFBFBD>ţ<EFBFBD><C5A3>豸<EFBFBD><E8B1B8><EFBFBD>͡<EFBFBD><CDA1><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ֽ<EFBFBD>׳<EFBFBD><D7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
2022-05-03 03:56:07 +00:00
|
|
|
|
//
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
2022-11-15 06:29:06 +00:00
|
|
|
|
//#ifdef OEM_HANWANG
|
|
|
|
|
//#define hg_scanner hw_scanner
|
|
|
|
|
//#define hg_scanner_mgr hw_scanner_mgr
|
|
|
|
|
//#elif defined(OEM_LISICHENG)
|
|
|
|
|
//#define hg_scanner lsc_scanner
|
|
|
|
|
//#define hg_scanner_mgr lsc_scanner_mgr
|
|
|
|
|
//#elif defined(OEM_CANGTIAN)
|
|
|
|
|
//#define hg_scanner cts_scanner
|
|
|
|
|
//#define hg_scanner_mgr cts_scanner_mgr
|
|
|
|
|
//#endif
|
2022-05-03 03:56:07 +00:00
|
|
|
|
class hg_scanner;
|
2023-09-22 07:43:53 +00:00
|
|
|
|
class hguser;
|
|
|
|
|
class offline_opts;
|
2022-05-03 03:56:07 +00:00
|
|
|
|
|
|
|
|
|
class hg_scanner_mgr
|
|
|
|
|
{
|
|
|
|
|
typedef struct _online_scanner
|
|
|
|
|
{
|
|
|
|
|
libusb_device* dev; // the unique usb device
|
|
|
|
|
int ind; // index in supporting scanners queue
|
|
|
|
|
hg_scanner* scanner;
|
|
|
|
|
std::string display_name;
|
|
|
|
|
|
|
|
|
|
bool operator==(const libusb_device* d)
|
|
|
|
|
{
|
|
|
|
|
return d == dev;
|
|
|
|
|
}
|
|
|
|
|
bool operator==(const int& index)
|
|
|
|
|
{
|
|
|
|
|
return ind == index;
|
|
|
|
|
}
|
|
|
|
|
bool operator==(const char* name)
|
|
|
|
|
{
|
|
|
|
|
return display_name == name;
|
|
|
|
|
}
|
|
|
|
|
}OLSCANNER;
|
|
|
|
|
std::vector<OLSCANNER> online_devices_;
|
|
|
|
|
std::mutex mutex_dev_;
|
|
|
|
|
unsigned int same_ind_;
|
|
|
|
|
|
2023-09-22 07:43:53 +00:00
|
|
|
|
hguser* user_;
|
|
|
|
|
offline_opts* offline_;
|
2023-05-13 08:26:43 +00:00
|
|
|
|
|
2022-05-03 03:56:07 +00:00
|
|
|
|
static sane_callback event_callback_;
|
|
|
|
|
static bool async_io_enabled_;
|
|
|
|
|
|
2023-07-02 06:13:55 +00:00
|
|
|
|
static std::string last_open_msg_;
|
2022-09-23 02:26:04 +00:00
|
|
|
|
static std::string pe_path_;
|
|
|
|
|
static std::string pe_name_;
|
2022-10-18 01:22:47 +00:00
|
|
|
|
static bool read_over_with_eof_;
|
2022-09-23 02:26:04 +00:00
|
|
|
|
|
2022-05-03 03:56:07 +00:00
|
|
|
|
static int ver_major_;
|
|
|
|
|
static int ver_minor_;
|
|
|
|
|
static int ver_build_;
|
|
|
|
|
static int ver_patch_;
|
|
|
|
|
|
2023-01-28 07:19:10 +00:00
|
|
|
|
static uint32_t unique_img_id_;
|
|
|
|
|
static std::mutex mutex_img_id;
|
|
|
|
|
|
2022-05-03 03:56:07 +00:00
|
|
|
|
static hg_scanner_mgr* inst_;
|
|
|
|
|
static void usb_event_handle(usb_event ev, libusb_device* device, int vid, int pid, int usb_ver_h, int usb_ver_l, bool* retry, void* user); // usb_ver_h.usb_ver_l
|
|
|
|
|
|
|
|
|
|
void on_hgscanner_pnp(usb_event ev, libusb_device* device, int vid, int pid, int usb_ver_h, int usb_ver_l, bool* retry); // usb_ver_h.usb_ver_l
|
|
|
|
|
void get_online_devices(std::vector<OLSCANNER>& devs);
|
|
|
|
|
|
|
|
|
|
void set_appendix_info_for_about(SANE_About* about, char*& ptr, int& count, const char* key, const char* info, const char* url);
|
2022-05-17 07:04:55 +00:00
|
|
|
|
scanner_err get_about_info(scanner_handle h, void* data, unsigned* len);
|
2022-05-03 03:56:07 +00:00
|
|
|
|
|
2023-06-12 12:06:28 +00:00
|
|
|
|
string cf_name;
|
2023-06-15 03:56:19 +00:00
|
|
|
|
string url_en;
|
|
|
|
|
string url_link_en;
|
2022-05-03 03:56:07 +00:00
|
|
|
|
protected:
|
|
|
|
|
hg_scanner_mgr();
|
|
|
|
|
~hg_scanner_mgr();
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
static int ui_default_callback(scanner_handle, int, void*, unsigned int*, void*);
|
|
|
|
|
static hg_scanner_mgr* instance(sane_callback cb = NULL);
|
|
|
|
|
static void clear(void);
|
|
|
|
|
static void set_version(int hh, int hl, int lh, int ll);
|
2023-09-22 07:43:53 +00:00
|
|
|
|
static void get_version(int* hh, int* hl, int* lh, int* ll);
|
2022-09-23 02:26:04 +00:00
|
|
|
|
static void set_exe_name(const char* path, const char* name);
|
|
|
|
|
static std::string get_pe_name(std::string* path = nullptr);
|
2023-01-28 07:19:10 +00:00
|
|
|
|
enum
|
|
|
|
|
{
|
|
|
|
|
UNIQUE_ID_IMG = 0,
|
|
|
|
|
};
|
|
|
|
|
static uint32_t unique_id(int type = UNIQUE_ID_IMG);
|
2022-05-03 03:56:07 +00:00
|
|
|
|
|
2022-07-13 10:22:31 +00:00
|
|
|
|
static hg_scanner* create_scanner_empty(const char* name, usb_io* io, scanner_handle* h);
|
|
|
|
|
static hg_scanner* create_scanner_g100(const char* name, usb_io* io, scanner_handle* h);
|
|
|
|
|
static hg_scanner* create_scanner_g239(const char* name, usb_io* io, scanner_handle* h);
|
|
|
|
|
static hg_scanner* create_scanner_g300(const char* name, usb_io* io, scanner_handle* h);
|
2022-08-18 06:50:43 +00:00
|
|
|
|
static hg_scanner* create_scanner_g302(const char* name, usb_io* io, scanner_handle* h);
|
2022-07-13 10:22:31 +00:00
|
|
|
|
static hg_scanner* create_scanner_g400(const char* name, usb_io* io, scanner_handle* h);
|
|
|
|
|
static hg_scanner* create_scanner_g402(const char* name, usb_io* io, scanner_handle* h);
|
2022-11-26 03:22:39 +00:00
|
|
|
|
static hg_scanner* create_scanner_g439(const char* name, usb_io* io, scanner_handle* h);
|
2022-07-13 10:22:31 +00:00
|
|
|
|
|
2022-05-03 03:56:07 +00:00
|
|
|
|
public:
|
2022-05-17 07:04:55 +00:00
|
|
|
|
scanner_err hg_scanner_enum(ScannerInfo* scanner_list, long* count, bool local_only);
|
|
|
|
|
scanner_err hg_scanner_open(scanner_handle* h, const char* name, bool shared, const char* user, const char* pwd, const char* check, char* rsc);
|
|
|
|
|
scanner_err hg_scanner_close(scanner_handle h, bool force);
|
2023-09-09 10:09:20 +00:00
|
|
|
|
scanner_err hg_scanner_get_parameter(scanner_handle h, const char* name, char* data, long* len, int type);
|
|
|
|
|
scanner_err hg_scanner_set_parameter(scanner_handle h, const char* name, void* data, bool to_default);
|
2022-05-17 07:04:55 +00:00
|
|
|
|
scanner_err hg_scanner_start(scanner_handle h, void* async_event, int num);
|
|
|
|
|
scanner_err hg_scanner_stop(scanner_handle h);
|
|
|
|
|
scanner_err hg_scanner_get_img_info(scanner_handle h, SANE_Parameters* bmi, long len);
|
|
|
|
|
scanner_err hg_scanner_read_img_data(scanner_handle h, unsigned char* data, long* len);
|
|
|
|
|
scanner_err hg_scanner_get_status(scanner_handle h, int setstutas);
|
|
|
|
|
scanner_err hg_scanner_reset(scanner_handle h);
|
|
|
|
|
scanner_err hg_scanner_control(scanner_handle h, unsigned long code, void* data, unsigned* len);
|
2023-01-29 07:01:38 +00:00
|
|
|
|
|
|
|
|
|
void on_language_changed(void);
|
2023-07-02 06:13:55 +00:00
|
|
|
|
const char* last_open_message(void);
|
2022-05-03 03:56:07 +00:00
|
|
|
|
};
|
|
|
|
|
|