新增设置序列号 ,vid pid

This commit is contained in:
13038267101 2023-01-03 11:12:53 +08:00
parent f7e958b5b7
commit d33b64778e
4 changed files with 213 additions and 176 deletions

View File

@ -510,12 +510,12 @@ void Form_mainInterface::setGlobalCfg(AnalysisJson analysisJson)
AnalysisJson::json_global jsonGlobal = analysisJson.GetGlobal(); AnalysisJson::json_global jsonGlobal = analysisJson.GetGlobal();
LPWRITECFG p = new WRITECFG; LPWRITECFG p = new WRITECFG;
p->cat = WRITE_CAT_VID;
p->val = &jsonGlobal.vid_to;
func_test_go((const wchar_t*)WRITE_CFG_NAME, (const wchar_t*)p, m_hg);
p->cat = WRITE_CAT_PID; VIDPID vidpid;
p->val = &jsonGlobal.pid_to; vidpid.VID = jsonGlobal.vid_to;
vidpid.PID = jsonGlobal.pid_to;
p->cat = WRITE_CAT_VID_PID;
p->val = &vidpid.Value;
func_test_go((const wchar_t*)WRITE_CFG_NAME, (const wchar_t*)p, m_hg); func_test_go((const wchar_t*)WRITE_CFG_NAME, (const wchar_t*)p, m_hg);
p->cat = WRITE_CAT_SPEED; p->cat = WRITE_CAT_SPEED;

View File

@ -68,6 +68,15 @@ private slots:
void on_pbtn_rightRotate_clicked(); void on_pbtn_rightRotate_clicked();
private: private:
union VIDPID
{
struct
{
unsigned short VID;
unsigned short PID;
};
unsigned int Value;
};
void initTableWidgetUi(); void initTableWidgetUi();
HGUInt getTestItem(const QString &title); HGUInt getTestItem(const QString &title);
HGUInt getTestItemStatus(const QString &title); HGUInt getTestItemStatus(const QString &title);

View File

