修复获取操作带参数的问题
This commit is contained in:
parent
7998c2a827
commit
d61d408ff5
|
@ -357,35 +357,42 @@ namespace local_utility
|
||||||
//TRY_MATCH(DRIVER_LOG);
|
//TRY_MATCH(DRIVER_LOG);
|
||||||
//TRY_MATCH(DEVICE_LOG);
|
//TRY_MATCH(DEVICE_LOG);
|
||||||
}
|
}
|
||||||
static std::string un_json_option_name(int id)
|
static std::string un_json_option_name(int id, int *len)
|
||||||
{
|
{
|
||||||
#define FIX_ID_TO_NAME(fid) \
|
int tmp = sizeof(int);
|
||||||
|
if (!len)
|
||||||
|
len = &tmp;
|
||||||
|
|
||||||
|
#define FIX_ID_TO_NAME(fid, l) \
|
||||||
if(id == SANE_OPT_ID_##fid) \
|
if(id == SANE_OPT_ID_##fid) \
|
||||||
return SANE_STD_OPT_NAME_##fid;
|
{ \
|
||||||
|
*len = l; \
|
||||||
|
return SANE_STD_OPT_NAME_##fid; \
|
||||||
|
}
|
||||||
|
|
||||||
FIX_ID_TO_NAME(HISTORY_COUNT);
|
FIX_ID_TO_NAME(HISTORY_COUNT, sizeof(int));
|
||||||
FIX_ID_TO_NAME(DRIVER_VERSION);
|
FIX_ID_TO_NAME(DRIVER_VERSION, 255);
|
||||||
FIX_ID_TO_NAME(MANUFACTURER);
|
FIX_ID_TO_NAME(MANUFACTURER, 255);
|
||||||
FIX_ID_TO_NAME(COPYRIGHT);
|
FIX_ID_TO_NAME(COPYRIGHT, 255);
|
||||||
FIX_ID_TO_NAME(CO_URL);
|
FIX_ID_TO_NAME(CO_URL, 255);
|
||||||
FIX_ID_TO_NAME(CO_TEL);
|
FIX_ID_TO_NAME(CO_TEL, 255);
|
||||||
FIX_ID_TO_NAME(CO_ADDR);
|
FIX_ID_TO_NAME(CO_ADDR, 255);
|
||||||
FIX_ID_TO_NAME(CO_GPS);
|
FIX_ID_TO_NAME(CO_GPS, 255);
|
||||||
FIX_ID_TO_NAME(VID);
|
FIX_ID_TO_NAME(VID, sizeof(int));
|
||||||
FIX_ID_TO_NAME(PID);
|
FIX_ID_TO_NAME(PID, sizeof(int));
|
||||||
FIX_ID_TO_NAME(DEV_NAME);
|
FIX_ID_TO_NAME(DEV_NAME, 255);
|
||||||
FIX_ID_TO_NAME(DEV_FAMILY);
|
FIX_ID_TO_NAME(DEV_FAMILY, 255);
|
||||||
FIX_ID_TO_NAME(ROLLER_COUNT);
|
FIX_ID_TO_NAME(ROLLER_COUNT, sizeof(int));
|
||||||
FIX_ID_TO_NAME(HELP);
|
FIX_ID_TO_NAME(HELP, sizeof(int));
|
||||||
FIX_ID_TO_NAME(LOGIN);
|
FIX_ID_TO_NAME(LOGIN, 255);
|
||||||
FIX_ID_TO_NAME(LOGOUT);
|
FIX_ID_TO_NAME(LOGOUT, 255);
|
||||||
FIX_ID_TO_NAME(DRIVER_LOG);
|
FIX_ID_TO_NAME(DRIVER_LOG, 255);
|
||||||
FIX_ID_TO_NAME(DEVICE_LOG);
|
FIX_ID_TO_NAME(DEVICE_LOG, 255);
|
||||||
|
|
||||||
FIX_ID_TO_NAME(DEVICE_SERIAL_NO);
|
FIX_ID_TO_NAME(DEVICE_SERIAL_NO, 255);
|
||||||
FIX_ID_TO_NAME(FIRMWARE_VERSION);
|
FIX_ID_TO_NAME(FIRMWARE_VERSION, 255);
|
||||||
FIX_ID_TO_NAME(DEVICE_IP_ADDR);
|
FIX_ID_TO_NAME(DEVICE_IP_ADDR, 255);
|
||||||
FIX_ID_TO_NAME(DEVICE_MAC_ADDR);
|
FIX_ID_TO_NAME(DEVICE_MAC_ADDR, 255);
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
@ -1344,13 +1351,15 @@ bool hg_sane_middleware::get_current_value(scanner_handle handle, const void* op
|
||||||
{
|
{
|
||||||
if (IS_PTR_NUMBER(option))
|
if (IS_PTR_NUMBER(option))
|
||||||
{
|
{
|
||||||
int id = (int)(uint64_t)option;
|
int id = (int)(uint64_t)option,
|
||||||
std::string name(local_utility::un_json_option_name(id));
|
l = 0;
|
||||||
|
std::string name(local_utility::un_json_option_name(id, &l));
|
||||||
|
|
||||||
if(!name.empty())
|
if(!name.empty())
|
||||||
{
|
{
|
||||||
char buf[256] = { 0 };
|
char buf[256] = { 0 };
|
||||||
long len = sizeof(buf) - 1;
|
long len = sizeof(buf) - 1;
|
||||||
|
memcpy(buf, value, l);
|
||||||
if (hg_scanner_get_parameter(handle, name.c_str(), buf, &len) == SCANNER_ERR_OK)
|
if (hg_scanner_get_parameter(handle, name.c_str(), buf, &len) == SCANNER_ERR_OK)
|
||||||
{
|
{
|
||||||
setv(buf, len, value);
|
setv(buf, len, value);
|
||||||
|
@ -1769,8 +1778,9 @@ SANE_Status hg_sane_middleware::set_option(SANE_Handle h, const void* option, SA
|
||||||
{
|
{
|
||||||
if (IS_PTR_NUMBER(option))
|
if (IS_PTR_NUMBER(option))
|
||||||
{
|
{
|
||||||
int id = (int)(uint64_t)option;
|
int id = (int)(uint64_t)option,
|
||||||
std::string name(local_utility::un_json_option_name(id));
|
l = 0;
|
||||||
|
std::string name(local_utility::un_json_option_name(id, &l));
|
||||||
if (!name.empty())
|
if (!name.empty())
|
||||||
return local_utility::scanner_err_2_sane_statu(hg_scanner_set_parameter(handle, name.c_str(), value, 0));
|
return local_utility::scanner_err_2_sane_statu(hg_scanner_set_parameter(handle, name.c_str(), value, 0));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue