From 323081aca9b9a7110d2646e0fc896b90989ecc1e Mon Sep 17 00:00:00 2001 From: 13038267101 Date: Thu, 29 Dec 2022 18:07:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/base/test_base.cpp | 160 ++++++++++++++++++++++++++++++---------- 1 file changed, 122 insertions(+), 38 deletions(-) diff --git a/code/base/test_base.cpp b/code/base/test_base.cpp index 1faa31f..ca74aec 100644 --- a/code/base/test_base.cpp +++ b/code/base/test_base.cpp @@ -89,10 +89,20 @@ public: if (wcscmp(set_test_name_.c_str(), HGPDTTOOLDB_NAME_SKEW_DETECTION) == 0) { - type = strcmp((char*)data, STATU_DESC_SCANNER_ERR_DEVICE_PAPER_SKEW) == 0 ? true : false; + if (strcmp((char*)data, STATU_DESC_SCANNER_ERR_DEVICE_PAPER_SKEW) != 0) + { + type = false; + wchar_t buf[128] = L"未检测到纸张倾斜,原因--->"; + wcscat(buf, wstr.c_str()); + wstr = buf; + } + else + type = true; + } else if (wcscmp(set_test_name_.c_str(), HGPDTTOOLDB_NAME_CIS_ORIGINAL_IMAGE) == 0) { + io_type = false; h->io_control(IO_CTRL_CODE_SET_CIS_IMAGE, &io_type, &io_len); } else if (wcscmp(set_test_name_.c_str(), HGPDTTOOLDB_NAME_DISTORTION) == 0) @@ -210,7 +220,7 @@ public: helper_->test_callback(str, ui_helper::TEST_EVENT_NOT_FIND_TEST, NULL, false); return ret; } - if (ret != SCANNER_ERR_OK) + if (ret != SCANNER_ERR_OK && ret != -1) { helper_->test_callback(str, ui_helper::TEST_EVENT_IO_FAIL, NULL, ret); } @@ -258,7 +268,7 @@ public: { return ret; } - helper_->test_callback((wchar_t*)data, ui_helper::TEST_EVENT_MANUAL_CONFIRMATION, (void*)L"请确认是否清理纸道成功", true); + helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_MANUAL_CONFIRMATION, (void*)L"请确认是否清理纸道成功", true); return ret; } /* 按键功能检测 */ @@ -277,13 +287,13 @@ public: { return ret; } - helper_->test_callback((wchar_t*)data, ui_helper::TEST_EVENT_MANUAL_CONFIRMATION, (void*)L"请确认与液晶面板是否匹配", ismode); + helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_MANUAL_CONFIRMATION, (void*)L"请确认与液晶面板是否匹配", ismode); return ret; } /* 歪斜检测 */ int test_skew_detection(void *data) { - const wchar_t* NAME = (wchar_t*)data; + const wchar_t* NAME = set_test_name_.c_str(); SANE_Bool type = true; unsigned int len = sizeof(SANE_Bool); int num = 0; @@ -294,23 +304,25 @@ public: get_data = ptr->get_data(); if (!get_data) { - helper_->test_callback((wchar_t*)data, ui_helper::TEST_EVENT_RESULT, (void*)L"已退出歪斜检测流程", false); + helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"已退出歪斜检测流程", false); return -1; } num = *((int*)get_data); } else { - helper_->test_callback((wchar_t*)data, ui_helper::TEST_EVENT_RESULT, (void*)L"已退出歪斜检测流程", false); + helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"已退出歪斜检测流程", false); return -1; } type = num == 0 ? false:true; ptr->release(); int ret = helper_->io_control(IO_CTRL_CODE_SET_SKEW_CHECK, &type, &len); - if (ret != SCANNER_ERR_OK)return ret; + if (ret != SCANNER_ERR_OK) + return ret; ret = helper_->io_control(IO_CTRL_CODE_SET_SKEW_CHECK_VAL, &num, &len); - if (ret != SCANNER_ERR_OK)return ret; + if (ret != SCANNER_ERR_OK) + return ret; ret = helper_->io_control(IO_CTRL_CODE_TEST_SINGLE, NULL, NULL); return ret; @@ -323,7 +335,7 @@ public: /* cis原图初检 */ int test_cis__original_image(void *data) { - const wchar_t* NAME = (wchar_t*)data; + const wchar_t* NAME = set_test_name_.c_str(); SANE_Bool type = true; unsigned int len = sizeof(SANE_Bool); int ret = SCANNER_ERR_OK; @@ -348,7 +360,7 @@ public: /* 超声波模块检验 */ int test_ultrasonic_module(void *data) { - const wchar_t* NAME = (wchar_t*)data; + const wchar_t* NAME = set_test_name_.c_str(); SANE_Bool type = true; unsigned int len = sizeof(SANE_Bool); void* get_data = NULL; @@ -360,7 +372,7 @@ public: get_data = ptr->get_data(); if (!get_data) { - helper_->test_callback((wchar_t*)data, ui_helper::TEST_EVENT_RESULT, (void*)L"已退出超声波模块检测流程", false); + helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"已退出超声波模块检测流程", false); return -1; } else @@ -368,7 +380,7 @@ public: } else { - helper_->test_callback((wchar_t*)data, ui_helper::TEST_EVENT_RESULT, (void*)L"已退出超声波模块检测流程", false); + helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"已退出超声波模块检测流程", false); return -1; } ptr->release(); @@ -410,7 +422,7 @@ public: /* 配置速度模式 */ int test_configure_speed_mode(void *data) { - const wchar_t* NAME = (wchar_t*)data; + const wchar_t* NAME = set_test_name_.c_str(); unsigned int len = sizeof(int); int speed_mode = 0; void* get_data = NULL; @@ -422,7 +434,7 @@ public: 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}; - wchar_t info[128] = L"请设置速度模式,值越大速度越快."; + const wchar_t *info = L"请设置速度模式,值越大速度越快."; info_.info = info; if (fw_ == 1)info_.desc = G139; else if(fw_ == 2)info_.desc = G239; @@ -434,25 +446,21 @@ public: get_data = ptr->get_data(); if (!get_data) { - type = false; - helper_->test_callback((wchar_t*)data, ui_helper::TEST_EVENT_RESULT, (void*)L"速度模式设置失败...", type); + 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) //3288设置速度模式为1 2 3 4 5 + if (fw_ == 3 || fw_ == 4 && speed_mode >= 40 && speed_mode <= 80) { - if (speed_mode == 40)speed_mode = 1; - else if (speed_mode == 50)speed_mode = 2; - else if (speed_mode == 60)speed_mode = 3; - else if (speed_mode == 70)speed_mode = 4; - else if (speed_mode == 80)speed_mode = 5; - else speed_mode = 1; + for (size_t i = 1; i < sizeof(G400) / sizeof(G400[0]); i++)//3288设置速度模式为1 2 3 4 5 + { + speed_mode = G400[i] == speed_mode ? i : 1; + } } } else { - type = false; - helper_->test_callback((wchar_t*)data, ui_helper::TEST_EVENT_RESULT, (void*)L"已退出--->设置速度模式...", type); + helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"已退出--->设置速度模式...", false); return -1; } ptr->release(); @@ -468,21 +476,21 @@ public: if (fw_ == 3 || fw_ == 4 && num > 0 && num < 6) { - if (num == 1)save_num = 40; - else if (num == 2)save_num = 50; - else if (num == 3)save_num = 60; - else if (num == 4)save_num = 70; - else if (num == 5)save_num = 80; + for (size_t i = 1; i < sizeof(G400) / sizeof(G400[0]); i++)//3288设置速度模式为1 2 3 4 5 + { + if (num == i) + save_num = G400[i]; + } } else save_num = num; wchar_t* infocat = NULL; + wchar_t c[6]; if (num != speed_mode) { wchar_t buf[30] = L"设置速度模式失败...现在速度是:"; type = false; - wchar_t c[4]; wsprintfW(c, L"%dppm", save_num); wcscat(buf, c); @@ -492,12 +500,11 @@ public: { wchar_t buf[30] = L"设置速度模式成功...现在速度是:"; type = true; - wchar_t c[6]; wsprintfW(c,L"%dppm", save_num); wcscat(buf, c); infocat = buf; } - helper_->test_callback((wchar_t*)data, ui_helper::TEST_EVENT_RESULT, (void*)infocat, type); + helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)infocat, type); return SCANNER_ERR_OK; } /* 放置校正纸 */ @@ -513,13 +520,38 @@ public: /* 重启设备 */ int test_reboot_device(void *data) { + bool is_reboot = false; + void* get_data = NULL; + int i = 0; + unsigned int len = sizeof(SANE_Int); + parameter* ptr = helper_->get_user_input(ui_helper::DATA_FROM_USER, ui_helper::VAL_TYPE_BOOL, set_test_name_.c_str(),L"是否进入烧录模式,是:进入烧写模式(rebootloader) 否:设备普通重启(reboot)"); + 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; + } + is_reboot = *((bool*)get_data); + } + else + { + helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"已退出--->重启设备模式...", false); + return -1; + } + i = is_reboot; + int ret = helper_->io_control(IO_CTRL_CODE_SET_DEVS_REBOOT, &i, &len); + if (ret != SCANNER_ERR_OK) + return ret; - return SCANNER_ERR_OK; + helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_DISTORTION, (void*)L"设备重启中,请观察设备是否重启", true); + return ret; } /* 扫描图像质量确认 */ int test_image_quality(void *data) { - const wchar_t* NAME = (wchar_t*)data; + const wchar_t* NAME = set_test_name_.c_str(); SANE_Bool type = false; unsigned int len = sizeof(SANE_Bool); int ret = helper_->io_control(IO_CTRL_CODE_SET_SKEW_CHECK, &type, &len); @@ -548,7 +580,7 @@ public: /* 畸变修正 */ int test_distortion(void *data) { - const wchar_t* NAME = (wchar_t*)data; + const wchar_t* NAME = set_test_name_.c_str(); SANE_Bool type = true; unsigned int len = sizeof(SANE_Bool); return helper_->io_control(IO_CTRL_CODE_GET_DPI_COLOR_CHECK_VAL, &type, &len); @@ -556,6 +588,38 @@ public: /* 设置休眠 */ 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; + } + } + return helper_->io_control(IO_CTRL_CODE_SET_POWER_LEVEL, &power, &len); return SCANNER_ERR_OK; } /* 歪斜挡位检测 */ @@ -566,6 +630,7 @@ public: /* 分纸强度检测 */ int test_paper_separation_strength(void *data) { + //parameter* ptr = helper_->get_user_input(ui_helper::DATA_FROM_USER, ui_helper::VAL_TYPE_TIPS_VAL, NAME, (wchar_t*)&info_); return SCANNER_ERR_OK; } /* 机械走纸倾斜检测 */ @@ -596,7 +661,26 @@ public: /* 清除滚轴计数 */ int test_clear_roller_count(void *data) { - return SCANNER_ERR_OK; + SANE_Int roller_num = -1; + const wchar_t* info = NULL; + bool type = false; + unsigned int len = sizeof(SANE_Int); + int ret = helper_->io_control(IO_CTRL_CODE_SET_CLEAR_ROLLER_COUNT, NULL, NULL); + ret = helper_->io_control(IO_CTRL_CODE_GET_ROLLER_NUM, &roller_num, &len); + + if ((roller_num == 0 && roller_num != -1)) + { + type = true; + info = L"清除滚轴计数成功"; + } + else + { + type = false; + info = L"清除滚轴计数失败"; + } + helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)info, type); + + return ret; } private: