Merge branch 'master' of http://192.168.10.5:8099/sane/code_app
This commit is contained in:
commit
19e3b06991
46
build.sh
46
build.sh
|
@ -1,7 +1,7 @@
|
|||
if [ "$1" != "hg" ] && [ "$1" != "lsc" ] && [ "$1" != "hw" ] && [ "$1" != "hgweb" ] && [ "$1" != "lscweb" ] && [ "$1" != "hwweb" ] && [ "$1" != "hgso" ] && [ "$1" != "lscso" ] && [ "$1" != "hwso" ];
|
||||
if [ "$1" != "hg" ] && [ "$1" != "lsc" ] && [ "$1" != "hw" ] && [ "$1" != "cts" ] && [ "$1" != "hgweb" ] && [ "$1" != "lscweb" ] && [ "$1" != "hwweb" ] && [ "$1" != "ctsweb" ] && [ "$1" != "hgso" ] && [ "$1" != "lscso" ] && [ "$1" != "hwso" ] && [ "$1" != "ctsso" ];
|
||||
then
|
||||
echo "APP脚本参数错误!!!"
|
||||
echo "参数:华高:hg || hgweb || hgso 立思层:lsc || lscweb || lscso 汉王:hw || hwweb || hwso"
|
||||
echo "参数:华高:hg || hgweb || hgso 立思层:lsc || lscweb || lscso 汉王:hw || hwweb || hwso 沧田:cts || ctsweb || ctsso"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -37,6 +37,9 @@ if [ "${1}" == "hw" ] || [ "${1}" == "hwweb" ] || [ "${1}" == "hwso" ]; then
|
|||
elif [ "${1}" == "lsc" ] || [ "${1}" == "lscweb" ] || [ "${1}" == "lscso" ]; then
|
||||
prefix="Lsc"
|
||||
prefix2="lsc"
|
||||
elif [ "${1}" == "cts" ] || [ "${1}" == "ctsweb" ] || [ "${1}" == "ctsso" ]; then
|
||||
prefix="Cts"
|
||||
prefix2="cts"
|
||||
fi
|
||||
|
||||
echo ${prefix}
|
||||
|
@ -104,7 +107,7 @@ rm -f Makefile
|
|||
rm -rf obj
|
||||
rm HGImgProcTmp.cbp
|
||||
|
||||
if [ "${1}" == "hgweb" ] || [ "${1}" == "hwweb" ] || [ "${1}" == "lscweb" ]; then
|
||||
if [ "${1}" == "hgweb" ] || [ "${1}" == "hwweb" ] || [ "${1}" == "lscweb" ] || [ "${1}" == "ctsweb" ]; then
|
||||
|
||||
cd ../HGWebService
|
||||
cp HGWebService.cbp HGWebServiceTmp.cbp
|
||||
|
@ -113,6 +116,8 @@ if [ "${1}" == "hgweb" ] || [ "${1}" == "hwweb" ] || [ "${1}" == "lscweb" ]; the
|
|||
sed -i "s/OEM_HUAGAO/OEM_HANWANG/g" HGWebServiceTmp.cbp
|
||||
elif [ "${1}" == "lscweb" ]; then
|
||||
sed -i "s/OEM_HUAGAO/OEM_LISICHENG/g" HGWebServiceTmp.cbp
|
||||
elif [ "${1}" == "ctsweb" ]; then
|
||||
sed -i "s/OEM_HUAGAO/OEM_CANGTIAN/g" HGWebServiceTmp.cbp
|
||||
fi
|
||||
sed -i "s/-lHGBase/-l${prefix}Base/g" HGWebServiceTmp.cbp
|
||||
sed -i "s/-lHGImgFmt/-l${prefix}ImgFmt/g" HGWebServiceTmp.cbp
|
||||
|
@ -132,6 +137,8 @@ if [ "${1}" == "hgweb" ] || [ "${1}" == "hwweb" ] || [ "${1}" == "lscweb" ]; the
|
|||
sed -i "s/OEM_HUAGAO/OEM_HANWANG/g" HGWebScanTmp.cbp
|
||||
elif [ "${1}" == "lscweb" ]; then
|
||||
sed -i "s/OEM_HUAGAO/OEM_LISICHENG/g" HGWebScanTmp.cbp
|
||||
elif [ "${1}" == "ctsweb" ]; then
|
||||
sed -i "s/OEM_HUAGAO/OEM_CANGTIAN/g" HGWebScanTmp.cbp
|
||||
fi
|
||||
sed -i "s/-lHGBase/-l${prefix}Base/g" HGWebScanTmp.cbp
|
||||
sed -i "s/-lHGImgFmt/-l${prefix}ImgFmt/g" HGWebScanTmp.cbp
|
||||
|
@ -144,7 +151,7 @@ if [ "${1}" == "hgweb" ] || [ "${1}" == "hwweb" ] || [ "${1}" == "lscweb" ]; the
|
|||
rm -rf obj
|
||||
rm HGWebScanTmp.cbp
|
||||
|
||||
elif [ "${1}" == "hgso" ] || [ "${1}" == "hwso" ] || [ "${1}" == "lscso" ]; then
|
||||
elif [ "${1}" == "hgso" ] || [ "${1}" == "hwso" ] || [ "${1}" == "lscso" ] || [ "${1}" == "ctsso" ]; then
|
||||
|
||||
cd ../HGScannerLib
|
||||
cp HGScannerLib.cbp HGScannerLibTmp.cbp
|
||||
|
@ -153,6 +160,8 @@ elif [ "${1}" == "hgso" ] || [ "${1}" == "hwso" ] || [ "${1}" == "lscso" ]; then
|
|||
sed -i "s/OEM_HUAGAO/OEM_HANWANG/g" HGScannerLibTmp.cbp
|
||||
elif [ "${1}" == "lscso" ]; then
|
||||
sed -i "s/OEM_HUAGAO/OEM_LISICHENG/g" HGScannerLibTmp.cbp
|
||||
elif [ "${1}" == "ctsso" ]; then
|
||||
sed -i "s/OEM_HUAGAO/OEM_CANGTIAN/g" HGScannerLibTmp.cbp
|
||||
fi
|
||||
sed -i "s/-lHGBase/-l${prefix}Base/g" HGScannerLibTmp.cbp
|
||||
sed -i "s/-lHGImgFmt/-l${prefix}ImgFmt/g" HGScannerLibTmp.cbp
|
||||
|
@ -175,6 +184,8 @@ else #APP
|
|||
sed -i "s/OEM_HUAGAO/OEM_HANWANG/g" HGVersionTmp.cbp
|
||||
elif [ "${1}" == "lsc" ]; then
|
||||
sed -i "s/OEM_HUAGAO/OEM_LISICHENG/g" HGVersionTmp.cbp
|
||||
elif [ "${1}" == "cts" ]; then
|
||||
sed -i "s/OEM_HUAGAO/OEM_CANGTIAN/g" HGVersionTmp.cbp
|
||||
fi
|
||||
sed -i "s/-lHGBase/-l${prefix}Base/g" HGVersionTmp.cbp
|
||||
cbp2make -targets ${system}_${arch}_Release -in HGVersionTmp.cbp -out makefile
|
||||
|
@ -191,19 +202,28 @@ else #APP
|
|||
sed -i "s/hgsane/hwsane/g" HGScannerTmp.pro
|
||||
sed -i "s/hgdriver/hwdriver/g" HGScannerTmp.pro
|
||||
sed -i "s/HuaGoScan/HanvonScan/g" HGScannerTmp.pro
|
||||
sed -i "s/HGBase/HwBase/g" HGScannerTmp.pro
|
||||
sed -i "s/HGImgFmt/HwImgFmt/g" HGScannerTmp.pro
|
||||
sed -i "s/HGImgProc/HwImgProc/g" HGScannerTmp.pro
|
||||
sed -i "s/HGBase/HwBase/g" HGScannerTmp.pro
|
||||
sed -i "s/HGImgFmt/HwImgFmt/g" HGScannerTmp.pro
|
||||
sed -i "s/HGImgProc/HwImgProc/g" HGScannerTmp.pro
|
||||
sed -i "s/logo.ico/Hanvon_logo1.ico/g" HGScannerTmp.pro
|
||||
elif [ "${1}" == "lsc" ]; then
|
||||
sed -i "s/OEM_HUAGAO/OEM_LISICHENG/g" HGScannerTmp.pro
|
||||
sed -i "s/hgsane/lscsane/g" HGScannerTmp.pro
|
||||
sed -i "s/hgdriver/lscdriver/g" HGScannerTmp.pro
|
||||
sed -i "s/HuaGoScan/LanxumScan/g" HGScannerTmp.pro
|
||||
sed -i "s/HGBase/LscBase/g" HGScannerTmp.pro
|
||||
sed -i "s/HGImgFmt/LscImgFmt/g" HGScannerTmp.pro
|
||||
sed -i "s/HGImgProc/LscImgProc/g" HGScannerTmp.pro
|
||||
sed -i "s/HGBase/LscBase/g" HGScannerTmp.pro
|
||||
sed -i "s/HGImgFmt/LscImgFmt/g" HGScannerTmp.pro
|
||||
sed -i "s/HGImgProc/LscImgProc/g" HGScannerTmp.pro
|
||||
sed -i "s/logo.ico/Lanxum_logo.ico/g" HGScannerTmp.pro
|
||||
elif [ "${1}" == "cts" ]; then
|
||||
sed -i "s/OEM_HUAGAO/OEM_CANGTIAN/g" HGScannerTmp.pro
|
||||
sed -i "s/hgsane/ctssane/g" HGScannerTmp.pro
|
||||
sed -i "s/hgdriver/ctsdriver/g" HGScannerTmp.pro
|
||||
sed -i "s/HuaGoScan/CumtennScan/g" HGScannerTmp.pro
|
||||
sed -i "s/HGBase/CtsBase/g" HGScannerTmp.pro
|
||||
sed -i "s/HGImgFmt/CtsImgFmt/g" HGScannerTmp.pro
|
||||
sed -i "s/HGImgProc/CtsImgProc/g" HGScannerTmp.pro
|
||||
sed -i "s/logo.ico/Cumtenn_logo.ico/g" HGScannerTmp.pro
|
||||
fi
|
||||
|
||||
qmake -qt=qt5 -makefile HGScannerTmp.pro
|
||||
|
@ -230,6 +250,12 @@ else #APP
|
|||
sed -i "s/HGBase/LscBase/g" HGUpgradeTmp.pro
|
||||
sed -i "s/HGVersion/LscVersion/g" HGUpgradeTmp.pro
|
||||
sed -i "s/logo.ico/Lanxum_logo.ico/g" HGUpgradeTmp.pro
|
||||
elif [ "${1}" == "cts" ]; then
|
||||
sed -i "s/OEM_HUAGAO/OEM_CANGTIAN/g" HGUpgradeTmp.pro
|
||||
sed -i "s/HGUpgradeApp/CtsUpgradeApp/g" HGUpgradeTmp.pro
|
||||
sed -i "s/HGBase/CtsBase/g" HGUpgradeTmp.pro
|
||||
sed -i "s/HGVersion/CtsVersion/g" HGUpgradeTmp.pro
|
||||
sed -i "s/logo.ico/Cumtenn_logo.ico/g" HGUpgradeTmp.pro
|
||||
fi
|
||||
|
||||
qmake -qt=qt5 -makefile HGUpgradeTmp.pro
|
||||
|
|
|
@ -504,38 +504,21 @@ int SetDeviceParam(HG_Scanner_Handle pScanner)
|
|||
HGLib_SetDeviceParam((HGLibDevice)pScanner, HGLIB_OPTION_NAME_YSMS, &enumValue);
|
||||
}
|
||||
|
||||
|
||||
if (m_params.MultiOutput == HG_Unused)
|
||||
boolValue = m_params.MultiOutput == HG_Unused ? false : true;
|
||||
HGLib_SetDeviceParam((HGLibDevice)pScanner, HGLIB_OPTION_NAME_DLSC, &boolValue);
|
||||
if (boolValue)
|
||||
{
|
||||
boolValue = false;
|
||||
HGLib_SetDeviceParam((HGLibDevice)pScanner, HGLIB_OPTION_NAME_DLSC, &boolValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
boolValue = true;
|
||||
HGLib_SetDeviceParam((HGLibDevice)pScanner, HGLIB_OPTION_NAME_DLSC, &boolValue);
|
||||
if (m_params.MultiOutput == HG_All)
|
||||
enumValue = HGLIB_OPTION_ENUMVALUE_DLSCLX_CS_HD_HB;
|
||||
else if (m_params.MultiOutput == HG_ColorGray)
|
||||
enumValue = HGLIB_OPTION_ENUMVALUE_DLSCLX_CS_HD;
|
||||
else if (m_params.MultiOutput == HG_ColorBw)
|
||||
enumValue = HGLIB_OPTION_ENUMVALUE_DLSCLX_CS_HB;
|
||||
else if (m_params.MultiOutput == HG_GrayBw)
|
||||
enumValue = HGLIB_OPTION_ENUMVALUE_DLSCLX_HD_HB;
|
||||
HGLib_SetDeviceParam((HGLibDevice)pScanner, HGLIB_OPTION_NAME_DLSCLX, &enumValue);
|
||||
}
|
||||
|
||||
if (m_params.MultiOutput == HG_All)
|
||||
{
|
||||
enumValue = HGLIB_OPTION_ENUMVALUE_DLSCLX_CS_HD_HB;
|
||||
HGLib_SetDeviceParam((HGLibDevice)pScanner, HGLIB_OPTION_NAME_DLSCLX, &enumValue);
|
||||
}
|
||||
else if (m_params.MultiOutput == HG_ColorGray)
|
||||
{
|
||||
enumValue = HGLIB_OPTION_ENUMVALUE_DLSCLX_CS_HD;
|
||||
HGLib_SetDeviceParam((HGLibDevice)pScanner, HGLIB_OPTION_NAME_DLSCLX, &enumValue);
|
||||
}
|
||||
else if (m_params.MultiOutput == HG_ColorBw)
|
||||
{
|
||||
enumValue = HGLIB_OPTION_ENUMVALUE_DLSCLX_CS_HB;
|
||||
HGLib_SetDeviceParam((HGLibDevice)pScanner, HGLIB_OPTION_NAME_DLSCLX, &enumValue);
|
||||
}
|
||||
else if (m_params.MultiOutput == HG_GrayBw)
|
||||
{
|
||||
enumValue = HGLIB_OPTION_ENUMVALUE_DLSCLX_HD_HB;
|
||||
HGLib_SetDeviceParam((HGLibDevice)pScanner, HGLIB_OPTION_NAME_DLSCLX, &enumValue);
|
||||
}
|
||||
|
||||
if (m_params.ImageProcess.Filter == HG_FILTER_NONE)
|
||||
{
|
||||
|
@ -585,9 +568,12 @@ int SetDeviceParam(HG_Scanner_Handle pScanner)
|
|||
boolValue = m_params.ImageProcess.TextureRemove;
|
||||
HGLib_SetDeviceParam((HGLibDevice)pScanner, HGLIB_OPTION_NAME_CWW, &boolValue);
|
||||
|
||||
boolValue = m_params.ImageProcess.NosieDetach;
|
||||
boolValue = m_params.ImageProcess.NosieDetachEnable;
|
||||
HGLib_SetDeviceParam((HGLibDevice)pScanner, HGLIB_OPTION_NAME_HBTXZDYH, &boolValue);
|
||||
|
||||
intValue = m_params.ImageProcess.NosieDetach;
|
||||
HGLib_SetDeviceParam((HGLibDevice)pScanner, HGLIB_OPTION_NAME_HBTXZDYH, &intValue);
|
||||
|
||||
if (m_params.ImageProcess.SharpenType == HG_STNone)
|
||||
{
|
||||
enumValue = HGLIB_OPTION_ENUMVALUE_RHYMH_W;
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -18,6 +18,7 @@
|
|||
|
||||
|
||||
|
||||
|
||||
#include "utlis.h"
|
||||
#if defined(WIN32)||defined(_WIN32)
|
||||
#include <Windows.h>
|
||||
|
@ -30,13 +31,13 @@
|
|||
|
||||
static jobject mUserListener = nullptr;
|
||||
static jobject mUserCallback = nullptr;
|
||||
static JavaVM* g_vm = nullptr;
|
||||
static JavaVM *g_vm = nullptr;
|
||||
HG_Scanner_Handle mScanner = nullptr;
|
||||
static jobject gClassLoader;
|
||||
static jmethodID gFindClassMethod;
|
||||
static jclass statusClazz;
|
||||
int indeximg = 0;
|
||||
static int indexPatch = 0;
|
||||
static int indexPatch=0;
|
||||
#define EN_LOG
|
||||
|
||||
#ifdef EN_LOG
|
||||
|
@ -74,152 +75,163 @@ void onReceivedImage(HG_IMG* img, void* obj)
|
|||
{
|
||||
std::lock_guard<std::mutex> lock(m_mutex);
|
||||
LOG("JAVA--- Enter onReceivedImage width:%d height:%d bitdepth:%d pdata:%p byteperlin:%d\n", img->width, img->height, img->bitdepth, img->pimgdata, img->bytesperline);
|
||||
if (mUserCallback)
|
||||
if (!mUserCallback)
|
||||
{
|
||||
JNIEnv* env;
|
||||
jint ret = g_vm->GetEnv((void**)&env, JNI_VERSION_1_6);
|
||||
if (ret < 0)
|
||||
g_vm->AttachCurrentThread((void**)&env, NULL);
|
||||
LOG("JAVA--- mUserCallback is null\n");
|
||||
return;
|
||||
}
|
||||
|
||||
jclass clazz = env->GetObjectClass(mUserCallback);
|
||||
indeximg++;
|
||||
indexPatch++;
|
||||
cv::Mat matimg(img->height, img->width, img->bitdepth == 24 ? CV_8UC3 : CV_8UC1, img->pimgdata);
|
||||
std::string filename, path, str_encodeformat;
|
||||
std::vector<int> encodeparam;
|
||||
if (m_mapcaches.count(m_cacheimgformat) > 0)
|
||||
{
|
||||
str_encodeformat = m_mapcaches[m_cacheimgformat];
|
||||
switch (m_cacheimgformat)
|
||||
{
|
||||
case HG_CJPG:
|
||||
encodeparam.push_back(CV_IMWRITE_JPEG_QUALITY);
|
||||
encodeparam.push_back(70);
|
||||
break;
|
||||
case HG_CPNG:
|
||||
encodeparam.push_back(CV_IMWRITE_PNG_STRATEGY);
|
||||
encodeparam.push_back(cv::IMWRITE_PNG_STRATEGY_FIXED);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
str_encodeformat = m_mapcaches[HG_CJPG];
|
||||
JNIEnv* env;
|
||||
jint ret = g_vm->GetEnv((void**)&env, JNI_VERSION_1_6);
|
||||
if (ret < 0)
|
||||
g_vm->AttachCurrentThread((void**)&env, NULL);
|
||||
|
||||
filename = std::to_string(indeximg) + str_encodeformat;
|
||||
#if defined(WIN32) || defined(_WIN32)
|
||||
WCHAR outapth[MAX_PATH];
|
||||
auto length = GetTempPathW(MAX_PATH, outapth);
|
||||
if (length < 1)
|
||||
jclass clazz = env->GetObjectClass(mUserCallback);
|
||||
indeximg++;
|
||||
indexPatch++;
|
||||
cv::Mat matimg(img->height, img->width, img->bitdepth == 24 ? CV_8UC3 : CV_8UC1, img->pimgdata);
|
||||
std::string filename, path, str_encodeformat;
|
||||
std::vector<int> encodeparam;
|
||||
if (m_mapcaches.count(m_cacheimgformat) > 0)
|
||||
{
|
||||
str_encodeformat = m_mapcaches[m_cacheimgformat];
|
||||
switch (m_cacheimgformat)
|
||||
{
|
||||
LOG("JAVA--- error : on Get tmpPath! this would cause no image be saved\n ");
|
||||
path = "C:\\" + filename;//save in the system disk
|
||||
case HG_CJPG:
|
||||
encodeparam.push_back(CV_IMWRITE_JPEG_QUALITY);
|
||||
encodeparam.push_back(70);
|
||||
break;
|
||||
case HG_CPNG:
|
||||
encodeparam.push_back(CV_IMWRITE_PNG_STRATEGY);
|
||||
encodeparam.push_back(cv::IMWRITE_PNG_STRATEGY_FIXED);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
path = WChar2Ansi(outapth);
|
||||
path += filename;
|
||||
}
|
||||
#else
|
||||
std::string dstdirPath = "/tmp/huagowebserver";
|
||||
if (access(dstdirPath.c_str(), 0) == -1)//is not exist
|
||||
{
|
||||
int flag = mkdir(dstdirPath.c_str(), 0755);
|
||||
if (flag != 0)
|
||||
{
|
||||
std::cout << "make " << dstdirPath << " falied" << std::endl;
|
||||
dstdirPath = "/tmp";
|
||||
}
|
||||
}
|
||||
path = dstdirPath + "/" + filename;
|
||||
#endif
|
||||
//std::vector<int> quality;
|
||||
//quality.push_back(CV_IMWRITE_JPEG_QUALITY);
|
||||
//quality.push_back(70);//进行50%的压缩
|
||||
std::vector<unsigned char> data;
|
||||
//cv::imencode(".jpg", matimg, data, quality);
|
||||
data.insert(data.end(), img->pimgdata, img->pimgdata + img->bufferlength);
|
||||
auto retw = writeimage(path.c_str(), data);
|
||||
if (retw == -1)
|
||||
LOG("JAVA--- LOST IMAGE %s \n", path.c_str());
|
||||
|
||||
std::string datastr(data.begin(), data.end());
|
||||
if (!data.empty())
|
||||
{
|
||||
std::string base64data = base64_encode_mime(datastr);
|
||||
jmethodID id = env->GetMethodID(env->GetObjectClass(mUserCallback), "onImageReceived", "(ILjava/lang/String;Ljava/lang/String;)V");
|
||||
LOG("JAVA--- IMAGE PATH =%s \n", path.c_str());
|
||||
env->CallVoidMethod(mUserCallback, id, indexPatch, env->NewStringUTF(path.c_str()), env->NewStringUTF(base64data.c_str()));
|
||||
}
|
||||
else
|
||||
LOG("JAVA--- Get uncorrect data");
|
||||
|
||||
if (ret < 0)
|
||||
g_vm->DetachCurrentThread();
|
||||
}
|
||||
else
|
||||
LOG("JAVA--- mUserCallback is null\n");
|
||||
str_encodeformat = m_mapcaches[HG_CJPG];
|
||||
|
||||
filename = std::to_string(indeximg) + str_encodeformat;
|
||||
#if defined(WIN32) || defined(_WIN32)
|
||||
WCHAR outapth[MAX_PATH];
|
||||
auto length = GetTempPathW(MAX_PATH, outapth);
|
||||
if (length < 1)
|
||||
{
|
||||
LOG("JAVA--- error : on Get tmpPath! this would cause no image be saved\n ");
|
||||
path = "C:\\" + filename;//save in the system disk
|
||||
}
|
||||
else
|
||||
{
|
||||
path = WChar2Ansi(outapth);
|
||||
path += filename;
|
||||
}
|
||||
#else
|
||||
std::string dstdirPath = "/tmp/huagowebserver";
|
||||
if (access(dstdirPath.c_str(), 0) == -1)//is not exist
|
||||
{
|
||||
int flag = mkdir(dstdirPath.c_str(), 0755);
|
||||
if (flag != 0)
|
||||
{
|
||||
std::cout << "make " << dstdirPath << " falied" << std::endl;
|
||||
dstdirPath = "/tmp";
|
||||
}
|
||||
}
|
||||
path = dstdirPath + "/" + filename;
|
||||
#endif
|
||||
//std::vector<int> quality;
|
||||
//quality.push_back(CV_IMWRITE_JPEG_QUALITY);
|
||||
//quality.push_back(70);//进行50%的压缩
|
||||
std::vector<unsigned char> data;
|
||||
//cv::imencode(".jpg", matimg, data, quality);
|
||||
data.insert(data.end(), img->pimgdata, img->pimgdata + img->bufferlength);
|
||||
auto retw = writeimage(path.c_str(), data);
|
||||
if (retw == -1)
|
||||
LOG("JAVA--- LOST IMAGE %s \n", path.c_str());
|
||||
|
||||
std::string datastr(data.begin(), data.end());
|
||||
if (data.empty())
|
||||
{
|
||||
LOG("JAVA--- Get Image data is NULL");
|
||||
return;
|
||||
}
|
||||
std::string base64data = base64_encode_mime(datastr);
|
||||
jmethodID id = env->GetMethodID(env->GetObjectClass(mUserCallback), "onImageReceived", "(ILjava/lang/String;Ljava/lang/String;)V");
|
||||
LOG("JAVA--- IMAGE PATH =%s \n", path.c_str());
|
||||
env->CallVoidMethod(mUserCallback, id, indexPatch, env->NewStringUTF(path.c_str()), env->NewStringUTF(base64data.c_str()));
|
||||
|
||||
if (ret < 0)
|
||||
g_vm->DetachCurrentThread();
|
||||
|
||||
}
|
||||
|
||||
//aaa
|
||||
void onEvent(HG_STATUSCODE statuscode, void* obj) {
|
||||
void onEvent(HG_STATUSCODE statuscode, void *obj)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(m_mutex);
|
||||
LOG("JAVA--- Enter onEvent callback 1 statuscode=%d \n", (int)statuscode);
|
||||
if (statuscode <= 0 || statuscode > 13)
|
||||
return;
|
||||
if (mUserListener) {
|
||||
JNIEnv* env;
|
||||
jint ret = g_vm->GetEnv((void**)&env, JNI_VERSION_1_6);
|
||||
if (ret < 0)
|
||||
jint ret2 = g_vm->AttachCurrentThread((void**)&env, NULL);
|
||||
|
||||
jclass listenerClazz = env->GetObjectClass(mUserListener);
|
||||
jmethodID methodEventId = env->GetMethodID(listenerClazz, "onEvent", "(I)V");
|
||||
env->CallVoidMethod(mUserListener, methodEventId, (jint)statuscode);
|
||||
if (ret < 0)
|
||||
g_vm->DetachCurrentThread();
|
||||
LOG("JAVA--- Enter onEvent callback 10 \n");
|
||||
if (!mUserListener)
|
||||
{
|
||||
LOG("JAVA--- onEvent is NULL\n");
|
||||
return;
|
||||
}
|
||||
JNIEnv *env;
|
||||
jint ret = g_vm->GetEnv((void **) &env, JNI_VERSION_1_6);
|
||||
if (ret < 0)
|
||||
{
|
||||
jint ret2= g_vm->AttachCurrentThread((void**)&env, NULL);
|
||||
LOG("JAVA--- Enter AttachCurrentThread ret2=%d \n", (int)ret2);
|
||||
}
|
||||
jclass listenerClazz = env->GetObjectClass(mUserListener);
|
||||
jmethodID methodEventId = env->GetMethodID(listenerClazz, "onEvent", "(I)V");
|
||||
env->CallVoidMethod(mUserListener, methodEventId, (jint)statuscode);
|
||||
if (ret < 0)
|
||||
{
|
||||
LOG("JAVA--- Enter onEvent callback DetachCurrentThread\n");
|
||||
g_vm->DetachCurrentThread();
|
||||
}
|
||||
else
|
||||
LOG("JAVA--- mUserListener is null\n");
|
||||
}
|
||||
|
||||
extern "C" JNIEXPORT jint JNICALL
|
||||
JNI_OnLoad(JavaVM * vm, void* reserved)
|
||||
{
|
||||
JNIEnv* env;
|
||||
if (g_vm == nullptr)
|
||||
JNI_OnLoad(JavaVM *vm, void *reserved) {
|
||||
LOG("JAVA--- enter JNI_OnLoad\n");
|
||||
JNIEnv *env;
|
||||
if (g_vm == nullptr) {
|
||||
g_vm = vm;
|
||||
|
||||
if (g_vm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK)
|
||||
}
|
||||
if (g_vm->GetEnv((void **) &env, JNI_VERSION_1_6) != JNI_OK)
|
||||
{
|
||||
LOG("JAVA--- JNI_OnLoad error\n");
|
||||
return JNI_ERR;
|
||||
}
|
||||
|
||||
LOG("JAVA--- JNI_OnLoad\n");
|
||||
LOG("JAVA--- exit JNI_OnLoad\n");
|
||||
return JNI_VERSION_1_6;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jobjectArray JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_getDevices(JNIEnv * env, jobject thiz)
|
||||
{
|
||||
const char* sp = ";";
|
||||
char* cDevices = HG_GetDevices(const_cast<char*>(sp));
|
||||
Java_com_huagao_scanner_DeviceManager_getDevices(JNIEnv *env, jobject thiz) {
|
||||
LOG("JAVA--- ENTER GETDEVICES\n");
|
||||
|
||||
const char* sp=";";
|
||||
char *cDevices = HG_GetDevices(const_cast<char*>(sp));
|
||||
if (cDevices == nullptr)
|
||||
{
|
||||
LOG(" JAVA--- getDevices is fail\n");
|
||||
LOG(" JAVA--- get no device\n");
|
||||
return NULL;
|
||||
}
|
||||
jstring devices = env->NewStringUTF(cDevices);
|
||||
jclass strClazz = env->FindClass("java/lang/String");
|
||||
jmethodID splitId = env->GetMethodID(strClazz, "split", "(Ljava/lang/String;)[Ljava/lang/String;");;
|
||||
jmethodID splitId = env->GetMethodID(strClazz, "split", "(Ljava/lang/String;)[Ljava/lang/String;");
|
||||
LOG("JAVA--- EXIT getDevices\n");
|
||||
return static_cast<jobjectArray>(env->CallObjectMethod(devices, splitId, env->NewStringUTF(";")));
|
||||
}
|
||||
|
||||
extern "C" JNIEXPORT void JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_init(JNIEnv * env, jobject thiz)
|
||||
Java_com_huagao_scanner_DeviceManager_init(JNIEnv *env, jobject thiz)
|
||||
{
|
||||
HG_Init();
|
||||
HG_Set_OnDeviceEvent_callback(onEvent);
|
||||
|
@ -229,7 +241,7 @@ Java_com_huagao_scanner_DeviceManager_init(JNIEnv * env, jobject thiz)
|
|||
|
||||
extern "C"
|
||||
JNIEXPORT void JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_setEventListener(JNIEnv * env, jobject thiz, jobject listener)
|
||||
Java_com_huagao_scanner_DeviceManager_setEventListener(JNIEnv *env, jobject thiz, jobject listener)
|
||||
{
|
||||
if (mUserListener)
|
||||
env->DeleteGlobalRef(mUserListener);
|
||||
|
@ -238,12 +250,11 @@ Java_com_huagao_scanner_DeviceManager_setEventListener(JNIEnv * env, jobject thi
|
|||
|
||||
extern "C"
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_open(JNIEnv * env, jobject thiz, jstring scanner_name)
|
||||
{
|
||||
if (mScanner)
|
||||
Java_com_huagao_scanner_DeviceManager_open(JNIEnv *env, jobject thiz, jstring scanner_name) {
|
||||
if (mScanner) {
|
||||
return true;
|
||||
|
||||
char* cName = const_cast<char*>(env->GetStringUTFChars(scanner_name, 0));
|
||||
}
|
||||
char *cName = const_cast<char *>(env->GetStringUTFChars(scanner_name, 0));
|
||||
LOG("JAVA--- open deivce name:%s \n", cName);
|
||||
mScanner = HG_OpenScanner(cName);
|
||||
env->ReleaseStringUTFChars(scanner_name, cName);
|
||||
|
@ -252,8 +263,7 @@ Java_com_huagao_scanner_DeviceManager_open(JNIEnv * env, jobject thiz, jstring s
|
|||
|
||||
extern "C"
|
||||
JNIEXPORT void JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_close(JNIEnv * env, jobject thiz)
|
||||
{
|
||||
Java_com_huagao_scanner_DeviceManager_close(JNIEnv *env, jobject thiz) {
|
||||
if (mScanner)
|
||||
{
|
||||
HG_CloseScanner(mScanner);
|
||||
|
@ -263,10 +273,14 @@ Java_com_huagao_scanner_DeviceManager_close(JNIEnv * env, jobject thiz)
|
|||
|
||||
extern "C"
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_setScanParam(JNIEnv * env, jobject thiz, jobject params)
|
||||
Java_com_huagao_scanner_DeviceManager_setScanParam(JNIEnv *env, jobject thiz, jobject params)
|
||||
{
|
||||
if (mScanner)
|
||||
{
|
||||
if (!mScanner)
|
||||
{
|
||||
LOG("JAVA---SET SCAN PARAM FAIL!!!");
|
||||
return false;
|
||||
}
|
||||
|
||||
HG_SCANPARAMS cParams;
|
||||
jclass clazz = env->GetObjectClass(params);
|
||||
//设置colorMode
|
||||
|
@ -276,10 +290,10 @@ Java_com_huagao_scanner_DeviceManager_setScanParam(JNIEnv * env, jobject thiz, j
|
|||
cParams.PixelType = static_cast<HG_COLORMODE>(env->GetIntField(fieldObj, fieldId));
|
||||
LOG("JAVA--- PixelType =%d \n", cParams.PixelType);
|
||||
|
||||
id = env->GetFieldID(clazz, "cacheImgFormat", "Lcom/huagao/scanner/enums/CacheImgFormat;");
|
||||
fieldObj = env->GetObjectField(params, id);
|
||||
fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "value", "I");
|
||||
m_cacheimgformat = static_cast<HG_CACHEIMGFORMAT>(env->GetIntField(fieldObj, fieldId));
|
||||
//id = env->GetFieldID(clazz, "cacheImgFormat", "Lcom/huagao/scanner/enums/CacheImgFormat;");
|
||||
//fieldObj = env->GetObjectField(params, id);
|
||||
//fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "value", "I");
|
||||
//m_cacheimgformat = static_cast<HG_CACHEIMGFORMAT>(env->GetIntField(fieldObj, fieldId));
|
||||
|
||||
id = env->GetFieldID(clazz, "multiOutput", "Lcom/huagao/scanner/enums/MultiOutput;");
|
||||
fieldObj = env->GetObjectField(params, id);
|
||||
|
@ -328,17 +342,18 @@ Java_com_huagao_scanner_DeviceManager_setScanParam(JNIEnv * env, jobject thiz, j
|
|||
id = env->GetFieldID(clazz, "imageProcessParams", "Lcom/huagao/scanner/params/ImageProcessParams;");
|
||||
fieldObj = env->GetObjectField(params, id);
|
||||
|
||||
fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "discardBlankThre", "I");
|
||||
cParams.ImageProcess.DiscardBlankThre = env->GetIntField(fieldObj, fieldId);
|
||||
LOG("JAVA--- AnswerSheetFilterRed =%d \n", cParams.ImageProcess.DiscardBlankThre);
|
||||
//fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "noiseDetachEnable", "I");
|
||||
//cParams.ImageProcess.NosieDetachEnable = env->GetIntField(fieldObj, fieldId);
|
||||
//LOG("JAVA--- NosieDetachEnable =%d \n", cParams.ImageProcess.NosieDetachEnable);
|
||||
|
||||
//fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "discardBlankThre", "I");
|
||||
//cParams.ImageProcess.DiscardBlankThre = env->GetIntField(fieldObj, fieldId);
|
||||
//LOG("JAVA--- AnswerSheetFilterRed =%d \n", cParams.ImageProcess.DiscardBlankThre);
|
||||
|
||||
fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "autoCrop", "I");
|
||||
cParams.ImageProcess.AutoCrop = env->GetIntField(fieldObj, fieldId);
|
||||
LOG("JAVA--- AutoCrop =%d \n", cParams.ImageProcess.AutoCrop);
|
||||
|
||||
fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "autoCrop", "I");
|
||||
cParams.ImageProcess.AutoCrop = env->GetIntField(fieldObj, fieldId);
|
||||
LOG("JAVA--- AutoCrop =%d \n", cParams.ImageProcess.AutoCrop);
|
||||
|
||||
fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "autoCropThreshold", "I");
|
||||
cParams.ImageProcess.AutoCrop_threshold = env->GetIntField(fieldObj, fieldId);
|
||||
|
@ -368,9 +383,9 @@ Java_com_huagao_scanner_DeviceManager_setScanParam(JNIEnv * env, jobject thiz, j
|
|||
cParams.ImageProcess.ErrorExtention = env->GetIntField(fieldObj, fieldId);
|
||||
LOG("JAVA--- ErrorExtention =%d \n", cParams.ImageProcess.ErrorExtention);
|
||||
|
||||
fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "fillBlackRect", "I");
|
||||
cParams.ImageProcess.FillBlackRect = env->GetIntField(fieldObj, fieldId);
|
||||
LOG("JAVA--- FillBlackRect =%d \n", cParams.ImageProcess.FillBlackRect);
|
||||
//fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "fillBlackRect", "I");
|
||||
//cParams.ImageProcess.FillBlackRect = env->GetIntField(fieldObj, fieldId);
|
||||
//LOG("JAVA--- FillBlackRect =%d \n", cParams.ImageProcess.FillBlackRect);
|
||||
|
||||
fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "fillHole", "Lcom/huagao/scanner/params/FillHole;");
|
||||
jobject fFieldObj = env->GetObjectField(fieldObj, fieldId);
|
||||
|
@ -408,6 +423,7 @@ Java_com_huagao_scanner_DeviceManager_setScanParam(JNIEnv * env, jobject thiz, j
|
|||
cParams.ImageProcess.Noise = env->GetIntField(fieldObj, fieldId);
|
||||
LOG("JAVA--- Noise =%d \n", cParams.ImageProcess.Noise);
|
||||
|
||||
|
||||
fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "noiseDetach", "I");
|
||||
cParams.ImageProcess.NosieDetach = env->GetIntField(fieldObj, fieldId);
|
||||
LOG("JAVA--- NosieDetach =%d \n", cParams.ImageProcess.NosieDetach);
|
||||
|
@ -455,73 +471,172 @@ Java_com_huagao_scanner_DeviceManager_setScanParam(JNIEnv * env, jobject thiz, j
|
|||
LOG("JAVA--- doubleFeedDetection =%d \n", cParams.HardwareParam.doubleFeedDetection);
|
||||
|
||||
return HG_Set_Scan_Params(mScanner, cParams);
|
||||
}
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jobject JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_getScanParam(JNIEnv * env, jobject thiz)
|
||||
{
|
||||
Java_com_huagao_scanner_DeviceManager_getScanParam(JNIEnv * env, jobject thiz) {
|
||||
HG_SCANPARAMS cparams;
|
||||
if (mScanner)
|
||||
{
|
||||
if (mScanner) {
|
||||
HG_Get_Scan_Params(mScanner, &cparams);
|
||||
|
||||
jclass myclass = env->FindClass("com/huagao/scanner/ScanParam");
|
||||
jmethodID id = env->GetMethodID(myclass, "<init>", "()V");
|
||||
jmethodID id=env->GetMethodID(myclass,"<init>","()V");
|
||||
|
||||
jobject jvScanparam = env->NewObject(myclass, id);//调用构造函数
|
||||
|
||||
// jfieldID fieldId = env->GetFieldID(myclass, "colorMode", "Lcom/huagao/scanner/enums/ColorMode;");
|
||||
// env->SetIntField(jvScanparam, fieldId, (jint)cparams.PixelType);
|
||||
|
||||
// fieldId = env->GetFieldID(myclass, "multiOutput", "Lcom/huagao/scanner/enums/MultiOutput;");
|
||||
// env->SetIntField(jvScanparam, fieldId, (jint)cparams.MultiOutput);
|
||||
|
||||
// fieldId = env->GetFieldID(myclass, "paperType", "Lcom/huagao/scanner/enums/PaperType;");
|
||||
// env->SetIntField(jvScanparam, fieldId, (jint)cparams.PaperSize);
|
||||
|
||||
// fieldId = env->GetFieldID(myclass, "paperAlign", "Lcom/huagao/scanner/enums/PaperAlign;");
|
||||
// env->SetIntField(jvScanparam, fieldId, cparams.PaperAlign);
|
||||
|
||||
// fieldId = env->GetFieldID(myclass, "resolution", "I");
|
||||
// env->SetIntField(jvScanparam, fieldId, cparams.Resolution);
|
||||
|
||||
// fieldId = env->GetFieldID(myclass, "scanSide", "Lcom/huagao/scanner/params/ScanSide;");
|
||||
// jobject fieldObj = env->GetObjectField(jvScanparam, fieldId);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "switchFrontBack", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ScanSide.SwitchFrontBack);//交换正反面
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "discardBlank", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ScanSide.DiscardBlank);//跳过空白页通用
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "discardBlankVince", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ScanSide.DiscardBlankVince);//跳过空白页发票
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "duplex", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ScanSide.Duplex);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "fold", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ScanSide.Fold);
|
||||
|
||||
// fieldId = env->GetFieldID(myclass, "imageProcessParams", "Lcom/huagao/scanner/params/ImageProcessParams;");
|
||||
// fieldObj = env->GetObjectField(jvScanparam, fieldId);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "answerSheetFilterRed", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.AnswerSheetFilterRed);
|
||||
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "autoCrop", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.AutoCrop);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "autoCropThreshold", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.AutoCrop_threshold);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "autoDescrew", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.AutoDescrew);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "backRotate180", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.BackRotate180);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "colorCorrection", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.ColorCorrection);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "contrast", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.Contrast);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "brightness", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.Brightness);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "errorExtention", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.ErrorExtention);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "fillBlackRect", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.FillBlackRect);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "fillHole", "Lcom/huagao/scanner/params/FillHole;");
|
||||
// jobject fFieldObj = env->GetObjectField(fieldObj, fieldId);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fFieldObj), "enbaleFileHole", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.FillHole.enable);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fFieldObj), "SearchRatio", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.FillHole.ratio);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "filter", "Lcom/huagao/scanner/enums/Filter;");
|
||||
// fFieldObj = env->GetObjectField(fieldObj, fieldId);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fFieldObj), "value", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.Filter);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "gamma", "F");
|
||||
// env->SetFloatField(fieldObj, fieldId, cparams.ImageProcess.Gamma);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "indent", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.Indent);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "IsConvex", "Z");
|
||||
// env->SetBooleanField(fieldObj, fieldId,(jboolean)cparams.ImageProcess.Is_convex);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "multiOutFilterRed", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.MultiOutFilterRed);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "noise", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.Noise);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "noiseDetach", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.NosieDetach);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "orentation", "Lcom/huagao/scanner/enums/Orentation;");
|
||||
// fFieldObj = env->GetObjectField(fieldObj, fieldId);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fFieldObj), "value", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.Orentation);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "refuseInflow", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.RefuseInflow);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "removeMorre", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.RemoveMorr);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "sharpenType", "Lcom/huagao/scanner/enums/SharpenType;");
|
||||
// fFieldObj = env->GetObjectField(fieldObj, fieldId);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fFieldObj), "value", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.SharpenType);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "splitImage", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.SplitImage);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "textureRemove", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.ImageProcess.TextureRemove);
|
||||
|
||||
// fieldId = env->GetFieldID(myclass, "hardwareCaps", "Lcom/huagao/scanner/params/HardwareCaps;");
|
||||
// fieldObj = env->GetObjectField(jvScanparam, fieldId);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "bindingDetect", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.HardwareParam.bindingDetection);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "capturePixType", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.PixelType);
|
||||
// fieldId = env->GetFieldID(env->GetObjectClass(fieldObj), "doubleFeedDetection", "I");
|
||||
// env->SetIntField(fieldObj, fieldId, cparams.HardwareParam.doubleFeedDetection);
|
||||
return jvScanparam;
|
||||
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_startScan(JNIEnv * env, jobject thiz, jint count)
|
||||
{
|
||||
Java_com_huagao_scanner_DeviceManager_startScan(JNIEnv *env, jobject thiz, jint count) {
|
||||
LOG("JAVA--- strat scan\n");
|
||||
return HG_StartScan(mScanner, count);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_stopScan(JNIEnv * env, jobject thiz)
|
||||
{
|
||||
Java_com_huagao_scanner_DeviceManager_stopScan(JNIEnv *env, jobject thiz) {
|
||||
LOG("JAVA--- stop scan\n");
|
||||
return HG_StopScan(mScanner);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_isRunning(JNIEnv * env, jobject thiz)
|
||||
{
|
||||
Java_com_huagao_scanner_DeviceManager_isRunning(JNIEnv *env, jobject thiz) {
|
||||
if (mScanner)
|
||||
{
|
||||
LOG("JAVA--- scanner is running\n");
|
||||
return HG_Is_Running(mScanner) != 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_isPaperPutted(JNIEnv * env, jobject thiz)
|
||||
{
|
||||
Java_com_huagao_scanner_DeviceManager_isPaperPutted(JNIEnv *env, jobject thiz) {
|
||||
if (mScanner)
|
||||
{
|
||||
return HG_Is_FeederLoaded(mScanner) != 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT void JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_setImageCallback(JNIEnv * env, jobject thiz, jobject callback)
|
||||
{
|
||||
if (mUserCallback)
|
||||
Java_com_huagao_scanner_DeviceManager_setImageCallback(JNIEnv *env, jobject thiz, jobject callback) {
|
||||
if (mUserCallback) {
|
||||
env->DeleteGlobalRef(mUserCallback);
|
||||
}
|
||||
mUserCallback = env->NewGlobalRef(callback);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_createMultiDocs(JNIEnv * env, jobject thiz, jobjectArray src_files, jstring dest_path)
|
||||
{
|
||||
Java_com_huagao_scanner_DeviceManager_createMultiDocs(JNIEnv *env, jobject thiz, jobjectArray src_files, jstring dest_path) {
|
||||
//const int len = env->GetArrayLength(src_files);
|
||||
//char** cSrcPaths = new char*[len];
|
||||
|
||||
|
@ -538,72 +653,51 @@ Java_com_huagao_scanner_DeviceManager_createMultiDocs(JNIEnv * env, jobject thiz
|
|||
//}
|
||||
|
||||
//delete[] cSrcPaths;
|
||||
jint ret = 0;
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_createMultiTiffs(JNIEnv * env, jobject thiz, jobjectArray src_files, jstring dest_path)
|
||||
{
|
||||
const int len = env->GetArrayLength(src_files);
|
||||
char** cSrcPaths = new char* [len];
|
||||
|
||||
for (int i = 0; i < len; i++)
|
||||
{
|
||||
jstring jPath = (jstring)env->GetObjectArrayElement(src_files, i);
|
||||
jsize strlen = env->GetStringUTFLength(jPath);
|
||||
{
|
||||
cSrcPaths[i] = new char[strlen];
|
||||
cSrcPaths[i] = const_cast<char*>(env->GetStringUTFChars(jPath, nullptr));
|
||||
}
|
||||
}
|
||||
|
||||
char* cDestPath = const_cast<char*>(env->GetStringUTFChars(dest_path, 0));
|
||||
jint ret = HG_Create_MultiTiff(cSrcPaths, len, cDestPath);
|
||||
env->ReleaseStringUTFChars(dest_path, cDestPath);
|
||||
for (int i = 0; i < len; i++)
|
||||
{
|
||||
jstring jPath = (jstring)env->GetObjectArrayElement(src_files, i);
|
||||
env->ReleaseStringUTFChars(jPath, cSrcPaths[i]);
|
||||
}
|
||||
delete[] cSrcPaths;
|
||||
return ret;
|
||||
}
|
||||
extern "C"
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_getSDKVersion(JNIEnv * env, jobject thiz)
|
||||
{
|
||||
Java_com_huagao_scanner_DeviceManager_getSDKVersion(JNIEnv * env, jobject thiz) {
|
||||
LOG("enter getDevices\n");
|
||||
|
||||
char* cVersion = HG_GetSDKVersion();
|
||||
if (cVersion == nullptr) {
|
||||
LOG("JAVA--- get SDKVersion is NULL\n");
|
||||
return NULL;
|
||||
}
|
||||
LOG("JAVA--- get SDKVersion:%s\n", cVersion);
|
||||
if (cVersion == nullptr)
|
||||
return NULL;
|
||||
|
||||
jstring strver = env->NewStringUTF(cVersion);
|
||||
return strver;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_getFwVersion(JNIEnv * env, jobject thiz)
|
||||
{
|
||||
Java_com_huagao_scanner_DeviceManager_getFwVersion(JNIEnv * env, jobject thiz) {
|
||||
|
||||
|
||||
const char* cVersion = HG_GetFwVersion(mScanner);
|
||||
LOG("JAVA--- get version:%s\n", cVersion);
|
||||
if (cVersion == nullptr)
|
||||
{
|
||||
LOG("JAVA--- get FwVersion is null\r\n");
|
||||
return NULL;
|
||||
}
|
||||
LOG("JAVA--- get FwVersion:%s\n", cVersion);
|
||||
jstring strver = env->NewStringUTF(cVersion);
|
||||
return strver;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_com_huagao_scanner_DeviceManager_getSerialNum(JNIEnv * env, jobject thiz)
|
||||
{
|
||||
const char* cVersion = HG_GetSerialNum(mScanner);
|
||||
LOG("JAVA--- getSerialNum =%s \n", cVersion);
|
||||
if (cVersion == nullptr)
|
||||
return NULL;
|
||||
Java_com_huagao_scanner_DeviceManager_getSerialNum(JNIEnv * env, jobject thiz) {
|
||||
|
||||
const char* cVersion = HG_GetSerialNum(mScanner);
|
||||
if (cVersion == nullptr)
|
||||
{
|
||||
LOG("JAVA--- get GetSerialNum is null \r\n");
|
||||
return NULL;
|
||||
}
|
||||
LOG("JAVA--- get GetSerialNum:%s\n", cVersion);
|
||||
jstring strver = env->NewStringUTF(cVersion);
|
||||
return strver;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue