diff --git a/app/HGProductionTool/form_maininterface.cpp b/app/HGProductionTool/form_maininterface.cpp index 2106a14..4cde1b4 100644 --- a/app/HGProductionTool/form_maininterface.cpp +++ b/app/HGProductionTool/form_maininterface.cpp @@ -510,12 +510,12 @@ void Form_mainInterface::setGlobalCfg(AnalysisJson analysisJson) AnalysisJson::json_global jsonGlobal = analysisJson.GetGlobal(); 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; - p->val = &jsonGlobal.pid_to; + VIDPID vidpid; + 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); p->cat = WRITE_CAT_SPEED; diff --git a/app/HGProductionTool/form_maininterface.h b/app/HGProductionTool/form_maininterface.h index ffb4f08..a3c1348 100644 --- a/app/HGProductionTool/form_maininterface.h +++ b/app/HGProductionTool/form_maininterface.h @@ -68,6 +68,15 @@ private slots: void on_pbtn_rightRotate_clicked(); private: + union VIDPID + { + struct + { + unsigned short VID; + unsigned short PID; + }; + unsigned int Value; + }; void initTableWidgetUi(); HGUInt getTestItem(const QString &title); HGUInt getTestItemStatus(const QString &title); diff --git a/code/base/test_base.cpp b/code/base/test_base.cpp index d40c2b7..e273604 100644 --- a/code/base/test_base.cpp +++ b/code/base/test_base.cpp @@ -109,6 +109,167 @@ class test { ui_helper* helper_; 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: 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) { + 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); } else if (wcscmp(set_test_name_.c_str(), HGPDTTOOLDB_NAME_PRESSUER_TEST_RGB_200DPI) == 0 @@ -266,6 +432,7 @@ public: wcscpy(buf, L"单张测试失败, 原因--->"); } } + wcscat(buf, wstr.c_str()); ret = h->io_control(IO_CTRL_CODE_RESTORE_SETTINGS, NULL, NULL);//结束恢复默认 @@ -327,6 +494,7 @@ public: std::map 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_KEY_FUNCTION] = &test::test_key_funtion; 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_DISTORTION] = &test::test_distortion; 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_MECH_PAPER_FEEDING_INCLINATION] = &test::test_mech_paper_feeding_inclination; test_map_[HGPDTTOOLDB_NAME_CLEAR_ROLLER_COUNT] = &test::test_clear_roller_count; @@ -388,18 +555,34 @@ public: return ret; } 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) { @@ -549,107 +732,12 @@ public: { return helper_->io_control(IO_CTRL_CODE_GET_IMAGE, NULL, NULL); } - /* 扫描传感器检查 */ int test_scanning_sensor(void *data) { 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) { @@ -704,66 +792,7 @@ public: unsigned int len = sizeof(SANE_Bool); 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) { @@ -799,7 +828,6 @@ public: return ret; } - /* 单张测试 */ int test_single_page_test(void* data) { diff --git a/code/base/test_base.h b/code/base/test_base.h index 73501c9..37a0875 100644 --- a/code/base/test_base.h +++ b/code/base/test_base.h @@ -5,7 +5,7 @@ #include //////////////////////////////////////TITLE////////////////////////////////////// -#define WRITE_CFG_NAME "write-cfg" + /* 拨码开关校验 */ #define HGPDTTOOLDB_TITLE_DIAL_SWITCH L"拨码开关校验" /* 检查船型开关功能 */ @@ -79,6 +79,7 @@ /*压力测试灰色+300dpi*/ #define HGPDTTOOLDB_TITLE_PRESSUER_TEST_GRAY_300DPI L"压力测试灰色_300dpi" //////////////////////////////////////NAME////////////////////////////////////// +#define WRITE_CFG_NAME L"write-cfg" /* 拨码开关校验 */ #define HGPDTTOOLDB_NAME_DIAL_SWITCH L"DIAL_SWITCH" /* 检查船型开关功能 */ @@ -88,11 +89,11 @@ /* 检查液晶显示 */ #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_COUNTING_MODE L"COUNTING_MODE " +#define HGPDTTOOLDB_NAME_COUNTING_MODE L"COUNTING_MODE" /* 歪斜检测 */ #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 { - WRITE_CAT_VID = 0, // val = (int*) - WRITE_CAT_PID, // val = (int*) + WRITE_CAT_VID_PID = 0, // val = (int*) WRITE_CAT_SPEED, // val = (int*) WRITE_CAT_SLEEP, // val = (int*) WRITE_CAT_SERIALNUM // val = (char*)