#include"test_base.h" #include #include #include #include #include #include "huagao/hgscanner_error.h" static struct Test_Map { const wchar_t* name; //test-1 const wchar_t* title; //"歪斜检测" const int ver; io_code num; }Test_Map_NO[] = { {HGPDTTOOLDB_NAME_DIAL_SWITCH ,HGPDTTOOLDB_TITLE_DIAL_SWITCH ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_ROCKER_SWITCH ,HGPDTTOOLDB_TITLE_ROCKER_SWITCH ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_BOOT_STATUS ,HGPDTTOOLDB_TITLE_BOOT_STATUS ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_LCD_DISPLAY ,HGPDTTOOLDB_TITLE_LCD_DISPLAY ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_KEY_FUNCTION ,HGPDTTOOLDB_TITLE_KEY_FUNCTION ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_COUNTING_MODE ,HGPDTTOOLDB_TITLE_COUNTING_MODE ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_CIS_ORIGINAL_IMAGE,HGPDTTOOLDB_TITLE_CIS_ORIGINAL_IMAGE ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_HOST_FAN ,HGPDTTOOLDB_TITLE_HOST_FAN ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_LED_LIGHT ,HGPDTTOOLDB_TITLE_LED_LIGHT ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_RESET ,HGPDTTOOLDB_TITLE_RESET ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_PAPER_FEED ,HGPDTTOOLDB_TITLE_PAPER_FEED ,0,IO_CTRL_CODE_BASE}, //不清楚 {HGPDTTOOLDB_NAME_SCANNING_SENSOR ,HGPDTTOOLDB_TITLE_SCANNING_SENSOR ,0,IO_CTRL_CODE_BASE},//不清楚 {HGPDTTOOLDB_NAME_PLACE_CORRECTION_PAPER,HGPDTTOOLDB_TITLE_PLACE_CORRECTION_PAPER ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_AUTO_FLAT_FIELD ,HGPDTTOOLDB_TITLE_AUTO_FLAT_FIELD ,0,IO_CTRL_CODE_BASE},//不清楚 {HGPDTTOOLDB_NAME_IMAGE_QUALITY ,HGPDTTOOLDB_TITLE_IMAGE_QUALITY ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_COLORCARD_IMAGEING_QUALITY ,HGPDTTOOLDB_TITLE_COLORCARD_IMAGEING_QUALITY ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_COLORCARD_BIAS_IMAGEING_QUALITY ,HGPDTTOOLDB_TITLE_COLORCARD_BIAS_IMAGEING_QUALITY ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_CLARITY_QUALITY ,HGPDTTOOLDB_TITLE_CLARITY_QUALITY ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_DISTORTION ,HGPDTTOOLDB_TITLE_DISTORTION ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_SEPARATER_MOTOR ,HGPDTTOOLDB_TITLE_SEPARATER_MOTOR ,0,IO_CTRL_CODE_BASE}, }, Test_Map_Bool[] { {HGPDTTOOLDB_NAME_CLEAR_PAPER_PATH ,HGPDTTOOLDB_TITLE_CLEAR_PAPER_PATH ,0,IO_CTRL_CODE_GET_CLEAN_PAPER_ROAD}, {HGPDTTOOLDB_NAME_SKEW_DETECTION ,HGPDTTOOLDB_TITLE_SKEW_DETECTION ,0,IO_CTRL_CODE_SET_SKEW_CHECK}, {HGPDTTOOLDB_NAME_ULTRASONIC_MODULE ,HGPDTTOOLDB_TITLE_ULTRASONIC_MODULE ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_COVER_SENSOR ,HGPDTTOOLDB_TITLE_COVER_SENSOR ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_REBOOT_DEVICE ,HGPDTTOOLDB_TITLE_REBOOT_DEVICE ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_MECH_PAPER_FEEDING_INCLINATION,HGPDTTOOLDB_TITLE_MECH_PAPER_FEEDING_INCLINATION ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_CLEAR_ROLLER_COUNT ,HGPDTTOOLDB_TITLE_CLEAR_ROLLER_COUNT,0,IO_CTRL_CODE_SET_CLEAR_ROLLER_COUNT}, }, Test_Map_String[] { {HGPDTTOOLDB_NAME_CLEAR_ROLLER_COUNT ,HGPDTTOOLDB_TITLE_CLEAR_ROLLER_COUNT,0,IO_CTRL_CODE_SET_CLEAR_ROLLER_COUNT}, }, Test_Map_Int[] { {HGPDTTOOLDB_NAME_PAPER_SEPARATION_STRENGTH ,HGPDTTOOLDB_TITLE_PAPER_SEPARATION_STRENGTH,0,IO_CTRL_CODE_SET_FEEDMODE}, {HGPDTTOOLDB_NAME_CONFIGURE_SPEED_MODE ,HGPDTTOOLDB_TITLE_CONFIGURE_SPEED_MODE ,0,IO_CTRL_CODE_BASE}, {HGPDTTOOLDB_NAME_DORMANCY ,HGPDTTOOLDB_TITLE_DORMANCY ,0,IO_CTRL_CODE_SET_POWER_LEVEL}, {HGPDTTOOLDB_NAME_SKEW_GEAR ,HGPDTTOOLDB_TITLE_SKEW_GEAR,0,IO_CTRL_CODE_SET_SKEW_CHECK_VAL}, {HGPDTTOOLDB_NAME_SINGLE_PAGE_TEST_1 ,HGPDTTOOLDB_TITLE_SINGLE_PAGE_TEST_1,0,IO_CTRL_CODE_TEST_SINGLE}, {HGPDTTOOLDB_NAME_SINGLE_PAGE_TEST_2 ,HGPDTTOOLDB_TITLE_SINGLE_PAGE_TEST_2,0,IO_CTRL_CODE_TEST_SINGLE}, {HGPDTTOOLDB_NAME_SINGLE_PAGE_TEST_3 ,HGPDTTOOLDB_TITLE_SINGLE_PAGE_TEST_3,0,IO_CTRL_CODE_TEST_SINGLE}, {HGPDTTOOLDB_NAME_PRESSUER_TEST ,HGPDTTOOLDB_TITLE_PRESSUER_TEST ,0,IO_CTRL_CODE_BASE}, }; //test static std::string jsontext1("{\"1\":{\"name\":\"test-8\",\"ver\":1}}"); int sane_ex_callback(SANE_Handle hdev, int code, void* data, unsigned int* len, void* param) { switch (code) { case SANE_EVENT_DEVICE_ARRIVED: { SANE_Device* sane_dev = (SANE_Device*)data; } break; case SANE_EVENT_DEVICE_LEFT: { SANE_Device* sane_dev = (SANE_Device*)data; } break; case SANE_EVENT_WORKING: { std::string str = (char*)data; } break; case SANE_EVENT_SCAN_FINISHED: { std::string str = (char*)data; } break; case SANE_EVENT_STATUS: { std::string str = (char*)data; } break; case SANE_EVENT_ERROR: { std::string str = (char*)data; } break; case SANE_EVENT_IMAGE_OK: { SANE_Image* sane_img = (SANE_Image*)data; } break; } return 0; } int str_to_wchar(std::string str, wchar_t* s, size_t* strlen) { if (str.empty()) return ERROR_INSUFFICIENT_BUFFER; size_t size = str.length(); int len = 0; len = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0); if (*strlen < len) { *strlen = len; return ERROR_INSUFFICIENT_BUFFER; } MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, s, len); return 0; } int get_json_config_file() { int len = 0; char exePath[256]; char* buf = NULL; GetModuleFileNameA(NULL, exePath, 255); (strrchr(exePath, '\\'))[1] = 0; //去掉执行的文件名。 strcat(exePath, "DLLs\\G302.hsc"); FILE* fp = fopen(exePath, "rb"); if (fp == NULL) { return -1; } fseek(fp, 0, SEEK_END); len = ftell(fp); fseek(fp, 0, SEEK_SET); buf = new char[len]; if (!buf) { fclose(fp); return -1; } memset(buf, 0, len); fread(buf, len, 1, fp); fclose(fp); std::cout << buf << std::endl; } int func_test_init(void* init) { return 0; } int func_test_get_list(wchar_t* buf, size_t* len) { return str_to_wchar(jsontext1, buf, len); } int func_test_go(const wchar_t* name, const wchar_t* oper, ui_helper* helper) { if (!name || !oper || !helper) { return -1; } helper->add_ref(); helper->register_sane_callback(sane_ex_callback, NULL); bool flag = false; wchar_t* des = NULL; int ret = 0; size_t map_bool_len = sizeof(Test_Map_Bool) / sizeof(Test_Map_Bool[0]); size_t map_str_len = sizeof(Test_Map_String) / sizeof(Test_Map_String[0]); size_t map_int_len = sizeof(Test_Map_Int) / sizeof(Test_Map_Int[0]); ui_helper::test_event ev = ui_helper::TEST_EVENT_TIPS; //项目测试设置TEST_EVENT_TIPS,测试结果设置TEST_EVENT_RESULT for (size_t i = 0; i < map_bool_len + map_str_len + map_int_len; i++) { des = (wchar_t*)Test_Map_Bool[i].title; if (wcscmp(name, Test_Map_Bool[i].name) == 0) //理论上手动处理的事项是不会传下来 { SANE_Bool map_bool = true; unsigned int len = sizeof(SANE_Bool); ret = helper->io_control(Test_Map_Bool[i].num,&map_bool, &len); if (ret == SCANNER_ERR_OK) { ev = ui_helper::TEST_EVENT_RESULT; helper->test_callback(Test_Map_Bool[i].name, ev, des, true); map_bool = false; ret = helper->io_control(Test_Map_Bool[i].num, &map_bool, &len); return SCANNER_ERR_OK; } } else if(wcscmp(name, Test_Map_String[i].name) == 0) { if (wcscmp(name, HGPDTTOOLDB_NAME_PAPER_SEPARATION_STRENGTH) == 0) { } return SCANNER_ERR_OK; } else if (wcscmp(name, Test_Map_Int[i].name) == 0) { return SCANNER_ERR_OK; } } helper->release(); helper->unregister_sane_callback(sane_ex_callback); return SCANNER_ERR_OK; } int func_test_uninit(void* uninit) { return 0; } int main11() { /*get_json_config_file(); int ret = 0; wchar_t* str_wchar = NULL; size_t len = 0; ret = func_test_get_list(str_wchar, &len); if (ret == ERROR_INSUFFICIENT_BUFFER) { str_wchar = new wchar_t[len]; ret = func_test_get_list(str_wchar, &len); } ret = func_test_go(L"test-5",L"start",NULL);*/ //std::wcout << str_wchar << std::endl; return 0; } parameter* ui_helper::get_user_input(data_from from, value_type type, const wchar_t* title, const wchar_t* desc = NULL) { } int ui_helper::register_sane_callback(sane_callback cb, void* param) { return 0; } int ui_helper::unregister_sane_callback(sane_callback cb) { return 0; } int ui_helper::io_control(unsigned long code, void* data, unsigned* len) { return 0; } void ui_helper::test_callback(const wchar_t* name/*test name*/, test_event ev, void* data, size_t flag) { }