调整协议

This commit is contained in:
13038267101 2022-12-29 18:05:59 +08:00
parent 82dd0aaab2
commit dd2ccf4499
15 changed files with 153 additions and 57 deletions

View File

@ -3186,38 +3186,44 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len)
switch (val)
{
case SANE_POWER_NONE:
sleeptime = -1;
case SLEEP_TIME_0MIN:
if (pid_ == 0x300 || pid_ == 0x400)
val = 999999; //3288不休眠
else
val = -1; //不休眠 -1 3399
break;
case SANE_POWER_MINUTES_5:
sleeptime = 5;
case SLEEP_TIME_5MIN:
val = 5;
break;
case SANE_POWER_MINUTES_10:
sleeptime = 10;
case SLEEP_TIME_10MIN:
val = 10;
break;
case SANE_POWER_MINUTES_20:
sleeptime = 20;
case SLEEP_TIME_30MIN:
val = 30;
break;
case SANE_POWER_MINUTES_30:
sleeptime = 30;
case SLEEP_TIME_60MIN:
val = 60;
break;
case SANE_POWER_MINUTES_60:
sleeptime = 60;
case SLEEP_TIME_120MIN:
val = 120;
break;
case SANE_POWER_MINUTES_120:
sleeptime = 120;
break;
case SANE_POWER_MINUTES_240:
sleeptime = 240;
case SLEEP_TIME_240MIN:
val = 240;
break;
case SANE_POWER_SHUTDOWN:
return set_devshtudown();
case SANE_POWER_RESTART:
return set_devreboot(val);
default:
sleeptime = -1;
val = -1;
break;
}
sleeptime = val;
if (val != -1 && val != 999999)
{
sleeptime = val * 60;
}
return set_sleep_time(sleeptime);
}
else if (code == IO_CTRL_CODE_GET_CUSTOM_GAMMA)
@ -3316,10 +3322,10 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len)
string str = (char*)data;
return set_firmware_upgrade(str);
}
else if (code == IO_CTRL_CODE_GET_HISTORY_ROLLER_NUM)
else if (code == IO_CTRL_CODE_GET_HISTORY_SCAN_NUM)
{
int num = 0;
int ret = get_history_roller_count(num);
int ret = get_history_scan_count(num);
(*(int*)data) = num;
return ret;
}
@ -3327,7 +3333,7 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len)
{
return set_clean_paper_road();
}
else if (code == IO_CTRL_CODE_GET_SCANN_NUM)
else if (code == IO_CTRL_CODE_GET_ROLLER_NUM)
{
int num = 0;
int ret = get_roller_num(num);
@ -3358,6 +3364,10 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len)
{
return set_speed_mode(*((int*)data));
}
else if (code == IO_CTRL_CODE_GET_SPEED_MODE)
{
return get_speed_mode(*((int*)data));
}
else if (code == IO_CTRL_CODE_SET_CIS_IMAGE)
{
return on_cis_get_image(*((bool*)data));
@ -3370,6 +3380,10 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len)
{
return set_dpi_color_check(*((bool*)data));
}
else if(code == IO_CTRL_CODE_SET_DEVS_REBOOT)
{
return set_devreboot(*((int*)data));
}
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
std::string hg_scanner::get_firmware_version(void)
@ -3404,7 +3418,7 @@ int hg_scanner::set_clear_roller_num(void)
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
int hg_scanner::get_history_roller_count(int &num)
int hg_scanner::get_history_scan_count(int &num)
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
@ -3444,6 +3458,11 @@ int hg_scanner::set_speed_mode(int data)
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
int hg_scanner::get_speed_mode(int& data)
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
int hg_scanner::set_dpi_color_check(bool type)
{
is_dpi_color_check = type;

View File

@ -458,11 +458,11 @@ public:
virtual int get_scan_is_sleep(SANE_Bool& type) = 0; //获取设备是否休眠当中 /*/ type : false休眠不正常状态false true未休眠*/
virtual int get_sleep_time(int& data) = 0; //获取功耗模式(休眠) /*/ data > 0*/
virtual int set_sleep_time(int data) = 0; //设置功耗模式(休眠) /*/ data > 0*/
virtual int get_history_roller_count(int &data) = 0; //获取历史扫描张数 /*/ data > 0*/
virtual int get_history_scan_count(int &data) = 0; //获取历史扫描张数 /*/ data > 0*/
virtual int get_roller_num(int &data) = 0; //获取滚轮张数 /*/ data > 0*/
virtual int set_notify_sleep(void) = 0; //唤醒设备
virtual int get_device_log(string &log) = 0; //获取设备日志 /*/ log :储存路径*/
virtual int set_devreboot(int data) = 0; //设置设备重启 /*/ data:0 reboot data:1
virtual int set_devreboot(int data) = 0; //设置设备重启 /*/ data:0 reboot data:1 1进入loader,0普通重启
virtual int set_devshtudown() = 0; //设置设备关机
virtual int set_scan_islock(SANE_Bool type) = 0; //设置设备是否锁定 /*/ type:0解锁1锁定*/
virtual int get_scan_islock(SANE_Bool& type) = 0; //获取设备是否锁定 /*/ type:0解锁1锁定*/
@ -473,6 +473,7 @@ public:
virtual int set_dev_islock_file(int data) = 0; //设置设备文件 /*/ data:0 未上锁1 上锁*/
virtual int get_scan_mode(bool& type) ; //获取设备是否计数模式 /*/ type:false计数模式 true非计数模式
virtual int set_speed_mode(int data) = 0; //设置速度模式 /*/ 设备不同值不同,详情见子类注释
virtual int get_speed_mode(int &data) = 0; //获取速度模式 /*/ 设备不同值不同,详情见子类注释
virtual int set_dpi_color_check(bool type); //获取畸变矫正
virtual int set_dpi_color_check_val(void) = 0; //设置畸变矫正值
};

View File

@ -840,16 +840,21 @@ int hg_scanner_200::set_speed_mode(int data)
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
int hg_scanner_200::get_speed_mode(int& data)
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
int hg_scanner_200::set_dpi_color_check_val(void)
{
return 0;
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
int hg_scanner_200::set_notify_sleep()
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
int hg_scanner_200::get_history_roller_count(int& num)
int hg_scanner_200::get_history_scan_count(int& num)
{
int ret = SCANNER_ERR_OK,
len = 0;

View File

@ -82,7 +82,7 @@ public:
virtual int get_scan_is_sleep(SANE_Bool& type) override; //获取设备是否休眠当中 /*/ type : 0休眠 1唤醒状态*/
virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠) /*/ data > 0*/
virtual int set_sleep_time(int data) override; //设置功耗模式(休眠) /*/ data > 0*/
virtual int get_history_roller_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/
virtual int get_history_scan_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/
virtual int get_roller_num(int& data) override; //获取滚轮张数 /*/ data > 0*/
virtual int set_notify_sleep(void) override; //唤醒设备
virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/
@ -96,5 +96,6 @@ public:
virtual int get_dev_islock_file(int& data) override; //获取设备文件 /*/ data:0 未上锁1 上锁。-1 未发现黑名单列表 -2列表没有信息*/
virtual int set_dev_islock_file(int data) override; //设置设备文件 /*/ data:0 未上锁1 上锁*/
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ 不支持
virtual int get_speed_mode(int &data) override; //设置速度模式 /*/ 不支持
virtual int set_dpi_color_check_val(void) override; //设置畸变矫正
};

View File

@ -254,6 +254,10 @@ int hg_scanner_239::set_speed_mode(int data)
{
return write_register(setting3399::SR_SET_SPEEDMODE, data);
}
int hg_scanner_239::get_speed_mode(int& data)
{
return read_register(setting3399::SR_GET_SPEEDMODE, &data);
}
int hg_scanner_239::set_dpi_color_check_val(void)
{
setting3399::Scanner_Reg_Defs ratio = setting3399::SR_SET_H_200_RATIO;
@ -1248,7 +1252,7 @@ std::string hg_scanner_239::get_ip(void)
{
return control_fetch(setting3399::SR_GET_IPADDR, 0, 40);
}
int hg_scanner_239::get_history_roller_count(int &val)
int hg_scanner_239::get_history_scan_count(int &val)
{
int ret = read_register(setting3399::SR_GET_SCANN_NUM, &val);
return ret;

View File

@ -97,7 +97,7 @@ public:
virtual int get_scan_is_sleep(SANE_Bool& type) override; //获取设备是否休眠当中 /*/ type : 0休眠 1唤醒状态*/
virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠) /*/ data > 0*/
virtual int set_sleep_time(int data) override; //设置功耗模式(休眠) /*/ data > 0*/
virtual int get_history_roller_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/
virtual int get_history_scan_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/
virtual int get_roller_num(int& data) override; //获取滚轮张数 /*/ data > 0*/
virtual int set_notify_sleep(void) override; //唤醒设备
virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/
@ -113,6 +113,7 @@ public:
virtual int get_scan_mode(bool& type); //获取是否是计数模式 /*/ type : fasle计数模式 true非计数 */
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ data:100,110,120
virtual int get_speed_mode(int& data)override; //获取速度模式 /*/ data:100,110,120
virtual int set_dpi_color_check_val(void) override; //设置畸变矫正值
virtual int get_dpi_color_check_val(int &data); //获取畸变矫正
};

View File

@ -116,12 +116,25 @@ void hg_scanner_300::thread_handle_usb_read(void)
statu = last_usb_image_statu(ret);
savestatus_.push_back(ret);
}
else
statu = SANE_Image_Statu_OK;
if (sw.elapsed_ms() > 30000)//防止状态信息一直取不上来导致卡死
else if (ret != SCANNER_ERR_NO_DATA)
{
status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_OK;//以第一个消息为准
statu = SANE_Image_Statu_OK;
}
else if (ret == SCANNER_ERR_NO_DATA && savestatus_.empty() &&sw.elapsed_ms() > 5000)
{
SANE_Bool is_paperon = false;
get_scanner_paperon(is_paperon);
if (!is_paperon && !user_cancel_)
{
status_ = SCANNER_ERR_DEVICE_NO_PAPER;
break;
}
}
if (sw.elapsed_ms() > 20000)//防止状态信息一直取不上来导致卡死
{
status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_TIMEOUT;//以第一个消息为准
savestatus_.clear();
hg_log::log(LOG_LEVEL_WARNING, "get status timeout,get image out\n");
break;
@ -196,14 +209,14 @@ void hg_scanner_300::thread_handle_usb_read(void)
VLOG_MINI_1(LOG_LEVEL_WARNING, "device start status is(%s)\n", STATU_DESC_SCANNER_ERR_DEVICE_SLEEPING);
return status_;
}
ret = get_scanner_paperon(val);
if (!val)
{
status_ = SCANNER_ERR_DEVICE_NO_PAPER;
notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_NO_PAPER, SANE_EVENT_ERROR, status_);
VLOG_MINI_1(LOG_LEVEL_WARNING, "device start status is(%s)\n", STATU_DESC_SCANNER_ERR_DEVICE_NO_PAPER);
return status_;
}
//ret = get_scanner_paperon(val);
//if (!val)
//{
// status_ = SCANNER_ERR_DEVICE_NO_PAPER;
// notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_NO_PAPER, SANE_EVENT_ERROR, status_);
// VLOG_MINI_1(LOG_LEVEL_WARNING, "device start status is(%s)\n", STATU_DESC_SCANNER_ERR_DEVICE_NO_PAPER);
// return status_;
//}
USBCB usb = { setting3288dsp::START_COMMAND, img_conf_.scannum, 0};
ret = writeusb(usb);
@ -586,7 +599,8 @@ int hg_scanner_300::set_leaflet_scan(void)
int hg_scanner_300::set_clear_roller_num(void)
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
USBCB usbcb = { setting3288dsp::CLR_ROLLER_NUM,0,4 };
return writeusb(usbcb);
}
int hg_scanner_300::get_device_code(void)
{
@ -757,11 +771,30 @@ int hg_scanner_300::set_speed_mode(int data)
int ret = SCANNER_ERR_OK,
len = 0;
USBCB usbcb = { setting3288dsp::SET_SPEED_MODE,data,len };
USBCB usbcb = { setting3288dsp::SET_SPEED_MODE,data,0 };
len = sizeof(usbcb);
ret = io_->write_bulk(&usbcb, &len);
return 0;
}
int hg_scanner_300::get_speed_mode(int& data)
{
int ret = SCANNER_ERR_OK,
len = 0;
USBCB usbcb = { setting3288dsp::GET_SPEED_MODE,0,0 };
len = sizeof(usbcb);
ret = io_->write_bulk(&usbcb, &len);
if (ret != SCANNER_ERR_OK)
{
return ret;
}
ret = io_->read_bulk(&usbcb, &len);
if (ret == SCANNER_ERR_OK)
{
data = usbcb.u32_Data;
}
return ret;
}
int hg_scanner_300::set_dpi_color_check_val(void)
{
int ret = SCANNER_ERR_OK,
@ -781,7 +814,7 @@ int hg_scanner_300::set_notify_sleep()
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
int hg_scanner_300::get_history_roller_count(int& num)
int hg_scanner_300::get_history_scan_count(int& num)
{
int ret = SCANNER_ERR_OK,
len = 0;

View File

@ -84,7 +84,7 @@ public:
virtual int get_scan_is_sleep(SANE_Bool& type) override; //获取设备是否休眠当中 /*/ type : 0休眠 1唤醒状态*/
virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠) /*/ data > 0*/
virtual int set_sleep_time(int data) override; //设置功耗模式(休眠) /*/ data > 0*/
virtual int get_history_roller_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/
virtual int get_history_scan_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/
virtual int get_roller_num(int& data) override; //获取滚轮张数 /*/ data > 0*/
virtual int set_notify_sleep(void) override; //唤醒设备
virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/
@ -98,5 +98,6 @@ public:
virtual int get_dev_islock_file(int& data) override; //获取设备文件 /*/ data:0 未上锁1 上锁。-1 未发现黑名单列表 -2列表没有信息*/
virtual int set_dev_islock_file(int data) override; //设置设备文件 /*/ data:0 未上锁1 上锁*
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ data:40,50,60,70
virtual int get_speed_mode(int& data)override; //获取速度模式 /*/ data:40,50,60,70
virtual int set_dpi_color_check_val(void) override; //设置畸变矫正
};

View File

@ -1260,6 +1260,10 @@ int hg_scanner_302::set_speed_mode(int data)
{
return write_register(setting3399::SR_SET_SPEEDMODE, data);
}
int hg_scanner_302::get_speed_mode(int& data)
{
return read_register(setting3399::SR_SET_SPEEDMODE, &data);
}
int hg_scanner_302::set_dpi_color_check_val(void)
{
setting3399::Scanner_Reg_Defs retio = setting3399::SR_SET_H_200_RATIO;
@ -1284,7 +1288,7 @@ int hg_scanner_302::get_roller_num(int& num)
int ret = read_register(setting3399::SR_GET_ROLLER_NUM, &num);
return ret;
}
int hg_scanner_302::get_history_roller_count(int& val)
int hg_scanner_302::get_history_scan_count(int& val)
{
int ret = read_register(setting3399::SR_GET_SCANN_NUM, &val);
return ret;

View File

@ -105,7 +105,7 @@ public:
virtual int get_scan_is_sleep(SANE_Bool& type) override; //获取设备是否休眠当中 /*/ type : 0休眠 1唤醒状态*/
virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠) /*/ data > 0*/
virtual int set_sleep_time(int data) override; //设置功耗模式(休眠) /*/ data > 0*/
virtual int get_history_roller_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/
virtual int get_history_scan_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/
virtual int get_roller_num(int& data) override; //获取滚轮张数 /*/ data > 0*/
virtual int set_notify_sleep(void) override; //唤醒设备
virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/
@ -119,5 +119,6 @@ public:
virtual int get_dev_islock_file(int& data) override; //获取设备文件 /*/ data:0 未上锁1 上锁。-1 未发现黑名单列表 -2列表没有信息*/
virtual int set_dev_islock_file(int data) override; //设置设备文件 /*/ data:0 未上锁1 上锁*/
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ data:40,50,60,70
virtual int get_speed_mode(int& data)override; //获取速度模式 /*/ data:40,50,60,70
virtual int set_dpi_color_check_val(void) override; //设置畸变矫正
};

View File

@ -606,7 +606,8 @@ int hg_scanner_400::set_leaflet_scan(void)
int hg_scanner_400::set_clear_roller_num(void)
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
USBCB usbcb = { setting3288dsp::CLR_ROLLER_NUM,0,4 };
return writeusb(usbcb);
}
int hg_scanner_400::get_device_code(void)
@ -782,6 +783,25 @@ int hg_scanner_400::set_speed_mode(int data)
ret = io_->write_bulk(&usbcb, &len);
return ret;
}
int hg_scanner_400::get_speed_mode(int& data)
{
int ret = SCANNER_ERR_OK,
len = 0;
USBCB usbcb = { setting3288dsp::GET_SPEED_MODE,0,0 };
len = sizeof(usbcb);
ret = io_->write_bulk(&usbcb, &len);
if (ret != SCANNER_ERR_OK)
{
return ret;
}
ret = io_->read_bulk(&usbcb, &len);
if (ret == SCANNER_ERR_OK)
{
data = usbcb.u32_Data;
}
return ret;
}
int hg_scanner_400::set_dpi_color_check_val(void)
{
int ret = SCANNER_ERR_OK,
@ -801,7 +821,7 @@ int hg_scanner_400::set_notify_sleep()
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
int hg_scanner_400::get_history_roller_count(int& num)
int hg_scanner_400::get_history_scan_count(int& num)
{
int ret = SCANNER_ERR_OK,
len = 0;

View File

@ -87,7 +87,7 @@ public:
virtual int get_scan_is_sleep(SANE_Bool& type) override; //获取设备是否休眠当中 /*/ type : 0休眠 1唤醒状态*/
virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠) /*/ data > 0*/
virtual int set_sleep_time(int data) override; //设置功耗模式(休眠) /*/ data > 0*/
virtual int get_history_roller_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/
virtual int get_history_scan_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/
virtual int get_roller_num(int& data) override; //获取滚轮张数 /*/ data > 0*/
virtual int set_notify_sleep(void) override; //唤醒设备
virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/
@ -101,5 +101,6 @@ public:
virtual int get_dev_islock_file(int& data) override; //获取设备文件 /*/ data:0 未上锁1 上锁。-1 未发现黑名单列表 -2列表没有信息*/
virtual int set_dev_islock_file(int data) override; //设置设备文件 /*/ data:0 未上锁1 上锁*
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ data:40,50,60,7080
virtual int get_speed_mode(int &data) override; //设置速度模式 /*/ data:40,50,60,7080
virtual int set_dpi_color_check_val(void) override; //设置畸变矫正
};

View File

@ -1220,6 +1220,10 @@ int hg_scanner_402::set_speed_mode(int data)
{
return write_register(setting3399::SR_SET_SPEEDMODE, data);
}
int hg_scanner_402::get_speed_mode(int& data)
{
return read_register(setting3399::SR_SET_SPEEDMODE, &data);
}
int hg_scanner_402::set_dpi_color_check_val(void)
{
setting3399::Scanner_Reg_Defs retio = setting3399::SR_SET_H_200_RATIO;
@ -1244,7 +1248,7 @@ int hg_scanner_402::get_roller_num(int& num)
int ret = read_register(setting3399::SR_GET_ROLLER_NUM, &num);
return ret;
}
int hg_scanner_402::get_history_roller_count(int& val)
int hg_scanner_402::get_history_scan_count(int& val)
{
int ret = read_register(setting3399::SR_GET_SCANN_NUM, &val);
return ret;

View File

@ -105,7 +105,7 @@ public:
virtual int get_scan_is_sleep(SANE_Bool& type) override; //获取设备是否休眠当中 /*/ type : 0休眠 1唤醒状态*/
virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠) /*/ data > 0*/
virtual int set_sleep_time(int data) override; //设置功耗模式(休眠) /*/ data > 0*/
virtual int get_history_roller_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/
virtual int get_history_scan_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/
virtual int get_roller_num(int& data) override; //获取滚轮张数 /*/ data > 0*/
virtual int set_notify_sleep(void) override; //唤醒设备
virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/
@ -119,5 +119,6 @@ public:
virtual int get_dev_islock_file(int& data) override; //获取设备文件 /*/ data:0 未上锁1 上锁。-1 未发现黑名单列表 -2列表没有信息*/
virtual int set_dev_islock_file(int data) override; //设置设备文件 /*/ data:0 未上锁1 上锁*/
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ data:40,50,60,7080
virtual int get_speed_mode(int &data) override; //设置速度模式 /*/ data:40,50,60,7080
virtual int set_dpi_color_check_val(void) override; //设置畸变矫正
};

View File

@ -532,7 +532,7 @@ scanner_err hg_scanner_mgr::get_about_info(scanner_handle h, void* data, unsigne
set_appendix_info_for_about(about, ptr, count, BRAND_TITLE_ROLLER_COUNT, rolls == -1 ? BRAND_COMMUNICATION_FAIL : BRAND_DEVICE_NOT_SUPPORT, NULL);
#endif
ret = scanner->get_history_roller_count(rolls);
ret = scanner->get_history_scan_count(rolls);
if (ret == SCANNER_ERR_OK)
{
char buf[40];