code_device/hgdriver/hgdev/jsonconfig.cpp

139 lines
2.8 KiB
C++
Raw Normal View History

2022-05-03 03:56:07 +00:00
#include "jsonconfig.h"
#include <streambuf>
jsonconfig::jsonconfig()
{
}
jsonconfig::jsonconfig(int devnum):DEVICEJSONPATH("")
{
switch (devnum)
{
case 100:
DEVICEJSONPATH=G100JSONPATH;
break;
case 200:
DEVICEJSONPATH=G200JSONPATH;
break;
case 300:
DEVICEJSONPATH=G300JSONPATH;
break;
case 400:
DEVICEJSONPATH=G400JSONPATH;
break;
default:
break;
}
}
json jsonconfig::loadjson(std::string path)
{
json js="";
if(path.empty())
return js;
std::ifstream f;
f.open(path,std::ios::in | std::ios::binary);
if(f.is_open()){
//std::string text = (std::stringstream() << f.rdbuf()).str();
std::string text ((std::istreambuf_iterator<char>(f)),
std::istreambuf_iterator<char>());
js = json::parse(text);
f.close();
}
return js;
}
json jsonconfig::loadjson()
{
json js="";
std::string path=DEVICEJSONPATH;
if(path.empty())
return js;
std::ifstream f;
f.open(path,std::ios::in | std::ios::binary);
if(f.is_open()){
std::string text ((std::istreambuf_iterator<char>(f)),
std::istreambuf_iterator<char>());
js = json::parse(text);
f.close();
}
return js;
}
json jsonconfig::load_json_from_text(const char* json_txt)
{
return json::parse(json_txt);
}
std::string jsonconfig::getdeviceparam(unsigned param_no)
{
json js=loadjson();
if (js.empty())
return NULL;
js[std::to_string(param_no)]["cur"]=0;
std::string str=js[std::to_string(param_no)].dump();
if (str.empty())
return NULL;
return str;
}
bool jsonconfig::savejson(std::string path,json js)
{
if(path.empty())
return false;
std::ofstream of;
of.open(path);
if(of.is_open())
{
of.write(js.dump().data(),js.dump().size());
of.close();
return true;
}
return false;
}
json jsonconfig::defaultjson()
{
std::string jsstr=R"({
"info":[{
"type":"GScanO200",
"name":"HUAGO G100 Scanner",
"vid":"3072",
"pid":"100"
},
{
"type":"GScanO200",
"name":"HUAGO G200 Scanner",
"vid":"3072",
"pid":"200"
},
{
"type":"GScanO400",
"name":"HUAGO G300 Scanner",
"vid":"3072",
"pid":"300"
},
{
"type":"GScanO400",
"name":"HUAGO G400 Scanner",
"vid":"3072",
"pid":"400"
},
{
"type":"GScanO1003399",
"name":"HUAGO G139 Scanner",
"vid":"3072",
"pid":"139"
},
{
"type":"GScanO1003399",
"name":"HUAGO G239 Scanner",
"vid":"3072",
"pid":"239"
}]
})";
return json::parse(jsstr);
}