code_production/code/base/test_base.cpp

757 lines
20 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include"test_base.h"
#include<string>
#include <stdio.h>
#include <windows.h>
#include <map>
#include <iostream>
#include "huagao/hgscanner_error.h"
static 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;
}
static std::wstring set_test_name_ =L"";
class test
{
ui_helper* helper_;
int fw_;
public:
static int sane_ex_callback(SANE_Handle hdev, int code, void* data, unsigned int* len, void* param)
{
if (!hdev && !param)
{
return -1;
}
ui_helper* h= (ui_helper*)param;
std::wstring wstr = L"";
size_t l = 0;
bool type = true;
int ret = str_to_wchar((char*)data, (wchar_t*)wstr.c_str(), &l);
if (ret == ERROR_INSUFFICIENT_BUFFER)
ret = str_to_wchar((char*)data, (wchar_t*)wstr.c_str(), &l);
if (ret == ERROR_INSUFFICIENT_BUFFER)
{
type = false;
h->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)wstr.c_str(), type);
return -1;
}
wprintf(L"%s\r\n", wstr.c_str());
switch (code)
{
case SANE_EVENT_SCAN_FINISHED:
{
SANE_Bool io_type = false;
unsigned int io_len = sizeof(SANE_Bool);
if (wcscmp(set_test_name_.c_str(), HGPDTTOOLDB_NAME_SKEW_DETECTION) == 0)
{
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)
{
int ret = h->io_control(IO_CTRL_CODE_GET_DPI_COLOR_CHECK_VAL, &io_type, &io_len);
if (strcmp((char*)data, STATU_DESC_SCAN_STOPPED) == 0)
{
h->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_DISTORTION, (void*)L"»û±äÐÞÕýÍê³É,ÊÇ·ñ½øÐе¥Ò³É¨Ãè²âÊÔ", type);
return 0;
}
}
else if(wcscmp(set_test_name_.c_str(), HGPDTTOOLDB_NAME_ULTRASONIC_MODULE) == 0)
{
if (strcmp((char*)data, STATU_DESC_SCANNER_ERR_DEVICE_DOUBLE_FEEDING) != 0)
{
type = false;
wchar_t buf[128] = L"δ¼ì²âµ½Ë«ÕÅ,Ô­Òò--->";
wcscat(buf, wstr.c_str());
wstr = buf;
}
else
type = true;
}
h->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)wstr.c_str(), type);
}
break;
case SANE_EVENT_ERROR:
{
h->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)wstr.c_str(), false);
}
break;
case SANE_EVENT_IMAGE_OK:
{
if ( wcscmp(set_test_name_.c_str(), HGPDTTOOLDB_NAME_CIS_ORIGINAL_IMAGE) == 0
||wcscmp(set_test_name_.c_str(), HGPDTTOOLDB_NAME_IMAGE_QUALITY) == 0
||wcscmp(set_test_name_.c_str(), HGPDTTOOLDB_NAME_DISTORTION) == 0
|| wcscmp(set_test_name_.c_str(), HGPDTTOOLDB_NAME_SCANNING_SENSOR) == 0)
{
h->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_HAVE_IMAGE, data, true);
}
}
break;
}
return 0;
}
test(ui_helper* helper) :helper_(helper), fw_(0)
{
helper->register_sane_callback(sane_ex_callback, NULL);
init_test_map_();
std::string fw1(get_firmware_version());
if (fw1.size() > 5)
{
if ("G1" == fw1.substr(0, 2))
fw_ = 1;
else if ("G2" == fw1.substr(0, 2))
fw_ = 2;
else if ("G3" == fw1.substr(0, 2))
fw_ = 3;
else if ("G4" == fw1.substr(0, 2))
fw_ = 4;
}
}
~test()
{}
struct ptrcmp
{
bool operator()(const wchar_t* NAME1, const wchar_t* NAME2)const
{
return wcscmp(NAME1, NAME2) < 0;
}
};
std::map<std::wstring, int(test::*)(void *)> test_map_;
void init_test_map_()
{
test_map_[HGPDTTOOLDB_NAME_DIAL_SWITCH] = &test::test_dial_switch;
test_map_[HGPDTTOOLDB_NAME_ROCKER_SWITCH] = &test::test_pocker_switch;
test_map_[HGPDTTOOLDB_NAME_BOOT_STATUS] = &test::test_boot_status;
test_map_[HGPDTTOOLDB_NAME_LCD_DISPLAY] = &test::test_lcd_display;
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;
test_map_[HGPDTTOOLDB_NAME_SKEW_DETECTION] = &test::test_skew_detection;
test_map_[HGPDTTOOLDB_NAME_SEPARATER_MOTOR] = &test::test_separater_motor;
test_map_[HGPDTTOOLDB_NAME_CIS_ORIGINAL_IMAGE] = &test::test_cis__original_image;
test_map_[HGPDTTOOLDB_NAME_HOST_FAN] = &test::test_host_fan;
test_map_[HGPDTTOOLDB_NAME_ULTRASONIC_MODULE] = &test::test_ultrasonic_module;
test_map_[HGPDTTOOLDB_NAME_LED_LIGHT] = &test::test_led_light;
test_map_[HGPDTTOOLDB_NAME_RESET] = &test::test_reset;
test_map_[HGPDTTOOLDB_NAME_PAPER_FEED] = &test::test_paper_feed;
test_map_[HGPDTTOOLDB_NAME_COVER_SENSOR] = &test::test_cover_sensor;
test_map_[HGPDTTOOLDB_NAME_SCANNING_SENSOR] = &test::test_scanning_sensor;
test_map_[HGPDTTOOLDB_NAME_CONFIGURE_SPEED_MODE] = &test::test_configure_speed_mode;
test_map_[HGPDTTOOLDB_NAME_PLACE_CORRECTION_PAPER] = &test::test_place_correction_paper;
test_map_[HGPDTTOOLDB_NAME_AUTO_FLAT_FIELD] = &test::test_auto_flat_field;
test_map_[HGPDTTOOLDB_NAME_REBOOT_DEVICE] = &test::test_reboot_device;
test_map_[HGPDTTOOLDB_NAME_IMAGE_QUALITY] = &test::test_image_quality;
test_map_[HGPDTTOOLDB_NAME_COLORCARD_IMAGEING_QUALITY] = &test::test_colorcard_imageing_quality;
test_map_[HGPDTTOOLDB_NAME_COLORCARD_BIAS_IMAGEING_QUALITY] = &test::test_colorcard_bias_imageing_quality;
test_map_[HGPDTTOOLDB_NAME_CLARITY_QUALITY] = &test::test_clarity_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_SINGLE_PAGE_TEST_1] = &test::test_single_page_test_1;
test_map_[HGPDTTOOLDB_NAME_SINGLE_PAGE_TEST_2] = &test::test_single_page_test_2;
test_map_[HGPDTTOOLDB_NAME_SINGLE_PAGE_TEST_3] = &test::test_single_page_test_3;
test_map_[HGPDTTOOLDB_NAME_PRESSUER_TEST] = &test::test_pressuer_test;
test_map_[HGPDTTOOLDB_NAME_CLEAR_ROLLER_COUNT] = &test::test_clear_roller_count;
}
int set_test(const wchar_t* str)
{
if (!str)
return SCANNER_ERR_NO_DATA;
set_test_name_ = str;
int ret = SCANNER_ERR_OK;
auto it = test_map_.find(str);
if (it != test_map_.end())
{
ret = (this->*test_map_[str])((void *)str);
}
else
{
helper_->test_callback(str, ui_helper::TEST_EVENT_NOT_FIND_TEST, NULL, false);
return ret;
}
if (ret != SCANNER_ERR_OK && ret != -1)
{
helper_->test_callback(str, ui_helper::TEST_EVENT_IO_FAIL, NULL, ret);
}
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 test_dial_switch(void *data)
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
/* ¼ì²é´¬ÐÍ¿ª¹Ø¹¦ÄÜ */
int test_pocker_switch(void *data)
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
/* É豸Éϵ粢¹Û²ì¿ª»ú״̬ */
int test_boot_status(void *data)
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
/* ¼ì²éÒº¾§ÏÔʾ */
int test_lcd_display(void *data)
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
/* ÇåÀíÖ½µÀ¹¦ÄÜÈ·ÈÏ */
int tset_clear_paper_path(void *data)
{
int ret = helper_->io_control(IO_CTRL_CODE_GET_CLEAN_PAPER_ROAD, NULL, NULL);
if (ret != SCANNER_ERR_OK)
{
return ret;
}
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_MANUAL_CONFIRMATION, (void*)L"ÇëÈ·ÈÏÊÇ·ñÇåÀíÖ½µÀ³É¹¦", true);
return ret;
}
/* °´¼ü¹¦Äܼì²â */
int test_key_funtion(void *data)
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
/* ¼ÆÊýģʽ¼ì²â */
int test_count_mode(void *data)
{
SANE_Bool ismode = false;
unsigned int len = sizeof(SANE_Bool);
int ret = helper_->io_control(IO_CTRL_CODE_GET_IS_MODE, &ismode, &len);
if (ret != SCANNER_ERR_OK)
{
return ret;
}
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 = set_test_name_.c_str();
SANE_Bool type = true;
unsigned int len = sizeof(SANE_Bool);
int num = 0;
void* get_data = NULL;
parameter * ptr = helper_->get_user_input(ui_helper::DATA_FROM_USER, ui_helper::VAL_TYPE_INT, NAME,L"ÇëÍáб·ÅÖ½...ÉèÖÃãÐÖµ£º0 - 5,ֵԽСԽÈÝÒ×¼ì²â,0Ϊ¹Ø±ÕÍáб¼ì²â");
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;
}
num = *((int*)get_data);
}
else
{
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;
ret = helper_->io_control(IO_CTRL_CODE_SET_SKEW_CHECK_VAL, &num, &len);
if (ret != SCANNER_ERR_OK)
return ret;
ret = helper_->io_control(IO_CTRL_CODE_TEST_SINGLE, NULL, NULL);
return ret;
}
/* ·ÖÖ½µç»ú¼ì²â */
int test_separater_motor(void *data)
{
return SCANNER_ERR_OK;
}
/* cisԭͼ³õ¼ì */
int test_cis__original_image(void *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;
ret = helper_->io_control(IO_CTRL_CODE_SET_CIS_IMAGE, &type, &len);
if (ret != SCANNER_ERR_OK)
{
return ret;
}
ret = helper_->io_control(IO_CTRL_CODE_TEST_SINGLE, NULL, NULL);
if (ret != SCANNER_ERR_OK)
{
return ret;
}
return ret;
}
/* Ö÷»ú·çÉȹ¦Äܼì²â */
int test_host_fan(void *data)
{
return helper_->io_control(IO_CTRL_CODE_GET_IMAGE, NULL, NULL);
}
/* ³¬Éù²¨Ä£¿é¼ìÑé */
int test_ultrasonic_module(void *data)
{
const wchar_t* NAME = set_test_name_.c_str();
SANE_Bool type = true;
unsigned int len = sizeof(SANE_Bool);
void* get_data = NULL;
int ret = SCANNER_ERR_OK;
parameter* ptr = helper_->get_user_input(ui_helper::DATA_FROM_USER, ui_helper::VAL_TYPE_BOOL, NAME,
L"ÇëÑ¡ÔñÊÇ·ñ¿ªÆô³¬Éù²¨¼ì²é£¬²¢ÇÒÇë·ÅÖÃË«ÕÅÖ½");
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;
}
else
type = *((bool*)get_data);
}
else
{
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_RESULT, (void*)L"ÒÑÍ˳ö³¬Éù²¨Ä£¿é¼ì²âÁ÷³Ì", false);
return -1;
}
ptr->release();
ret = helper_->io_control(IO_CTRL_CODE_SET_ULTRASONIC_MODULE, &type, &len);
if (ret != SCANNER_ERR_OK)
{
return ret;
}
ret = helper_->io_control(IO_CTRL_CODE_TEST_SINGLE, NULL, NULL);
return ret;
}
/* ledµÆ״̬¼ì²é */
int test_led_light(void *data)
{
return SCANNER_ERR_OK;
}
/* ¸´Î»¼ì²é */
int test_reset(void *data)
{
return SCANNER_ERR_OK;
}
/* ×ßÖ½¼ì²é */
int test_paper_feed(void *data) //ʹÓõ¥ÕÅɨÃè²âÊÔ
{
return helper_->io_control(IO_CTRL_CODE_TEST_SINGLE, NULL, NULL);
}
/* ¿ª¸Ç´«¸ÐÆ÷¼ì²é */
int test_cover_sensor(void *data) //¶Ëµã·µ»Ø ʹÓõ¥ÕÅɨÃè²âÊÔ
{
return helper_->io_control(IO_CTRL_CODE_TEST_SINGLE, 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)
{
return SCANNER_ERR_OK;
}
/* ×Ô¶¯Æ½³¡Ð£Õý */
int test_auto_flat_field(void *data)
{
return SCANNER_ERR_OK;
}
/* ÖØÆôÉ豸 */
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;
helper_->test_callback(set_test_name_.c_str(), ui_helper::TEST_EVENT_DISTORTION, (void*)L"É豸ÖØÆôÖУ¬Çë¹Û²ìÉ豸ÊÇ·ñÖØÆô", true);
return ret;
}
/* ɨÃèͼÏñÖÊÁ¿È·ÈÏ */
int test_image_quality(void *data)
{
return helper_->io_control(IO_CTRL_CODE_GET_IMAGE, NULL, NULL);
}
/* É«¿¨Ö½³ÉÏñÖÊÁ¿ÆÀ¹À */
int test_colorcard_imageing_quality(void *data)
{
return SCANNER_ERR_OK;
}
/* É«¿¨Ö½Æ«É«³ÉÏñÖÊÁ¿ÆÀ¹À */
int test_colorcard_bias_imageing_quality(void *data)
{
return SCANNER_ERR_OK;
}
/* ÇåÎú¶ÈÖÊÁ¿ÆÀ¹À */
int test_clarity_quality(void *data)
{
return SCANNER_ERR_OK;
}
/* »û±äÐÞÕý */
int test_distortion(void *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);
}
/* ÉèÖÃÐÝÃß */
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_OK;
}
/* ·Öֽǿ¶È¼ì²â */
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;
}
/* »úе×ßÖ½Çãб¼ì²â */
int test_mech_paper_feeding_inclination(void *data)
{
return SCANNER_ERR_OK;
}
/* µ¥ÕŲâÊÔ1 */
int test_single_page_test_1(void *data)
{
return SCANNER_ERR_OK;
}
/* µ¥ÕŲâÊÔ2 */
int test_single_page_test_2(void *data)
{
return SCANNER_ERR_OK;
}
/* µ¥ÕŲâÊÔ3 */
int test_single_page_test_3(void *data)
{
return SCANNER_ERR_OK;
}
/* ѹÁ¦²âÊÔ2ÂÖ */
int test_pressuer_test(void *data)
{
return SCANNER_ERR_OK;
}
/* Çå³ý¹öÖá¼ÆÊý */
int test_clear_roller_count(void *data)
{
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:
};
//test
static std::string jsontext1("{\"1\":{\"NAME\":\"test-8\",\"ver\":1}}");
bool have_img_ = false;
DECL_API(int) func_test_init(void* init)
{
return 0;
}
DECL_API(int) func_test_get_list(wchar_t* buf, size_t* len)
{
return str_to_wchar(jsontext1, buf, len);
}
DECL_API(int) func_test_go(const wchar_t* NAME, const wchar_t* oper, ui_helper* helper)
{
if (!NAME || !oper || !helper)
{
return -1;
}
//helper->add_ref(void *data);
int ret = 0;
SANE_Bool type = false;
unsigned int len = sizeof(SANE_Bool);
test ts(helper);
ret = ts.set_test(NAME);
if (ret != SCANNER_ERR_OK)
{
return ret;
}
ret = helper->io_control(IO_CTRL_CODE_RESTORE_SETTINGS, NULL, NULL);//½áÊø»Ö¸´Ä¬ÈÏ
return ret;
}
DECL_API(int) func_test_uninit(void* uninit)
{
return 0;
}