@ -109,6 +109,167 @@ class test
{ {
ui_helper* helper_; ui_helper* helper_;
int fw_; int fw_;
/*设置vid pid*/
int test_set_vidpid(void* data)
{
unsigned int len = sizeof(int);
int set_vidpid = *((int*)data),
get_vidpid = 0,
ret = SCANNER_ERR_OK;
ret = helper_->io_control(IO_CTRL_CODE_SET_VIDPID, (void*)set_vidpid, &len);
if (ret == SCANNER_ERR_OK)
{
ret = helper_->io_control(IO_CTRL_CODE_GET_VIDPID, (void*)get_vidpid, &len);
if (set_vidpid == get_vidpid)
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"设置vidpid成功", true);
else
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"设置vidpid失败", false);
}
return ret;
}
/*设置序列号*/
int test_set_serial_num(void* data)
{
int ret = SCANNER_ERR_OK;
std::string set_sn = (char*)data,
get_sn;
unsigned int setlen = set_sn.size(),
getlen = 0;
ret = helper_->io_control(IO_CTRL_CODE_SET_SERIAL, &set_sn, &setlen);
if (ret != SCANNER_ERR_OK)return ret;
ret = helper_->io_control(IO_CTRL_CODE_GET_SERIAL, &get_sn, &getlen);
if (ret == SCANNER_ERR_INSUFFICIENT_MEMORY)
{
get_sn.resize(getlen);
ret = helper_->io_control(IO_CTRL_CODE_GET_SERIAL, &get_sn, &getlen);
}
if (ret != SCANNER_ERR_OK)return ret;
if (set_sn == get_sn)
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"设置序列号成功", true);
else
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"设置序列号失败", false);
return ret;
}
/* 设置休眠 */
int test_dormancy(void* data)
{
const wchar_t sleep_buf[8] = { 0,5,10,30,60,120,240 };
int sleep_time = *((int*)data);
SANE_Power power;
unsigned int len = sizeof(SANE_Power);
for (size_t i = 0; i < 8; i++)
{
if (sleep_buf[i] == sleep_time)
{
power = (SANE_Power)i;
}
}
int ret = helper_->io_control(IO_CTRL_CODE_SET_POWER_LEVEL, &power, &len);
if (ret != SCANNER_ERR_OK)
{
return ret;
}
int gettime = 0;
unsigned int timelen = sizeof(int*);
ret = helper_->io_control(IO_CTRL_CODE_GET_POWER_LEVEL, &gettime, &timelen);
if (gettime == INT_MAX || gettime == -1)
gettime = 0;
else
gettime /= 60;
if (sleep_time == gettime)
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"设置休眠时间成功", true);
else
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"设置休眠时间失败", false);
return ret;
}
/*获取固件版本号*/
std::string get_firmware_version()
{
std::string fw = "";
unsigned int len = 0;
int ret = helper_->io_control(IO_CTRL_CODE_GET_HARDWARE_VERSION, &fw[0], &len);
fw.resize(len);
ret = helper_->io_control(IO_CTRL_CODE_GET_HARDWARE_VERSION, &fw[0], &len);
return fw;
}
/* 配置速度模式 */
int test_configure_speed_mode(void* data)
{
unsigned int len = sizeof(int);
int speed_mode = *((int*)data);
bool type = false;
const wchar_t G139[6] = { 70,80,90,110 };
const wchar_t G239[6] = { 100,110,120,130 };
const wchar_t G300[6] = { 40,50,60,70 };
const wchar_t G400[6] = { 40,50,60,70,80 };
if (fw_ == 3 || fw_ == 4 && speed_mode >= 40 && speed_mode <= 80)
{
for (size_t i = 0; i < sizeof(G400) / sizeof(G400[0]); i++)//3288设置速度模式为1 2 3 4 5
{
if (G400[i] == speed_mode)
{
speed_mode = i + 1;
break;
}
}
}
int ret = helper_->io_control(IO_CTRL_CODE_SET_SPEED_MODE, &speed_mode, &len);
if (ret != SCANNER_ERR_OK)
{
return ret;
}
SANE_Int num = 0;
unsigned int l = sizeof(SANE_Int);
ret = helper_->io_control(IO_CTRL_CODE_GET_SPEED_MODE, &num, &l);
int save_num = 0;
if (fw_ == 3 || fw_ == 4 && num > 0 && num < 6)
{
for (size_t i = 0; i < sizeof(G400) / sizeof(G400[0]); i++)//3288设置速度模式为1 2 3 4 5
{
if ((num - 1) == i)
{
save_num = G400[i];
break;
}
}
}
else
save_num = num;
wchar_t* infocat = NULL;
wchar_t c[6];
if (num != speed_mode)
{
wchar_t buf[30] = L"设置速度模式失败...现在速度是:";
type = false;
wsprintfW(c, L"%dppm", save_num);
wcscat(buf, c);
infocat = buf;
}
else
{
wchar_t buf[30] = L"设置速度模式成功...现在速度是:";
type = true;
wsprintfW(c, L"%dppm", save_num);
wcscat(buf, c);
infocat = buf;
}
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)infocat, type);
return SCANNER_ERR_OK;
}
public: public:
static int sane_ex_callback(SANE_Handle hdev, int code, void* data, unsigned int* len, void* param) static int sane_ex_callback(SANE_Handle hdev, int code, void* data, unsigned int* len, void* param)
@ -216,6 +377,11 @@ public:
} }
else if (wcscmp(set_test_name_.c_str(), HGPDTTOOLDB_NAME_CIS_ORIGINAL_IMAGE) == 0) else if (wcscmp(set_test_name_.c_str(), HGPDTTOOLDB_NAME_CIS_ORIGINAL_IMAGE) == 0)
{ {
if (strcmp((char*)data, STATU_DESC_SCAN_STOPPED) != 0)
{
type = false;
wcscpy(buf, L"CIS原图初检, 原因--->");
}
h->io_control(IO_CTRL_CODE_SET_CIS_IMAGE, &close, &closelen); h->io_control(IO_CTRL_CODE_SET_CIS_IMAGE, &close, &closelen);
} }
else if (wcscmp(set_test_name_.c_str(), HGPDTTOOLDB_NAME_PRESSUER_TEST_RGB_200DPI) == 0 else if (wcscmp(set_test_name_.c_str(), HGPDTTOOLDB_NAME_PRESSUER_TEST_RGB_200DPI) == 0
@ -266,6 +432,7 @@ public:
wcscpy(buf, L"单张测试失败, 原因--->"); wcscpy(buf, L"单张测试失败, 原因--->");
} }
} }
wcscat(buf, wstr.c_str()); wcscat(buf, wstr.c_str());
ret = h->io_control(IO_CTRL_CODE_RESTORE_SETTINGS, NULL, NULL);//结束恢复默认 ret = h->io_control(IO_CTRL_CODE_RESTORE_SETTINGS, NULL, NULL);//结束恢复默认
@ -327,6 +494,7 @@ public:
std::map<std::wstring, int(test::*)(void *)> test_map_; std::map<std::wstring, int(test::*)(void *)> test_map_;
void init_test_map_() void init_test_map_()
{ {
test_map_[WRITE_CFG_NAME] = &test::set_init_cfg;
test_map_[HGPDTTOOLDB_NAME_CLEAR_PAPER_PATH] = &test::tset_clear_paper_path; test_map_[HGPDTTOOLDB_NAME_CLEAR_PAPER_PATH] = &test::tset_clear_paper_path;
test_map_[HGPDTTOOLDB_NAME_KEY_FUNCTION] = &test::test_key_funtion; test_map_[HGPDTTOOLDB_NAME_KEY_FUNCTION] = &test::test_key_funtion;
test_map_[HGPDTTOOLDB_NAME_COUNTING_MODE] = &test::test_count_mode; test_map_[HGPDTTOOLDB_NAME_COUNTING_MODE] = &test::test_count_mode;
@ -346,7 +514,6 @@ public:
test_map_[HGPDTTOOLDB_NAME_IMAGE_QUALITY] = &test::test_image_quality; test_map_[HGPDTTOOLDB_NAME_IMAGE_QUALITY] = &test::test_image_quality;
test_map_[HGPDTTOOLDB_NAME_DISTORTION] = &test::test_distortion; test_map_[HGPDTTOOLDB_NAME_DISTORTION] = &test::test_distortion;
test_map_[HGPDTTOOLDB_NAME_DORMANCY] = &test::test_dormancy; test_map_[HGPDTTOOLDB_NAME_DORMANCY] = &test::test_dormancy;
test_map_[HGPDTTOOLDB_NAME_SKEW_GEAR] = &test::test_skew_gear;
test_map_[HGPDTTOOLDB_NAME_PAPER_SEPARATION_STRENGTH] = &test::test_paper_separation_strength; test_map_[HGPDTTOOLDB_NAME_PAPER_SEPARATION_STRENGTH] = &test::test_paper_separation_strength;
test_map_[HGPDTTOOLDB_NAME_MECH_PAPER_FEEDING_INCLINATION] = &test::test_mech_paper_feeding_inclination; test_map_[HGPDTTOOLDB_NAME_MECH_PAPER_FEEDING_INCLINATION] = &test::test_mech_paper_feeding_inclination;
test_map_[HGPDTTOOLDB_NAME_CLEAR_ROLLER_COUNT] = &test::test_clear_roller_count; test_map_[HGPDTTOOLDB_NAME_CLEAR_ROLLER_COUNT] = &test::test_clear_roller_count;
@ -388,18 +555,34 @@ public:
return ret; return ret;
} }
public: public:
/*获取固件版本号*/
std::string get_firmware_version()
{
std::string fw = "";
unsigned int len = 0;
int ret = helper_->io_control(IO_CTRL_CODE_GET_HARDWARE_VERSION, &fw[0], &len);
fw.resize(len);
ret = helper_->io_control(IO_CTRL_CODE_GET_HARDWARE_VERSION, &fw[0], &len);
return fw; int set_init_cfg(void *data)
{
LPWRITECFG cfg = (LPWRITECFG)data;
unsigned int len = 0;
int ret = SCANNER_ERR_OK;
switch (cfg->cat)
{
case WRITE_CAT_VID_PID:
ret = test_set_vidpid(cfg->val);
break;
case WRITE_CAT_SPEED:
ret = test_configure_speed_mode(cfg->val);
break;
case WRITE_CAT_SLEEP:
ret = test_dormancy(cfg->val);
break;
case WRITE_CAT_SERIALNUM:
ret = test_set_serial_num(cfg->val);
break;
default:
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"协议未找到", false);
break;
}
return ret;
} }
/* 清理纸道功能确认 */ /* 清理纸道功能确认 */
int tset_clear_paper_path(void *data) int tset_clear_paper_path(void *data)
{ {
@ -549,107 +732,12 @@ public:
{ {
return helper_->io_control(IO_CTRL_CODE_GET_IMAGE, NULL, NULL); return helper_->io_control(IO_CTRL_CODE_GET_IMAGE, NULL, NULL);
} }
/* 扫描传感器检查 */ /* 扫描传感器检查 */
int test_scanning_sensor(void *data) int test_scanning_sensor(void *data)
{ {
return helper_->io_control(IO_CTRL_CODE_GET_IMAGE, NULL, NULL); return helper_->io_control(IO_CTRL_CODE_GET_IMAGE, NULL, NULL);
} }
/* 配置速度模式 */
int test_configure_speed_mode(void *data)
{
const wchar_t* NAME = set_test_name_.c_str();
unsigned int len = sizeof(int);
int speed_mode = 0;
void* get_data = NULL;
bool type = false;
ui_helper::_INFOTIPS info_;
const wchar_t *range=L"";
const wchar_t G139[6] = { 70,80,90,110};
const wchar_t G239[6] = { 100,110,120,130};
const wchar_t G300[6] = { 40,50,60,70 };
const wchar_t G400[6] = { 40,50,60,70,80};
const wchar_t *info = L"请设置速度模式,值越大速度越快.";
info_.info = info;
if (fw_ == 1)info_.desc = G139;
else if(fw_ == 2)info_.desc = G239;
else if(fw_ == 3)info_.desc = G300;
else if(fw_ == 4)info_.desc = G400;
parameter* ptr = helper_->get_user_input(ui_helper::DATA_FROM_USER, ui_helper::VAL_TYPE_TIPS_VAL,NAME, (wchar_t *) &info_);
if (ptr)
{
get_data = ptr->get_data();
if (!get_data)
{
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"速度模式设置失败...", false);
return -1;
}
speed_mode = *((int*)get_data);
if (fw_ == 3 || fw_ == 4 && speed_mode >= 40 && speed_mode <= 80)
{
for (size_t i = 0; i < sizeof(G400) / sizeof(G400[0]); i++)//3288设置速度模式为1 2 3 4 5
{
if (G400[i] == speed_mode)
{
speed_mode = i + 1;
break;
}
}
}
}
else
{
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"已退出--->设置速度模式...", false);
return -1;
}
ptr->release();
int ret = helper_->io_control(IO_CTRL_CODE_SET_SPEED_MODE, &speed_mode, &len);
if (ret != SCANNER_ERR_OK)
{
return ret;
}
SANE_Int num = 0;
unsigned int l = sizeof(SANE_Int);
ret = helper_->io_control(IO_CTRL_CODE_GET_SPEED_MODE, &num, &l);
int save_num = 0;
if (fw_ == 3 || fw_ == 4 && num > 0 && num < 6)
{
for (size_t i = 0; i < sizeof(G400) / sizeof(G400[0]); i++)//3288设置速度模式为1 2 3 4 5
{
if ((num -1)== i)
{
save_num = G400[i];
break;
}
}
}
else
save_num = num;
wchar_t* infocat = NULL;
wchar_t c[6];
if (num != speed_mode)
{
wchar_t buf[30] = L"设置速度模式失败...现在速度是:";
type = false;
wsprintfW(c, L"%dppm", save_num);
wcscat(buf, c);
infocat = buf;
}
else
{
wchar_t buf[30] = L"设置速度模式成功...现在速度是:";
type = true;
wsprintfW(c,L"%dppm", save_num);
wcscat(buf, c);
infocat = buf;
}
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)infocat, type);
return SCANNER_ERR_OK;
}
/* 放置校正纸 */ /* 放置校正纸 */
int test_place_correction_paper(void *data) int test_place_correction_paper(void *data)
{ {
@ -704,66 +792,7 @@ public:
unsigned int len = sizeof(SANE_Bool); unsigned int len = sizeof(SANE_Bool);
return helper_->io_control(IO_CTRL_CODE_GET_DPI_COLOR_CHECK_VAL, &type, &len); return helper_->io_control(IO_CTRL_CODE_GET_DPI_COLOR_CHECK_VAL, &type, &len);
} }
/* 设置休眠 */
int test_dormancy(void *data)
{
const wchar_t sleep_buf[10] = { 9999,5,10,30,60,120,240 };
ui_helper::_INFOTIPS info_;
void *get_data = NULL;
int sleep_time = 0;
SANE_Power power;
unsigned int len = sizeof(SANE_Power);
info_.desc = sleep_buf;
info_.info = L"9999:为不设置休眠,值越大休眠越久,单位是分钟";
parameter* ptr = helper_->get_user_input(ui_helper::DATA_FROM_USER, ui_helper::VAL_TYPE_TIPS_VAL, set_test_name_.c_str(), (wchar_t*)&info_);
if (ptr)
{
get_data = ptr->get_data();
if (get_data)
{
sleep_time = *((int*)get_data);
}
}
else
{
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT,(void*)L"已退出设置休眠模式",false);
return -1;
}
ptr->release();
for (size_t i = 0; i < 8; i++)
{
if (sleep_buf[i] == sleep_time)
{
power = (SANE_Power)i;
}
}
int ret = helper_->io_control(IO_CTRL_CODE_SET_POWER_LEVEL, &power, &len);
if (ret != SCANNER_ERR_OK)
{
return ret;
}
int gettime = 0;
unsigned int timelen = sizeof(int*);
ret = helper_->io_control(IO_CTRL_CODE_GET_POWER_LEVEL, &gettime, &timelen);
if (gettime == 999999 || gettime == -1)
gettime = 9999;
else
gettime /= 60;
if (sleep_time == gettime)
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"设置休眠时间成功", true);
else
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"设置休眠时间失败", false);
return ret;
}
/* 歪斜挡位检测 */
int test_skew_gear(void *data)
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
/* 分纸强度检测 */ /* 分纸强度检测 */
int test_paper_separation_strength(void *data) int test_paper_separation_strength(void *data)
{ {
@ -799,7 +828,6 @@ public:
return ret; return ret;
} }
/* 单张测试 */ /* 单张测试 */
int test_single_page_test(void* data) int test_single_page_test(void* data)
{ {

View File

@ -5,7 +5,7 @@
#include <Windows.h> #include <Windows.h>
//////////////////////////////////////TITLE////////////////////////////////////// //////////////////////////////////////TITLE//////////////////////////////////////
#define WRITE_CFG_NAME "write-cfg"
/* 拨码开关校验 */ /* 拨码开关校验 */
#define HGPDTTOOLDB_TITLE_DIAL_SWITCH L"拨码开关校验" #define HGPDTTOOLDB_TITLE_DIAL_SWITCH L"拨码开关校验"
/* 检查船型开关功能 */ /* 检查船型开关功能 */
@ -79,6 +79,7 @@
/*压力测试灰色+300dpi*/ /*压力测试灰色+300dpi*/
#define HGPDTTOOLDB_TITLE_PRESSUER_TEST_GRAY_300DPI L"压力测试灰色_300dpi" #define HGPDTTOOLDB_TITLE_PRESSUER_TEST_GRAY_300DPI L"压力测试灰色_300dpi"
//////////////////////////////////////NAME////////////////////////////////////// //////////////////////////////////////NAME//////////////////////////////////////
#define WRITE_CFG_NAME L"write-cfg"
/* 拨码开关校验 */ /* 拨码开关校验 */
#define HGPDTTOOLDB_NAME_DIAL_SWITCH L"DIAL_SWITCH" #define HGPDTTOOLDB_NAME_DIAL_SWITCH L"DIAL_SWITCH"
/* 检查船型开关功能 */ /* 检查船型开关功能 */
@ -88,11 +89,11 @@
/* 检查液晶显示 */ /* 检查液晶显示 */
#define HGPDTTOOLDB_NAME_LCD_DISPLAY L"LCD_DISPLAY" #define HGPDTTOOLDB_NAME_LCD_DISPLAY L"LCD_DISPLAY"
/* 清理纸道功能确认 */ /* 清理纸道功能确认 */
#define HGPDTTOOLDB_NAME_CLEAR_PAPER_PATH L"PAPER_PATH " #define HGPDTTOOLDB_NAME_CLEAR_PAPER_PATH L"PAPER_PATH"
/* 按键功能检测 */ /* 按键功能检测 */
#define HGPDTTOOLDB_NAME_KEY_FUNCTION L"KEY_FUNCTION" #define HGPDTTOOLDB_NAME_KEY_FUNCTION L"KEY_FUNCTION"
/* 计数模式检测 */ /* 计数模式检测 */
#define HGPDTTOOLDB_NAME_COUNTING_MODE L"COUNTING_MODE " #define HGPDTTOOLDB_NAME_COUNTING_MODE L"COUNTING_MODE"
/* 歪斜检测 */ /* 歪斜检测 */
#define HGPDTTOOLDB_NAME_SKEW_DETECTION L"SKEW_DETECTION" #define HGPDTTOOLDB_NAME_SKEW_DETECTION L"SKEW_DETECTION"
/* 分纸电机检测 */ /* 分纸电机检测 */
@ -179,8 +180,7 @@ DECL_API(int) func_test_get_list(wchar_t* buf // to receive the JSON text
enum write_cat enum write_cat
{ {
WRITE_CAT_VID = 0, // val = (int*) WRITE_CAT_VID_PID = 0, // val = (int*)
WRITE_CAT_PID, // val = (int*)
WRITE_CAT_SPEED, // val = (int*) WRITE_CAT_SPEED, // val = (int*)
WRITE_CAT_SLEEP, // val = (int*) WRITE_CAT_SLEEP, // val = (int*)
WRITE_CAT_SERIALNUM // val = (char*) WRITE_CAT_SERIALNUM // val = (char*)