Merge branch 'master' of http://192.168.10.5:8099/sane/code_app
This commit is contained in:
commit
5250561016
|
@ -28,3 +28,4 @@ HGLib_DeviceShutDown
|
||||||
HGLib_StartDeviceScan
|
HGLib_StartDeviceScan
|
||||||
HGLib_StopDeviceScan
|
HGLib_StopDeviceScan
|
||||||
HGLib_StopDeviceScanAsyn
|
HGLib_StopDeviceScanAsyn
|
||||||
|
HGLib_GetDeviceOperateCode
|
Binary file not shown.
Binary file not shown.
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
CImageApply::CImageApply(void)
|
CImageApply::CImageApply(void)
|
||||||
{
|
{
|
||||||
|
cv::setUseOptimized(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
CImageApply::~CImageApply(void)
|
CImageApply::~CImageApply(void)
|
||||||
|
|
|
@ -49,13 +49,23 @@ static int indexPatch=0;
|
||||||
std::mutex m_mutex;
|
std::mutex m_mutex;
|
||||||
|
|
||||||
static HG_CACHEIMGFORMAT m_cacheimgformat = HG_CJPG;
|
static HG_CACHEIMGFORMAT m_cacheimgformat = HG_CJPG;
|
||||||
|
static std::string m_default_prefix = "1000";
|
||||||
static std::map< HG_CACHEIMGFORMAT, std::string> m_mapcaches = {
|
static std::map< HG_CACHEIMGFORMAT, std::string> m_mapcaches = {
|
||||||
{HG_CJPG,".jpg"},
|
{HG_CJPG,".jpg"},
|
||||||
{HG_CPNG,".png"},
|
{HG_CPNG,".png"},
|
||||||
{HG_CBMP,".bmp"},
|
{HG_CBMP,".bmp"},
|
||||||
{HG_CTIFF,".tiff"}
|
{HG_CTIFF,".tiff"}
|
||||||
};
|
};
|
||||||
|
#include <regex>
|
||||||
|
|
||||||
|
//// 使用正则表达式判断文件名是否有效(不含非法字符)
|
||||||
|
//inline bool IsValidFileName(const std::string& strFileName)
|
||||||
|
//{
|
||||||
|
// // Windows下文件名中不能包含\/:*?"<>|这些字符
|
||||||
|
// std::regex regExpress("[\\/:*?\"<>|]");
|
||||||
|
// bool bValid = !std::regex_search(strFileName, regExpress);
|
||||||
|
// return bValid;
|
||||||
|
//}
|
||||||
|
|
||||||
int writeimage(const char* filename, std::vector<unsigned char>& imagedata) {
|
int writeimage(const char* filename, std::vector<unsigned char>& imagedata) {
|
||||||
FILE* fp = NULL;
|
FILE* fp = NULL;
|
||||||
|
@ -124,6 +134,7 @@ void onReceivedImage(HG_IMG* img, void* obj)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
path = WChar2Ansi(outapth);
|
path = WChar2Ansi(outapth);
|
||||||
|
path += m_default_prefix;
|
||||||
path += filename;
|
path += filename;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
@ -137,7 +148,7 @@ void onReceivedImage(HG_IMG* img, void* obj)
|
||||||
dstdirPath = "/tmp";
|
dstdirPath = "/tmp";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
path = dstdirPath + "/" + filename;
|
path = dstdirPath + "/" + m_default_prefix + filename;
|
||||||
#endif
|
#endif
|
||||||
//std::vector<int> quality;
|
//std::vector<int> quality;
|
||||||
//quality.push_back(CV_IMWRITE_JPEG_QUALITY);
|
//quality.push_back(CV_IMWRITE_JPEG_QUALITY);
|
||||||
|
@ -710,3 +721,23 @@ Java_com_huagao_scanner_DeviceManager_resetPatchIndex(JNIEnv * env, jobject thiz
|
||||||
indexPatch = 0;
|
indexPatch = 0;
|
||||||
LOG("JAVA--- clean indexPatch:%d\n", indexPatch);
|
LOG("JAVA--- clean indexPatch:%d\n", indexPatch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
JNIEXPORT void JNICALL
|
||||||
|
Java_com_huagao_scanner_DeviceManager_setPrefix(JNIEnv * env, jobject thiz, jstring prefix)
|
||||||
|
{
|
||||||
|
char* cName = const_cast<char*>(env->GetStringUTFChars(prefix, 0));
|
||||||
|
if (cName)
|
||||||
|
{
|
||||||
|
auto len = strlen(cName);
|
||||||
|
LOG("JAVA--- setPrefix prefix_len = %d prefix = %s \n", len, cName);
|
||||||
|
if (len > 0)
|
||||||
|
{
|
||||||
|
m_default_prefix.resize(len);
|
||||||
|
memcpy((void*)m_default_prefix.data(), cName, len);
|
||||||
|
LOG("JAVA--- setPrefix m_default_prefix = %d prefix = %s \n", m_default_prefix.length(), m_default_prefix.c_str());
|
||||||
|
}
|
||||||
|
env->ReleaseStringUTFChars(prefix, cName);
|
||||||
|
}
|
||||||
|
}
|
|
@ -227,6 +227,7 @@ HGLibDeviceImpl::HGLibDeviceImpl()
|
||||||
m_eventParam = NULL;
|
m_eventParam = NULL;
|
||||||
m_imageFunc = NULL;
|
m_imageFunc = NULL;
|
||||||
m_imageParam = NULL;
|
m_imageParam = NULL;
|
||||||
|
m_statusCode = SANE_STATUS_GOOD;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGLibDeviceImpl::~HGLibDeviceImpl()
|
HGLibDeviceImpl::~HGLibDeviceImpl()
|
||||||
|
@ -384,11 +385,11 @@ HGBool HGLibDeviceImpl::GetSN(HGChar* sn, HGUInt maxLen)
|
||||||
|
|
||||||
std::string serialNum;
|
std::string serialNum;
|
||||||
unsigned int serialNumLen = 0;
|
unsigned int serialNumLen = 0;
|
||||||
if (SANE_STATUS_NO_MEM == sane_io_control(m_devHandle, IO_CTRL_CODE_GET_SERIAL, NULL, &serialNumLen)
|
m_statusCode = sane_io_control(m_devHandle, IO_CTRL_CODE_GET_SERIAL, NULL, &serialNumLen);
|
||||||
&& serialNumLen)
|
if (SANE_STATUS_NO_MEM == m_statusCode && serialNumLen)
|
||||||
{
|
{
|
||||||
serialNum.resize(serialNumLen);
|
serialNum.resize(serialNumLen);
|
||||||
sane_io_control(m_devHandle, IO_CTRL_CODE_GET_SERIAL, &serialNum[0], &serialNumLen);
|
m_statusCode = sane_io_control(m_devHandle, IO_CTRL_CODE_GET_SERIAL, &serialNum[0], &serialNumLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (serialNum.empty() || maxLen < serialNum.size() + 1)
|
if (serialNum.empty() || maxLen < serialNum.size() + 1)
|
||||||
|
@ -411,11 +412,11 @@ HGBool HGLibDeviceImpl::GetFWVersion(HGChar* fwVersion, HGUInt maxLen)
|
||||||
|
|
||||||
std::string versionNum;
|
std::string versionNum;
|
||||||
unsigned int versionNumLen = 0;
|
unsigned int versionNumLen = 0;
|
||||||
if (SANE_STATUS_NO_MEM == sane_io_control(m_devHandle, IO_CTRL_CODE_GET_HARDWARE_VERSION, NULL, &versionNumLen)
|
m_statusCode = sane_io_control(m_devHandle, IO_CTRL_CODE_GET_HARDWARE_VERSION, NULL, &versionNumLen);
|
||||||
&& versionNumLen)
|
if (SANE_STATUS_NO_MEM == m_statusCode && versionNumLen)
|
||||||
{
|
{
|
||||||
versionNum.resize(versionNumLen);
|
versionNum.resize(versionNumLen);
|
||||||
sane_io_control(m_devHandle, IO_CTRL_CODE_GET_HARDWARE_VERSION, &versionNum[0], &versionNumLen);
|
m_statusCode = sane_io_control(m_devHandle, IO_CTRL_CODE_GET_HARDWARE_VERSION, &versionNum[0], &versionNumLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (versionNum.empty() || maxLen < versionNum.size() + 1)
|
if (versionNum.empty() || maxLen < versionNum.size() + 1)
|
||||||
|
@ -439,7 +440,7 @@ HGBool HGLibDeviceImpl::SetParam(HGUInt option, const HGVoid* data)
|
||||||
|
|
||||||
HGBool ret = HGFALSE;
|
HGBool ret = HGFALSE;
|
||||||
SANE_Int num_dev_options = 0;
|
SANE_Int num_dev_options = 0;
|
||||||
sane_control_option(m_devHandle, 0, SANE_ACTION_GET_VALUE, &num_dev_options, NULL);
|
m_statusCode = sane_control_option(m_devHandle, 0, SANE_ACTION_GET_VALUE, &num_dev_options, NULL);
|
||||||
for (int i = 1; i < num_dev_options; ++i)
|
for (int i = 1; i < num_dev_options; ++i)
|
||||||
{
|
{
|
||||||
const SANE_Option_Descriptor* desp = sane_get_option_descriptor(m_devHandle, i);
|
const SANE_Option_Descriptor* desp = sane_get_option_descriptor(m_devHandle, i);
|
||||||
|
@ -457,26 +458,30 @@ HGBool HGLibDeviceImpl::SetParam(HGUInt option, const HGVoid* data)
|
||||||
SANE_Char* value = (SANE_Char*)GetOptionEnumValue(*(HGUInt*)data);
|
SANE_Char* value = (SANE_Char*)GetOptionEnumValue(*(HGUInt*)data);
|
||||||
if (NULL != value)
|
if (NULL != value)
|
||||||
{
|
{
|
||||||
if (SANE_STATUS_GOOD == sane_control_option(m_devHandle, i, SANE_ACTION_SET_VALUE, value, NULL))
|
m_statusCode = sane_control_option(m_devHandle, i, SANE_ACTION_SET_VALUE, value, NULL);
|
||||||
|
if (SANE_STATUS_GOOD == m_statusCode)
|
||||||
ret = HGTRUE;
|
ret = HGTRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (SANE_TYPE_INT == desp->type)
|
else if (SANE_TYPE_INT == desp->type)
|
||||||
{
|
{
|
||||||
SANE_Int value = (SANE_Int)(*(HGInt*)data);
|
SANE_Int value = (SANE_Int)(*(HGInt*)data);
|
||||||
if (SANE_STATUS_GOOD == sane_control_option(m_devHandle, i, SANE_ACTION_SET_VALUE, &value, NULL))
|
m_statusCode = sane_control_option(m_devHandle, i, SANE_ACTION_SET_VALUE, &value, NULL);
|
||||||
|
if (SANE_STATUS_GOOD == m_statusCode)
|
||||||
ret = HGTRUE;
|
ret = HGTRUE;
|
||||||
}
|
}
|
||||||
else if (SANE_TYPE_FIXED == desp->type)
|
else if (SANE_TYPE_FIXED == desp->type)
|
||||||
{
|
{
|
||||||
SANE_Fixed value = SANE_FIX(*(HGDouble*)data);
|
SANE_Fixed value = SANE_FIX(*(HGDouble*)data);
|
||||||
if (SANE_STATUS_GOOD == sane_control_option(m_devHandle, i, SANE_ACTION_SET_VALUE, &value, NULL))
|
m_statusCode = sane_control_option(m_devHandle, i, SANE_ACTION_SET_VALUE, &value, NULL);
|
||||||
|
if (SANE_STATUS_GOOD == m_statusCode)
|
||||||
ret = HGTRUE;
|
ret = HGTRUE;
|
||||||
}
|
}
|
||||||
else if (SANE_TYPE_BOOL == desp->type)
|
else if (SANE_TYPE_BOOL == desp->type)
|
||||||
{
|
{
|
||||||
SANE_Bool value = (SANE_Bool)(*(HGBool*)data);
|
SANE_Bool value = (SANE_Bool)(*(HGBool*)data);
|
||||||
if (SANE_STATUS_GOOD == sane_control_option(m_devHandle, i, SANE_ACTION_SET_VALUE, &value, NULL))
|
m_statusCode = sane_control_option(m_devHandle, i, SANE_ACTION_SET_VALUE, &value, NULL);
|
||||||
|
if (SANE_STATUS_GOOD == m_statusCode)
|
||||||
ret = HGTRUE;
|
ret = HGTRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -496,7 +501,7 @@ HGLibDeviceParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
|
||||||
std::vector<DeviceParamsGroup> devParams;
|
std::vector<DeviceParamsGroup> devParams;
|
||||||
|
|
||||||
SANE_Int num_dev_options = 0;
|
SANE_Int num_dev_options = 0;
|
||||||
sane_control_option(m_devHandle, 0, SANE_ACTION_GET_VALUE, &num_dev_options, NULL);
|
m_statusCode = sane_control_option(m_devHandle, 0, SANE_ACTION_GET_VALUE, &num_dev_options, NULL);
|
||||||
for (int i = 1; i < num_dev_options; ++i)
|
for (int i = 1; i < num_dev_options; ++i)
|
||||||
{
|
{
|
||||||
const SANE_Option_Descriptor* desp = sane_get_option_descriptor(m_devHandle, i);
|
const SANE_Option_Descriptor* desp = sane_get_option_descriptor(m_devHandle, i);
|
||||||
|
@ -516,7 +521,7 @@ HGLibDeviceParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
|
||||||
else if (SANE_TYPE_STRING == desp->type)
|
else if (SANE_TYPE_STRING == desp->type)
|
||||||
{
|
{
|
||||||
char value[256] = { 0 };
|
char value[256] = { 0 };
|
||||||
sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, value, NULL);
|
m_statusCode = sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, value, NULL);
|
||||||
|
|
||||||
DeviceParam devParam;
|
DeviceParam devParam;
|
||||||
devParam.option = name;
|
devParam.option = name;
|
||||||
|
@ -539,7 +544,7 @@ HGLibDeviceParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
|
||||||
else if (SANE_TYPE_INT == desp->type)
|
else if (SANE_TYPE_INT == desp->type)
|
||||||
{
|
{
|
||||||
SANE_Int value = 0;
|
SANE_Int value = 0;
|
||||||
sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, &value, NULL);
|
m_statusCode = sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, &value, NULL);
|
||||||
|
|
||||||
DeviceParam devParam;
|
DeviceParam devParam;
|
||||||
devParam.option = name;
|
devParam.option = name;
|
||||||
|
@ -568,7 +573,7 @@ HGLibDeviceParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
|
||||||
else if (SANE_TYPE_FIXED == desp->type)
|
else if (SANE_TYPE_FIXED == desp->type)
|
||||||
{
|
{
|
||||||
SANE_Word value = 0;
|
SANE_Word value = 0;
|
||||||
sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, &value, NULL);
|
m_statusCode = sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, &value, NULL);
|
||||||
|
|
||||||
DeviceParam devParam;
|
DeviceParam devParam;
|
||||||
devParam.option = name;
|
devParam.option = name;
|
||||||
|
@ -597,7 +602,7 @@ HGLibDeviceParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
|
||||||
else if (SANE_TYPE_BOOL == desp->type)
|
else if (SANE_TYPE_BOOL == desp->type)
|
||||||
{
|
{
|
||||||
SANE_Bool value = 0;
|
SANE_Bool value = 0;
|
||||||
sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, &value, NULL);
|
m_statusCode = sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, &value, NULL);
|
||||||
|
|
||||||
DeviceParam devParam;
|
DeviceParam devParam;
|
||||||
devParam.option = name;
|
devParam.option = name;
|
||||||
|
@ -702,7 +707,7 @@ HGLibDeviceParam* HGLibDeviceImpl::GetParam(HGUInt option)
|
||||||
|
|
||||||
HGLibDeviceParam* param = NULL;
|
HGLibDeviceParam* param = NULL;
|
||||||
SANE_Int num_dev_options = 0;
|
SANE_Int num_dev_options = 0;
|
||||||
sane_control_option(m_devHandle, 0, SANE_ACTION_GET_VALUE, &num_dev_options, NULL);
|
m_statusCode = sane_control_option(m_devHandle, 0, SANE_ACTION_GET_VALUE, &num_dev_options, NULL);
|
||||||
for (int i = 1; i < num_dev_options; ++i)
|
for (int i = 1; i < num_dev_options; ++i)
|
||||||
{
|
{
|
||||||
const SANE_Option_Descriptor* desp = sane_get_option_descriptor(m_devHandle, i);
|
const SANE_Option_Descriptor* desp = sane_get_option_descriptor(m_devHandle, i);
|
||||||
|
@ -721,7 +726,7 @@ HGLibDeviceParam* HGLibDeviceImpl::GetParam(HGUInt option)
|
||||||
if (SANE_TYPE_STRING == desp->type)
|
if (SANE_TYPE_STRING == desp->type)
|
||||||
{
|
{
|
||||||
char value[256] = { 0 };
|
char value[256] = { 0 };
|
||||||
sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, value, NULL);
|
m_statusCode = sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, value, NULL);
|
||||||
|
|
||||||
devParam.valueType = HGLIB_OPTION_VALUETYPE_ENUM;
|
devParam.valueType = HGLIB_OPTION_VALUETYPE_ENUM;
|
||||||
devParam.stringValue = value;
|
devParam.stringValue = value;
|
||||||
|
@ -739,7 +744,7 @@ HGLibDeviceParam* HGLibDeviceImpl::GetParam(HGUInt option)
|
||||||
else if (SANE_TYPE_INT == desp->type)
|
else if (SANE_TYPE_INT == desp->type)
|
||||||
{
|
{
|
||||||
SANE_Int value = 0;
|
SANE_Int value = 0;
|
||||||
sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, &value, NULL);
|
m_statusCode = sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, &value, NULL);
|
||||||
|
|
||||||
devParam.valueType = HGLIB_OPTION_VALUETYPE_INT;
|
devParam.valueType = HGLIB_OPTION_VALUETYPE_INT;
|
||||||
devParam.intValue = (int)value;
|
devParam.intValue = (int)value;
|
||||||
|
@ -763,7 +768,7 @@ HGLibDeviceParam* HGLibDeviceImpl::GetParam(HGUInt option)
|
||||||
else if (SANE_TYPE_FIXED == desp->type)
|
else if (SANE_TYPE_FIXED == desp->type)
|
||||||
{
|
{
|
||||||
SANE_Word value = 0;
|
SANE_Word value = 0;
|
||||||
sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, &value, NULL);
|
m_statusCode = sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, &value, NULL);
|
||||||
|
|
||||||
devParam.valueType = HGLIB_OPTION_VALUETYPE_DOUBLE;
|
devParam.valueType = HGLIB_OPTION_VALUETYPE_DOUBLE;
|
||||||
devParam.doubleValue = SANE_UNFIX(value);
|
devParam.doubleValue = SANE_UNFIX(value);
|
||||||
|
@ -787,7 +792,7 @@ HGLibDeviceParam* HGLibDeviceImpl::GetParam(HGUInt option)
|
||||||
else if (SANE_TYPE_BOOL == desp->type)
|
else if (SANE_TYPE_BOOL == desp->type)
|
||||||
{
|
{
|
||||||
SANE_Bool value = 0;
|
SANE_Bool value = 0;
|
||||||
sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, &value, NULL);
|
m_statusCode = sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, &value, NULL);
|
||||||
|
|
||||||
devParam.valueType = HGLIB_OPTION_VALUETYPE_BOOL;
|
devParam.valueType = HGLIB_OPTION_VALUETYPE_BOOL;
|
||||||
devParam.boolValue = (bool)value;
|
devParam.boolValue = (bool)value;
|
||||||
|
@ -916,7 +921,7 @@ HGBool HGLibDeviceImpl::ResetParam()
|
||||||
HGBool ret = HGFALSE;
|
HGBool ret = HGFALSE;
|
||||||
|
|
||||||
SANE_Int num_dev_options = 0;
|
SANE_Int num_dev_options = 0;
|
||||||
sane_control_option(m_devHandle, 0, SANE_ACTION_GET_VALUE, &num_dev_options, NULL);
|
m_statusCode = sane_control_option(m_devHandle, 0, SANE_ACTION_GET_VALUE, &num_dev_options, NULL);
|
||||||
for (int i = 1; i < num_dev_options; ++i)
|
for (int i = 1; i < num_dev_options; ++i)
|
||||||
{
|
{
|
||||||
const SANE_Option_Descriptor* desp = sane_get_option_descriptor(m_devHandle, i);
|
const SANE_Option_Descriptor* desp = sane_get_option_descriptor(m_devHandle, i);
|
||||||
|
@ -929,7 +934,8 @@ HGBool HGLibDeviceImpl::ResetParam()
|
||||||
|
|
||||||
if (0 == strcmp(SANE_STD_OPT_NAME_RESTORE, name) && SANE_TYPE_BUTTON == desp->type)
|
if (0 == strcmp(SANE_STD_OPT_NAME_RESTORE, name) && SANE_TYPE_BUTTON == desp->type)
|
||||||
{
|
{
|
||||||
if (SANE_STATUS_GOOD == sane_control_option(m_devHandle, i, SANE_ACTION_SET_VALUE, NULL, NULL))
|
m_statusCode = sane_control_option(m_devHandle, i, SANE_ACTION_SET_VALUE, NULL, NULL);
|
||||||
|
if (SANE_STATUS_GOOD == m_statusCode)
|
||||||
ret = HGTRUE;
|
ret = HGTRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -942,8 +948,8 @@ HGBool HGLibDeviceImpl::IsPaperOn()
|
||||||
{
|
{
|
||||||
SANE_Bool isOn = SANE_FALSE;
|
SANE_Bool isOn = SANE_FALSE;
|
||||||
unsigned int len = sizeof(SANE_Bool);
|
unsigned int len = sizeof(SANE_Bool);
|
||||||
SANE_Status status = sane_io_control(m_devHandle, IO_CTRL_CODE_GET_PAPER_ON, &isOn, &len);
|
m_statusCode = sane_io_control(m_devHandle, IO_CTRL_CODE_GET_PAPER_ON, &isOn, &len);
|
||||||
if (SANE_STATUS_GOOD == status && isOn)
|
if (SANE_STATUS_GOOD == m_statusCode && isOn)
|
||||||
return HGTRUE;
|
return HGTRUE;
|
||||||
return HGFALSE;
|
return HGFALSE;
|
||||||
}
|
}
|
||||||
|
@ -952,8 +958,8 @@ HGInt HGLibDeviceImpl::GetStatus()
|
||||||
{
|
{
|
||||||
SANE_Bool isOn = SANE_FALSE;
|
SANE_Bool isOn = SANE_FALSE;
|
||||||
unsigned int len = sizeof(SANE_Bool);
|
unsigned int len = sizeof(SANE_Bool);
|
||||||
SANE_Status status = sane_io_control(m_devHandle, IO_CTRL_CODE_GET_PAPER_ON, &isOn, &len);
|
m_statusCode = sane_io_control(m_devHandle, IO_CTRL_CODE_GET_PAPER_ON, &isOn, &len);
|
||||||
if (SANE_STATUS_GOOD == status)
|
if (SANE_STATUS_GOOD == m_statusCode)
|
||||||
return isOn ? 1 : 0;
|
return isOn ? 1 : 0;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -962,8 +968,8 @@ HGBool HGLibDeviceImpl::Restart()
|
||||||
{
|
{
|
||||||
SANE_Power stat = SANE_POWER_RESTART;
|
SANE_Power stat = SANE_POWER_RESTART;
|
||||||
unsigned int len = sizeof(SANE_Power);
|
unsigned int len = sizeof(SANE_Power);
|
||||||
SANE_Status status = sane_io_control(m_devHandle, IO_CTRL_CODE_SET_POWER_LEVEL, &stat, &len);
|
m_statusCode = sane_io_control(m_devHandle, IO_CTRL_CODE_SET_POWER_LEVEL, &stat, &len);
|
||||||
if (SANE_STATUS_GOOD == status)
|
if (SANE_STATUS_GOOD == m_statusCode)
|
||||||
return HGTRUE;
|
return HGTRUE;
|
||||||
return HGFALSE;
|
return HGFALSE;
|
||||||
}
|
}
|
||||||
|
@ -972,8 +978,8 @@ HGBool HGLibDeviceImpl::ShutDown()
|
||||||
{
|
{
|
||||||
SANE_Power stat = SANE_POWER_SHUTDOWN;
|
SANE_Power stat = SANE_POWER_SHUTDOWN;
|
||||||
unsigned int len = sizeof(SANE_Power);
|
unsigned int len = sizeof(SANE_Power);
|
||||||
SANE_Status status = sane_io_control(m_devHandle, IO_CTRL_CODE_SET_POWER_LEVEL, &stat, &len);
|
m_statusCode = sane_io_control(m_devHandle, IO_CTRL_CODE_SET_POWER_LEVEL, &stat, &len);
|
||||||
if (SANE_STATUS_GOOD == status)
|
if (SANE_STATUS_GOOD == m_statusCode)
|
||||||
return HGTRUE;
|
return HGTRUE;
|
||||||
return HGFALSE;
|
return HGFALSE;
|
||||||
}
|
}
|
||||||
|
@ -1001,8 +1007,8 @@ HGBool HGLibDeviceImpl::StartScan(HGLibDeviceScanEventFunc eventFunc, HGPointer
|
||||||
m_imageParam = imageParam;
|
m_imageParam = imageParam;
|
||||||
m_scanning = HGTRUE;
|
m_scanning = HGTRUE;
|
||||||
|
|
||||||
SANE_Status status = sane_start(m_devHandle);
|
m_statusCode = sane_start(m_devHandle);
|
||||||
if (SANE_STATUS_GOOD != status)
|
if (SANE_STATUS_GOOD != m_statusCode)
|
||||||
{
|
{
|
||||||
m_scanning = HGFALSE;
|
m_scanning = HGFALSE;
|
||||||
m_eventFunc = NULL;
|
m_eventFunc = NULL;
|
||||||
|
@ -1062,6 +1068,11 @@ HGBool HGLibDeviceImpl::StopScanAsyn()
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HGInt HGLibDeviceImpl::GetOperateCode()
|
||||||
|
{
|
||||||
|
return m_statusCode;
|
||||||
|
}
|
||||||
|
|
||||||
const char* HGLibDeviceImpl::GetGroupName(HGUInt group)
|
const char* HGLibDeviceImpl::GetGroupName(HGUInt group)
|
||||||
{
|
{
|
||||||
if (group > HGLIB_GROUP_NAME_PAPERFEEDING)
|
if (group > HGLIB_GROUP_NAME_PAPERFEEDING)
|
||||||
|
|
|
@ -39,6 +39,7 @@ public:
|
||||||
HGLibDeviceScanImageFunc imageFunc, HGPointer imageParam);
|
HGLibDeviceScanImageFunc imageFunc, HGPointer imageParam);
|
||||||
HGBool StopScan();
|
HGBool StopScan();
|
||||||
HGBool StopScanAsyn();
|
HGBool StopScanAsyn();
|
||||||
|
HGInt GetOperateCode();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static const char* GetGroupName(HGUInt group);
|
static const char* GetGroupName(HGUInt group);
|
||||||
|
@ -65,6 +66,7 @@ private:
|
||||||
HGPointer m_eventParam;
|
HGPointer m_eventParam;
|
||||||
HGLibDeviceScanImageFunc m_imageFunc;
|
HGLibDeviceScanImageFunc m_imageFunc;
|
||||||
HGPointer m_imageParam;
|
HGPointer m_imageParam;
|
||||||
|
HGInt m_statusCode;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __HGLIBDEVICEIMPL_HPP__ */
|
#endif /* __HGLIBDEVICEIMPL_HPP__ */
|
|
@ -318,3 +318,14 @@ HGBool HGAPI HGLib_StopDeviceScanAsyn(HGLibDevice device)
|
||||||
HGLibDeviceImpl* deviceImpl = (HGLibDeviceImpl*)device;
|
HGLibDeviceImpl* deviceImpl = (HGLibDeviceImpl*)device;
|
||||||
return deviceImpl->StopScanAsyn();
|
return deviceImpl->StopScanAsyn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HGInt HGAPI HGLib_GetDeviceOperateCode(HGLibDevice device)
|
||||||
|
{
|
||||||
|
if (NULL == device)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGLibDeviceImpl* deviceImpl = (HGLibDeviceImpl*)device;
|
||||||
|
return deviceImpl->GetOperateCode();
|
||||||
|
}
|
||||||
|
|
|
@ -29,6 +29,20 @@ HG_DECLARE_HANDLE(HGLibDevice);
|
||||||
#define HGLIB_TIFFCOMPRESSION_LZW 3L
|
#define HGLIB_TIFFCOMPRESSION_LZW 3L
|
||||||
#define HGLIB_TIFFCOMPRESSION_JPEG 4L
|
#define HGLIB_TIFFCOMPRESSION_JPEG 4L
|
||||||
|
|
||||||
|
/* 设备操作码 */
|
||||||
|
#define HGLIB_DEV_OPERATECODE_GOOD 0L
|
||||||
|
#define HGLIB_DEV_OPERATECODE_UNSUPPORTED 1L
|
||||||
|
#define HGLIB_DEV_OPERATECODE_CANCELLED 2L
|
||||||
|
#define HGLIB_DEV_OPERATECODE_BUSY 3L
|
||||||
|
#define HGLIB_DEV_OPERATECODE_INVAL 4L
|
||||||
|
#define HGLIB_DEV_OPERATECODE_EOF 5L
|
||||||
|
#define HGLIB_DEV_OPERATECODE_JAMMED 6L
|
||||||
|
#define HGLIB_DEV_OPERATECODE_NO_DOCS 7L
|
||||||
|
#define HGLIB_DEV_OPERATECODE_COVER_OPEN 8L
|
||||||
|
#define HGLIB_DEV_OPERATECODE_IO_ERROR 9L
|
||||||
|
#define HGLIB_DEV_OPERATECODE_NO_MEM 10L
|
||||||
|
#define HGLIB_DEV_OPERATECODE_ACCESS_DENIED 11L
|
||||||
|
|
||||||
/* 设备热拔插事件 */
|
/* 设备热拔插事件 */
|
||||||
#define HGLIB_DEVHOTPLUG_EVENT_ARRIVE 1L
|
#define HGLIB_DEVHOTPLUG_EVENT_ARRIVE 1L
|
||||||
#define HGLIB_DEVHOTPLUG_EVENT_REMOVE 2L
|
#define HGLIB_DEVHOTPLUG_EVENT_REMOVE 2L
|
||||||
|
@ -546,4 +560,7 @@ HGEXPORT HGBool HGAPI HGLib_StopDeviceScan(HGLibDevice device);
|
||||||
/* 停止扫描-异步 */
|
/* 停止扫描-异步 */
|
||||||
HGEXPORT HGBool HGAPI HGLib_StopDeviceScanAsyn(HGLibDevice device);
|
HGEXPORT HGBool HGAPI HGLib_StopDeviceScanAsyn(HGLibDevice device);
|
||||||
|
|
||||||
|
/* 获取设备操作码(在调用设备操作函数以后) */
|
||||||
|
HGEXPORT HGInt HGAPI HGLib_GetDeviceOperateCode(HGLibDevice device);
|
||||||
|
|
||||||
#endif /* __HGSCANNERLIB_H__ */
|
#endif /* __HGSCANNERLIB_H__ */
|
Loading…
Reference in New Issue