jni增加设置/获取设备配置接口

This commit is contained in:
luoliangyi 2023-11-04 14:39:30 +08:00
parent 8f3ede3bdb
commit 0f80d261d7
3 changed files with 170 additions and 2 deletions

View File

@ -49,3 +49,6 @@ Java_com_easing_java_HGScannerLib_GetDeviceFWVersion
Java_com_easing_java_HGScannerLib_StartDeviceScan Java_com_easing_java_HGScannerLib_StartDeviceScan
Java_com_easing_java_HGScannerLib_StopDeviceScan Java_com_easing_java_HGScannerLib_StopDeviceScan
Java_com_easing_java_HGScannerLib_GetDeviceParamGroupList Java_com_easing_java_HGScannerLib_GetDeviceParamGroupList
Java_com_easing_java_HGScannerLib_GetDeviceParam
Java_com_easing_java_HGScannerLib_SetDeviceParam
Java_com_easing_java_HGScannerLib_ResetDeviceParam

View File

@ -630,5 +630,150 @@ extern "C" JNIEXPORT jobjectArray JNICALL Java_com_easing_java_HGScannerLib_GetD
devParamGroupList = env->NewObjectArray(0, clsDeviceParamGroup, env->NewObject(clsDeviceParamGroup, initDeviceParamGroup)); devParamGroupList = env->NewObjectArray(0, clsDeviceParamGroup, env->NewObject(clsDeviceParamGroup, initDeviceParamGroup));
} }
printf("\n");
return devParamGroupList; return devParamGroupList;
} }
extern "C" JNIEXPORT jobject JNICALL Java_com_easing_java_HGScannerLib_GetDeviceParam(
JNIEnv* env, jclass clazz, jlong dev, jint option)
{
(void)clazz;
printf("\nJava_com_easing_java_HGScannerLib_GetDeviceParam\n");
jclass clsDeviceParam = env->FindClass("com/easing/java/HGLibDeviceParam");
jmethodID initDeviceParam = env->GetMethodID(clsDeviceParam, "<init>", "()V");
jclass clsIntValueRange = env->FindClass("com/easing/java/HGLibDeviceIntValueRange");
jmethodID initIntValueRange = env->GetMethodID(clsIntValueRange, "<init>", "()V");
jclass clsDoubleValueRange = env->FindClass("com/easing/java/HGLibDeviceDoubleValueRange");
jmethodID initDoubleValueRange = env->GetMethodID(clsDoubleValueRange, "<init>", "()V");
jobject devParam = env->NewObject(clsDeviceParam, initDeviceParam);
HGLibDeviceParam* devParam2 = HGLib_GetDeviceParam((HGLibDevice)dev, (HGUInt)option);
if (NULL != devParam2)
{
env->SetIntField(devParam, env->GetFieldID(clsDeviceParam, "option", "I"), (jint)devParam2->option);
env->SetIntField(devParam, env->GetFieldID(clsDeviceParam, "type", "I"), (jint)devParam2->type);
if (HGLIB_OPTION_VALUETYPE_INT == devParam2->type)
{
env->SetIntField(devParam, env->GetFieldID(clsDeviceParam, "intValue", "I"), (jint)devParam2->intValue);
}
else if (HGLIB_OPTION_VALUETYPE_ENUM == devParam2->type)
{
env->SetIntField(devParam, env->GetFieldID(clsDeviceParam, "enumValue", "I"), (jint)devParam2->enumValue);
}
else if (HGLIB_OPTION_VALUETYPE_DOUBLE == devParam2->type)
{
env->SetDoubleField(devParam, env->GetFieldID(clsDeviceParam, "doubleValue", "D"), (jdouble)devParam2->doubleValue);
}
else if (HGLIB_OPTION_VALUETYPE_BOOL == devParam2->type)
{
env->SetBooleanField(devParam, env->GetFieldID(clsDeviceParam, "boolValue", "Z"), (jboolean)devParam2->boolValue);
}
env->SetIntField(devParam, env->GetFieldID(clsDeviceParam, "rangeType", "I"), (jint)devParam2->rangeType);
if (HGLIB_OPTION_VALUERANGETYPE_INTLIST == devParam2->rangeType)
{
jintArray intValueList = env->NewIntArray(devParam2->intValueList.count);
env->SetIntArrayRegion(intValueList, 0, devParam2->intValueList.count, (jint*)devParam2->intValueList.value);
env->SetObjectField(devParam, env->GetFieldID(clsDeviceParam, "intValueList", "[I"), intValueList);
}
else if (HGLIB_OPTION_VALUERANGETYPE_ENUMLIST == devParam2->rangeType)
{
jintArray enumValueList = env->NewIntArray(devParam2->enumValueList.count);
env->SetIntArrayRegion(enumValueList, 0, devParam2->enumValueList.count, (jint*)devParam2->enumValueList.value);
env->SetObjectField(devParam, env->GetFieldID(clsDeviceParam, "enumValueList", "[I"), enumValueList);
}
else if (HGLIB_OPTION_VALUERANGETYPE_DOUBLELIST == devParam2->rangeType)
{
jdoubleArray doubleValueList = env->NewDoubleArray(devParam2->doubleValueList.count);
env->SetDoubleArrayRegion(doubleValueList, 0, devParam2->doubleValueList.count, (jdouble*)devParam2->doubleValueList.value);
env->SetObjectField(devParam, env->GetFieldID(clsDeviceParam, "doubleValueList", "[D"), doubleValueList);
}
else if (HGLIB_OPTION_VALUERANGETYPE_INTRANGE == devParam2->rangeType)
{
jobject intValueRange = env->NewObject(clsIntValueRange, initIntValueRange);
env->SetIntField(intValueRange, env->GetFieldID(clsIntValueRange, "minValue", "I"), (jint)devParam2->intValueRange.minValue);
env->SetIntField(intValueRange, env->GetFieldID(clsIntValueRange, "maxValue", "I"), (jint)devParam2->intValueRange.maxValue);
env->SetObjectField(devParam, env->GetFieldID(clsDeviceParam, "intValueRange", "Lcom/easing/java/HGLibDeviceIntValueRange;"), intValueRange);
}
else if (HGLIB_OPTION_VALUERANGETYPE_DOUBLERANGE == devParam2->rangeType)
{
jobject doubleValueRange = env->NewObject(clsDoubleValueRange, initDoubleValueRange);
env->SetDoubleField(doubleValueRange, env->GetFieldID(clsDoubleValueRange, "minValue", "D"), (jdouble)devParam2->doubleValueRange.minValue);
env->SetDoubleField(doubleValueRange, env->GetFieldID(clsDoubleValueRange, "maxValue", "D"), (jdouble)devParam2->doubleValueRange.maxValue);
env->SetObjectField(devParam, env->GetFieldID(clsDeviceParam, "doubleValueRange", "Lcom/easing/java/HGLibDeviceDoubleValueRange;"), doubleValueRange);
}
HGLib_ReleaseDeviceParam(devParam2);
}
printf("\n");
return devParam;
}
extern "C" JNIEXPORT jboolean JNICALL Java_com_easing_java_HGScannerLib_SetDeviceParam(
JNIEnv* env, jclass clazz, jlong dev, jobject deviceSetParam)
{
(void)clazz;
printf("\nJava_com_easing_java_HGScannerLib_SetDeviceParam\n");
jclass cls = env->GetObjectClass(deviceSetParam);
HGUInt option = (HGUInt)env->GetIntField(deviceSetParam, env->GetFieldID(cls, "option", "I"));
HGUInt type = (HGUInt)env->GetIntField(deviceSetParam, env->GetFieldID(cls, "type", "I"));
HGInt intValue = (HGInt)env->GetIntField(deviceSetParam, env->GetFieldID(cls, "intValue", "I"));
HGUInt enumValue = (HGUInt)env->GetIntField(deviceSetParam, env->GetFieldID(cls, "enumValue", "I"));
HGDouble doubleValue = (HGDouble)env->GetDoubleField(deviceSetParam, env->GetFieldID(cls, "doubleValue", "D"));
HGBool boolValue = (HGBool)env->GetBooleanField(deviceSetParam, env->GetFieldID(cls, "boolValue", "Z"));
printf("option=%u\n", option);
printf("type=%u\n", type);
HGVoid *data = NULL;
if (HGLIB_OPTION_VALUETYPE_INT == type)
{
printf("intValue=%d\n", intValue);
data = &intValue;
}
else if (HGLIB_OPTION_VALUETYPE_ENUM == type)
{
printf("enumValue=%u\n", enumValue);
data = &enumValue;
}
else if (HGLIB_OPTION_VALUETYPE_DOUBLE == type)
{
printf("doubleValue=%f\n", doubleValue);
data = &doubleValue;
}
else if (HGLIB_OPTION_VALUETYPE_BOOL == type)
{
printf("boolValue=%d\n", boolValue);
data = &boolValue;
}
if (NULL == data)
{
printf("Invalid Parameter\n");
return (jboolean)HGFALSE;
}
HGBool ret = HGLib_SetDeviceParam((HGLibDevice)dev, option, data);
printf("ret=%d\n", ret);
printf("\n");
return (jboolean)ret;
}
extern "C" JNIEXPORT jboolean JNICALL Java_com_easing_java_HGScannerLib_ResetDeviceParam(
JNIEnv* env, jclass clazz, jlong dev)
{
(void)clazz;
printf("\nJava_com_easing_java_HGScannerLib_ResetDeviceParam\n");
HGBool ret = HGLib_ResetDeviceParam((HGLibDevice)dev);
printf("ret=%d\n", ret);
printf("\n");
return (jboolean)ret;
}

View File

@ -52,6 +52,16 @@ class HGLibDeviceParamGroup {
public HGLibDeviceParam[] params; public HGLibDeviceParam[] params;
} }
class HGLibDeviceSetParam {
public int option;
public int type;
public int intValue;
public int enumValue;
public double doubleValue;
public boolean boolValue;
}
public class HGScannerLib { public class HGScannerLib {
static { static {
@ -76,7 +86,7 @@ public class HGScannerLib {
public native boolean StopDeviceScan(long dev); public native boolean StopDeviceScan(long dev);
public native HGLibDeviceParamGroup[] GetDeviceParamGroupList(long dev); public native HGLibDeviceParamGroup[] GetDeviceParamGroupList(long dev);
public native HGLibDeviceParam GetDeviceParam(long dev, int option); public native HGLibDeviceParam GetDeviceParam(long dev, int option);
public native boolean SetDeviceParam(long dev, HGLibDeviceParam deviceParam); public native boolean SetDeviceParam(long dev, HGLibDeviceSetParam deviceSetParam);
public native boolean ResetDeviceParam(long dev); public native boolean ResetDeviceParam(long dev);
; ;
public void onDeviceHotPlugEvent(int event, String deviceName) { public void onDeviceHotPlugEvent(int event, String deviceName) {
@ -146,6 +156,7 @@ public class HGScannerLib {
String fwVersion = inst.GetDeviceFWVersion(dev); String fwVersion = inst.GetDeviceFWVersion(dev);
System.out.println("fwVersion=" + fwVersion); System.out.println("fwVersion=" + fwVersion);
/*
HGLibDeviceParamGroup[] devParamGroups = inst.GetDeviceParamGroupList(dev); HGLibDeviceParamGroup[] devParamGroups = inst.GetDeviceParamGroupList(dev);
for (int i = 0; i < devParamGroups.length; ++i) for (int i = 0; i < devParamGroups.length; ++i)
{ {
@ -204,6 +215,15 @@ public class HGScannerLib {
} }
} }
} }
*/
HGLibDeviceSetParam deviceSetParam = new HGLibDeviceSetParam();
deviceSetParam.option = 27;
deviceSetParam.type = 1;
deviceSetParam.intValue = 300;
inst.SetDeviceParam(dev, deviceSetParam);
inst.ResetDeviceParam(dev);
//inst.StartDeviceScan(dev); //inst.StartDeviceScan(dev);