Merge branch 'master' of http://192.168.10.5:8099/sane/code_device
This commit is contained in:
commit
4918baf072
|
@ -171,7 +171,7 @@ namespace local_utility
|
||||||
return str > bgn;
|
return str > bgn;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 暂不支持科学计数<EFBFBD>?1.2e+10
|
// æš‚ä¸<EFBFBD>支æŒ<EFBFBD>科å¦è®¡æ•°æ³?1.2e+10
|
||||||
bool get_number(const char*& str, double& val)
|
bool get_number(const char*& str, double& val)
|
||||||
{
|
{
|
||||||
const char* bgn = str;
|
const char* bgn = str;
|
||||||
|
@ -331,6 +331,29 @@ namespace local_utility
|
||||||
cb_ui_parm_ = NULL;
|
cb_ui_parm_ = NULL;
|
||||||
cb_auth_ = NULL;
|
cb_auth_ = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void trans_language_if_was_word_id(std::string& val)
|
||||||
|
{
|
||||||
|
size_t pos = val.find(".");
|
||||||
|
|
||||||
|
if (pos != std::string::npos)
|
||||||
|
{
|
||||||
|
bool num = true;
|
||||||
|
for (size_t i = pos + 1; i < val.length(); ++i)
|
||||||
|
{
|
||||||
|
if (val[i] != '0')
|
||||||
|
{
|
||||||
|
num = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (num && std::to_string(atoi(val.c_str())) == val.substr(0, pos))
|
||||||
|
{
|
||||||
|
val = lang_load_string(atoi(val.c_str()), nullptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -557,7 +580,7 @@ SANE_Option_Descriptor* hg_sane_middleware::string_option_to_SANE_descriptor(con
|
||||||
sod->unit = SANE_UNIT_NONE;
|
sod->unit = SANE_UNIT_NONE;
|
||||||
sod->size = values.size();
|
sod->size = values.size();
|
||||||
sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项
|
sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项
|
||||||
| SANE_CAP_AUTOMATIC; // 硬件可设置默认<EFBFBD>?
|
| SANE_CAP_AUTOMATIC; // 硬件å<EFBFBD>¯è®¾ç½®é»˜è®¤å€?
|
||||||
if (values.size())
|
if (values.size())
|
||||||
{
|
{
|
||||||
sod->constraint_type = SANE_CONSTRAINT_STRING_LIST;
|
sod->constraint_type = SANE_CONSTRAINT_STRING_LIST;
|
||||||
|
@ -678,7 +701,7 @@ SANE_Option_Descriptor* hg_sane_middleware::number_option_to_SANE_descriptor(con
|
||||||
sod->unit = SANE_UNIT_NONE;
|
sod->unit = SANE_UNIT_NONE;
|
||||||
sod->size = sizeof(SANE_Word);
|
sod->size = sizeof(SANE_Word);
|
||||||
sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项
|
sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项
|
||||||
/*| SANE_CAP_AUTOMATIC*/; // 硬件可设置默认<EFBFBD>?
|
/*| SANE_CAP_AUTOMATIC*/; // 硬件å<EFBFBD>¯è®¾ç½®é»˜è®¤å€?
|
||||||
|
|
||||||
if (values.size())
|
if (values.size())
|
||||||
{
|
{
|
||||||
|
@ -728,7 +751,7 @@ SANE_Option_Descriptor* hg_sane_middleware::number_option_to_SANE_descriptor(con
|
||||||
sod->unit = SANE_UNIT_NONE;
|
sod->unit = SANE_UNIT_NONE;
|
||||||
sod->size = sizeof(SANE_Word);
|
sod->size = sizeof(SANE_Word);
|
||||||
sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项
|
sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项
|
||||||
/*| SANE_CAP_AUTOMATIC*/; // 硬件可设置默认<EFBFBD>?
|
/*| SANE_CAP_AUTOMATIC*/; // 硬件å<EFBFBD>¯è®¾ç½®é»˜è®¤å€?
|
||||||
|
|
||||||
if (values.size())
|
if (values.size())
|
||||||
{
|
{
|
||||||
|
@ -861,22 +884,7 @@ SANE_Option_Descriptor* hg_sane_middleware::from_json(scanner_handle h, const st
|
||||||
constraints.push_back(val);
|
constraints.push_back(val);
|
||||||
while (range->next_child(val))
|
while (range->next_child(val))
|
||||||
{
|
{
|
||||||
pos = val.find(".");
|
local_utility::trans_language_if_was_word_id(val);
|
||||||
if (pos != std::string::npos)
|
|
||||||
{
|
|
||||||
for (size_t i = val.length() - 1; i > pos; --i)
|
|
||||||
{
|
|
||||||
if (val[i] != '0')
|
|
||||||
{
|
|
||||||
pos = i + 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
val.erase(pos);
|
|
||||||
}
|
|
||||||
if (std::to_string(atoi(val.c_str())) == val)
|
|
||||||
constraints.push_back(lang_load_string(atoi(val.c_str()), (int*)&lower));
|
|
||||||
else
|
|
||||||
constraints.push_back(val);
|
constraints.push_back(val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1004,7 +1012,7 @@ SANE_Option_Descriptor* hg_sane_middleware::from_json(scanner_handle h, const st
|
||||||
//if (jsn->get_value("enable", enabled) && !enabled)
|
//if (jsn->get_value("enable", enabled) && !enabled)
|
||||||
// ret->cap |= SANE_CAP_INACTIVE;
|
// ret->cap |= SANE_CAP_INACTIVE;
|
||||||
|
|
||||||
// 关联<EFBFBD>?
|
// å…³è<EFBFBD>”é¡?
|
||||||
json* depend = NULL;
|
json* depend = NULL;
|
||||||
SLAVEOP so;
|
SLAVEOP so;
|
||||||
if (jsn->get_value("depend_or", depend))
|
if (jsn->get_value("depend_or", depend))
|
||||||
|
@ -1026,22 +1034,24 @@ SANE_Option_Descriptor* hg_sane_middleware::from_json(scanner_handle h, const st
|
||||||
// initializing status ...
|
// initializing status ...
|
||||||
if (so.master.size())
|
if (so.master.size())
|
||||||
{
|
{
|
||||||
std::string master(get_option_json(h, (void *)so.master[0].name.c_str()));
|
//std::string master(get_option_json(h, (void *)so.master[0].name.c_str()));
|
||||||
json* m = new json();
|
//json* m = new json();
|
||||||
if (m->attach_text(&master[0]))
|
//if (m->attach_text(&master[0]))
|
||||||
{
|
//{
|
||||||
bool integer = false;
|
// bool integer = false, str = false;
|
||||||
|
|
||||||
master = "";
|
// master = "";
|
||||||
m->get_value("type", master);
|
// m->get_value("type", master);
|
||||||
integer = master == "int";
|
// integer = master == "int";
|
||||||
master = "";
|
// str = master == "string";
|
||||||
m->get_value_as_string("cur", master, integer);
|
// master = "";
|
||||||
|
// m->get_value_as_string("cur", master, integer);
|
||||||
|
// local_utility::trans_language_if_was_word_id(val);
|
||||||
so.enable_now = so.is_enable(so.master, (*it)->cur_vals);
|
so.enable_now = so.is_enable(so.master, (*it)->cur_vals);
|
||||||
if (!so.enable_now)
|
if (!so.enable_now)
|
||||||
ret->cap |= SANE_CAP_INACTIVE;
|
ret->cap |= SANE_CAP_INACTIVE;
|
||||||
}
|
//}
|
||||||
delete m;
|
//delete m;
|
||||||
}
|
}
|
||||||
(*it)->slaves.push_back(so);
|
(*it)->slaves.push_back(so);
|
||||||
}
|
}
|
||||||
|
@ -1358,7 +1368,7 @@ SANE_Status hg_sane_middleware::get_devices(const SANE_Device*** device_list, SA
|
||||||
|
|
||||||
if (hgerr == SCANNER_ERR_INSUFFICIENT_MEMORY)
|
if (hgerr == SCANNER_ERR_INSUFFICIENT_MEMORY)
|
||||||
{
|
{
|
||||||
count += 4; // 为两次hg_scanner_enum间隙可能新增的设备预留空<EFBFBD>?
|
count += 4; // 为两次hg_scanner_enumé—´éš™å<EFBFBD>¯èƒ½æ–°å¢žçš„设备预留空é—?
|
||||||
dev = (ScannerInfo*)local_utility::acquire_memory(sizeof(ScannerInfo) * count, "hg_sane_middleware::get_devices");
|
dev = (ScannerInfo*)local_utility::acquire_memory(sizeof(ScannerInfo) * count, "hg_sane_middleware::get_devices");
|
||||||
hgerr = hg_scanner_enum(dev, &count, local_only);
|
hgerr = hg_scanner_enum(dev, &count, local_only);
|
||||||
if (hgerr != SCANNER_ERR_OK)
|
if (hgerr != SCANNER_ERR_OK)
|
||||||
|
@ -1736,7 +1746,7 @@ bool hg_sane_middleware::is_ready(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 关联项处<EFBFBD>?
|
/// å…³è<EFBFBD>”项处ç<EFBFBD>?
|
||||||
bool hg_sane_middleware::compare_val_equal(const char* cur_val, const char* limit_l, const char* limit_r)
|
bool hg_sane_middleware::compare_val_equal(const char* cur_val, const char* limit_l, const char* limit_r)
|
||||||
{
|
{
|
||||||
return strcmp(cur_val, limit_l) == 0;
|
return strcmp(cur_val, limit_l) == 0;
|
||||||
|
@ -2032,6 +2042,8 @@ bool hg_sane_middleware::refresh_current_value(LPDEVINST dev, const char* name,
|
||||||
jsn->get_value("type", cv.type);
|
jsn->get_value("type", cv.type);
|
||||||
cv.name = name;
|
cv.name = name;
|
||||||
jsn->get_value_as_string("cur", cv.val, cv.type == "int");
|
jsn->get_value_as_string("cur", cv.val, cv.type == "int");
|
||||||
|
if (cv.type == "string")
|
||||||
|
local_utility::trans_language_if_was_word_id(cv.val);
|
||||||
dev->cur_vals.push_back(cv);
|
dev->cur_vals.push_back(cv);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -2040,6 +2052,8 @@ bool hg_sane_middleware::refresh_current_value(LPDEVINST dev, const char* name,
|
||||||
{
|
{
|
||||||
std::string old(it->val);
|
std::string old(it->val);
|
||||||
jsn->get_value_as_string("cur", it->val, it->type == "int");
|
jsn->get_value_as_string("cur", it->val, it->type == "int");
|
||||||
|
if (it->type == "string")
|
||||||
|
local_utility::trans_language_if_was_word_id(it->val);
|
||||||
|
|
||||||
return old != it->val;
|
return old != it->val;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue