增加读取设备内存和硬盘容量接口

This commit is contained in:
yangjiaxuan 2023-09-20 10:26:46 +08:00
parent 3b41e5736e
commit 5f03c3f529
6 changed files with 184 additions and 1 deletions

View File

@ -4523,6 +4523,40 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len)
strcpy((char*)data, str.c_str()); strcpy((char*)data, str.c_str());
return SCANNER_ERR_OK; return SCANNER_ERR_OK;
} }
else if (code == IO_CTRL_CODE_GET_DEVS_CPU)
{
string str;
int ret = get_devs_cpu(str);
if (str.empty())
{
ret = SCANNER_ERR_NO_DATA;
}
if (*len < str.size())
{
*len = str.size();
ret = SCANNER_ERR_INSUFFICIENT_MEMORY;
}
strcpy((char*)data, str.c_str());
return ret;
}
else if (code == IO_CTRL_CODE_GET_DEVS_DISK)
{
string str;
int ret = get_devs_disk(str);
if (str.empty())
{
ret = SCANNER_ERR_NO_DATA;
}
if (*len < str.size())
{
*len = str.size();
ret = SCANNER_ERR_INSUFFICIENT_MEMORY;
}
strcpy((char*)data, str.c_str());
return ret;
}
else if (code == IO_CTRL_CODE_GET_SCAN_WITH_HOLE) else if (code == IO_CTRL_CODE_GET_SCAN_WITH_HOLE)
{ {
*(SANE_Bool*)data = image_prc_param_.bits.rid_hole || isremove_left_hole || isremove_low_hole || isremove_right_hole || isremove_top_hole ? SANE_TRUE : SANE_FALSE; *(SANE_Bool*)data = image_prc_param_.bits.rid_hole || isremove_left_hole || isremove_low_hole || isremove_right_hole || isremove_top_hole ? SANE_TRUE : SANE_FALSE;
@ -4701,6 +4735,14 @@ int hg_scanner::get_devs_time(string& times)
{ {
return SCANNER_ERR_DEVICE_NOT_SUPPORT; return SCANNER_ERR_DEVICE_NOT_SUPPORT;
} }
int hg_scanner::get_devs_cpu(string& cpu)
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
int hg_scanner::get_devs_disk(string& disk)
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
int hg_scanner::set_device_model(string sts) int hg_scanner::set_device_model(string sts)
{ {
return SCANNER_ERR_DEVICE_NOT_SUPPORT; return SCANNER_ERR_DEVICE_NOT_SUPPORT;

View File

@ -549,6 +549,9 @@ public:
virtual int set_devs_time(string times); //设置设备时间 //3399设备支持 virtual int set_devs_time(string times); //设置设备时间 //3399设备支持
virtual int get_devs_time(string &times); //获取设备时间 //3399设备支持 virtual int get_devs_time(string &times); //获取设备时间 //3399设备支持
virtual int get_devs_cpu(string& cpu); //获取设备内存大小
virtual int get_devs_disk(string& disk); //获取设备硬盘容量大小
}; };

View File

@ -380,6 +380,48 @@ int hg_scanner_239::get_devs_time(string& times)
} }
return ret; return ret;
} }
int hg_scanner_239::get_devs_cpu(string& cpu)
{
string path = "/usr/local/huago/sysinfo.json";
long long cpu_size = 0;
std:string str;
int ret = read_control_device_files(path, str);
json js = json::parse(str);
if (js.contains("MemTotal"))
{
cpu_size = js["MemTotal"];
}
float num = (float)cpu_size / 1024 / 1024 / 1024;
char buf[10] = { 0 };
sprintf(buf, "%.2f", num);
strcat(buf, "GB");
cpu = buf;
return ret;
}
int hg_scanner_239::get_devs_disk(string& disk)
{
string path = "/usr/local/huago/sysinfo.json";
long disk_size = 0;
std:string str;
int ret = read_control_device_files(path, str);
json js = json::parse(str);
if (js.contains("DiskTotal"))
{
disk_size = js["DiskTotal"];
}
float num = (float)disk_size / 1024 / 1024;
char buf[10] = { 0 };
sprintf(buf, "%.2f", num);
strcat(buf, "GB");
disk = buf;
return ret;
}
int hg_scanner_239::get_status(void) int hg_scanner_239::get_status(void)
{ {
std::lock_guard<std::mutex> lock(io_lock_); std::lock_guard<std::mutex> lock(io_lock_);

View File

@ -142,5 +142,7 @@ public:
virtual int set_devs_time(string times); //设置设备时间 //3399设备支持 virtual int set_devs_time(string times); //设置设备时间 //3399设备支持
virtual int get_devs_time(string& times); //获取设备时间 //3399设备支持 virtual int get_devs_time(string& times); //获取设备时间 //3399设备支持
virtual int get_devs_cpu(string& cpu); //获取设备内存大小
virtual int get_devs_disk(string& disk); //获取设备硬盘容量大小
}; };

View File

@ -1423,6 +1423,98 @@ int hg_scanner_300::set_updata0303(void)
} }
return 0; return 0;
} }
int hg_scanner_300::get_devs_cpu(string& cpu)
{
std::string src_name = "/usr/local/huago/sysinfo.json";
std::string dst_name = "./sys.log";
USBCB usbcb = { 0 };
usbcb.u32_CMD = 0x301;
usbcb.u32_Count = src_name.length();
int len = src_name.length();
int size = sizeof(usbcb);
int ret = io_->write_bulk(&usbcb, &size);
ret = io_->write_bulk(&src_name[0], &len);
usbcb.u32_CMD = 0x300;
ret = io_->write_bulk(&usbcb, &size);
ret = io_->read_bulk(&usbcb, &size);
ofstream out(dst_name);
usbcb.u32_CMD = 0x302;
ret = io_->write_bulk(&usbcb, &size);
int touch = 0;
std::string buff;
int bufsize = usbcb.u32_Count < 512 * 1024 ? usbcb.u32_Count : 512 * 1024;
buff.resize(bufsize);
while (touch < usbcb.u32_Count)
{
io_->read_bulk(&buff[0], &bufsize);
out.write(&buff[0], bufsize);
touch += bufsize;
bufsize = bufsize > usbcb.u32_Count - touch ? usbcb.u32_Count - touch : bufsize;
}
out.close();
long long cpu_size = 0;
json js = json::parse(buff);
if (js.contains("MemTotal"))
{
cpu_size = js["MemTotal"];
}
float num = (float)cpu_size / 1024 / 1024 / 1024;
char buf[10] = { 0 };
sprintf(buf, "%.2f", num);
strcat(buf, "GB");
cpu = buf;
return ret;
}
int hg_scanner_300::get_devs_disk(string& disk)
{
std::string src_name = "/usr/local/huago/sysinfo.json";
std::string dst_name = "./sys.log";
USBCB usbcb = { 0 };
usbcb.u32_CMD = 0x301;
usbcb.u32_Count = src_name.length();
int len = src_name.length();
int size = sizeof(usbcb);
int ret = io_->write_bulk(&usbcb, &size);
ret = io_->write_bulk(&src_name[0], &len);
usbcb.u32_CMD = 0x300;
ret = io_->write_bulk(&usbcb, &size);
ret = io_->read_bulk(&usbcb, &size);
ofstream out(dst_name);
usbcb.u32_CMD = 0x302;
ret = io_->write_bulk(&usbcb, &size);
int touch = 0;
std::string buff;
int bufsize = usbcb.u32_Count < 512 * 1024 ? usbcb.u32_Count : 512 * 1024;
buff.resize(bufsize);
while (touch < usbcb.u32_Count)
{
io_->read_bulk(&buff[0], &bufsize);
out.write(&buff[0], bufsize);
touch += bufsize;
bufsize = bufsize > usbcb.u32_Count - touch ? usbcb.u32_Count - touch : bufsize;
}
out.close();
long disk_size = 0;
json js = json::parse(buff);
if (js.contains("DiskTotal"))
{
disk_size = js["DiskTotal"];
}
float num = (float)disk_size / 1024 / 1024;
char buf[10] = { 0 };
sprintf(buf, "%.2f", num);
strcat(buf, "GB");
disk = buf;
return ret;
}
int hg_scanner_300::set_serial_num(string str) int hg_scanner_300::set_serial_num(string str)
{ {
std::lock_guard<std::mutex> lock(io_lock_); std::lock_guard<std::mutex> lock(io_lock_);

View File

@ -1,4 +1,4 @@
#pragma once #pragma once
// hg_scanner is the base class of kinds of scanners // hg_scanner is the base class of kinds of scanners
// //
@ -116,4 +116,6 @@ public:
virtual int set_auto_flat(int data)override; //设置自动平场校正 virtual int set_auto_flat(int data)override; //设置自动平场校正
// data:0(ALL) 1(200dpi、gray) 2(200dpi、color) 3(300dpi、gray) 4(300dpi、color) 5(600dpi、gray) 6(600dpi、color) // data:0(ALL) 1(200dpi、gray) 2(200dpi、color) 3(300dpi、gray) 4(300dpi、color) 5(600dpi、gray) 6(600dpi、color)
virtual int set_updata0303(void)override; virtual int set_updata0303(void)override;
virtual int get_devs_cpu(string& cpu); //获取设备内存大小
virtual int get_devs_disk(string& disk); //获取设备硬盘容量大小
}; };