perf: 调整sdk基础功能

dev
huangfeng 3 months ago
parent 524937ea8d
commit cb3a627011

@ -1,6 +1,5 @@
package com.netsdk;
import com.netsdk.lib.NetSDKLib;
import com.netsdk.lib.callback.impl.DefaultDisconnectCallback;
import com.netsdk.lib.callback.impl.DefaultHaveReconnectCallBack;
import com.netsdk.module.BaseModule;
@ -16,7 +15,8 @@ public class SDKTest {
public static void main(String[] args) {
BaseModule baseModule=new BaseModule();
baseModule.init(DefaultDisconnectCallback.getINSTANCE(), DefaultHaveReconnectCallBack.getINSTANCE(),true);
DeviceInfo info=baseModule.login("172.23.12.14",37777,"admin","admin123");
DeviceInfo info=baseModule.login("192.168.1.221",37777,"admin","admin123");
System.out.println(info.getLoginHandler());
baseModule.logout(info.getLoginHandler());
baseModule.clean();
}

@ -5,6 +5,7 @@ import java.math.BigInteger;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.MessageDigest;
import java.text.SimpleDateFormat;
import com.netsdk.lib.NetSDKLib.*;
import com.sun.jna.Memory;
@ -876,4 +877,20 @@ public class ToolKits {
}
}
// 获取当前时间
public static String getDate() {
SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = simpleDate.format(new java.util.Date()).replace(" ", "_").replace(":", "-");
return date;
}
/**
*
* @return
*/
public static String getErrorCodePrint() {
return "";
}
}

@ -0,0 +1,146 @@
package com.netsdk.module;
import com.netsdk.lib.NetSDKLib;
import com.netsdk.lib.NetSDKLib.LLong;
import com.netsdk.lib.NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY;
import com.netsdk.lib.NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY;
import com.netsdk.lib.ToolKits;
import java.io.File;
/**
*
*
*/
public class LoginModule {
public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE;
public static NetSDKLib configsdk = NetSDKLib.CONFIG_INSTANCE;
// 设备信息
public static NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();
// 登陆句柄
public static LLong m_hLoginHandle = new LLong(0);
private static boolean bInit = false;
private static boolean bLogopen = false;
/**
* \if ENGLISH_LANG
* Init
* \else
*
* \endif
*/
public static boolean init(NetSDKLib.fDisConnect disConnect, NetSDKLib.fHaveReConnect haveReConnect) {
bInit = netsdk.CLIENT_Init(disConnect, null);
if(!bInit) {
System.out.println("Initialize SDK failed");
return false;
}
//打开日志,可选
NetSDKLib.LOG_SET_PRINT_INFO setLog = new NetSDKLib.LOG_SET_PRINT_INFO();
File path = new File("./sdklog/");
if (!path.exists()) {
path.mkdir();
}
String logPath = path.getAbsoluteFile().getParent() + "\\sdklog\\" + ToolKits.getDate() + ".log";
setLog.nPrintStrategy = 0;
setLog.bSetFilePath = 1;
System.arraycopy(logPath.getBytes(), 0, setLog.szLogFilePath, 0, logPath.getBytes().length);
System.out.println(logPath);
setLog.bSetPrintStrategy = 1;
bLogopen = netsdk.CLIENT_LogOpen(setLog);
if(!bLogopen ) {
System.err.println("Failed to open NetSDK log");
}
// 设置断线重连回调接口设置过断线重连成功回调函数后当设备出现断线情况SDK内部会自动进行重连操作
// 此操作为可选操作,但建议用户进行设置
netsdk.CLIENT_SetAutoReconnect(haveReConnect, null);
//设置登录超时时间和尝试次数,可选
int waitTime = 5000; //登录请求响应超时时间设置为5S
int tryTimes = 1; //登录时尝试建立链接1次
netsdk.CLIENT_SetConnectTime(waitTime, tryTimes);
// 设置更多网络参数NET_PARAM的nWaittimenConnectTryNum成员与CLIENT_SetConnectTime
// 接口设置的登录设备超时时间和尝试次数意义相同,可选
NetSDKLib.NET_PARAM netParam = new NetSDKLib.NET_PARAM();
netParam.nConnectTime = 10000; // 登录时尝试建立链接的超时时间
netParam.nGetConnInfoTime = 3000; // 设置子连接的超时时间
netParam.nGetDevInfoTime = 3000;//获取设备信息超时时间为0默认1000ms
netsdk.CLIENT_SetNetworkParam(netParam);
return true;
}
/**
* \if ENGLISH_LANG
* CleanUp
* \else
*
* \endif
*/
public static void cleanup() {
if(bLogopen) {
netsdk.CLIENT_LogClose();
}
if(bInit) {
netsdk.CLIENT_Cleanup();
}
}
/**
* \if ENGLISH_LANG
* Login Device
* \else
*
* \endif
*/
public static boolean login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) {
//IntByReference nError = new IntByReference(0);
//入参
NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY pstInParam=new NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY();
pstInParam.nPort=m_nPort;
pstInParam.szIP=m_strIp.getBytes();
pstInParam.szPassword=m_strPassword.getBytes();
pstInParam.szUserName=m_strUser.getBytes();
//出参
NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam=new NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY();
pstOutParam.stuDeviceInfo=m_stDeviceInfo;
//m_hLoginHandle = netsdk.CLIENT_LoginEx2(m_strIp, m_nPort, m_strUser, m_strPassword, 0, null, m_stDeviceInfo, nError);
m_hLoginHandle=netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam);
if(m_hLoginHandle.longValue() == 0) {
System.err.printf("Login Device[%s] Port[%d]Failed. %s\n", m_strIp, m_nPort, ToolKits.getErrorCodePrint());
} else {
System.out.println("Login Success [ " + m_strIp + " ]");
}
return m_hLoginHandle.longValue() == 0? false:true;
}
/**
* \if ENGLISH_LANG
* Logout Device
* \else
*
* \endif
*/
public static boolean logout() {
if(m_hLoginHandle.longValue() == 0) {
return false;
}
boolean bRet = netsdk.CLIENT_Logout(m_hLoginHandle);
if(bRet) {
m_hLoginHandle.setValue(0);
}
return bRet;
}
}

@ -0,0 +1,305 @@
package com.netsdk.module;
import com.netsdk.lib.ImageAlgLib;
import com.netsdk.lib.NetSDKLib;
import com.netsdk.lib.NetSDKLib.*;
import com.netsdk.lib.ToolKits;
import com.netsdk.lib.structure.NET_IN_RADIOMETRY_RANDOM_REGION_TEMPER;
import com.netsdk.lib.structure.NET_OUT_RADIOMETRY_RANDOM_REGION_TEMPER;
import java.io.IOException;
public class ThermalCameraModule {
static ImageAlgLib imageAlgApi = ImageAlgLib.IMAGEALG_INSTANCE;
public static class ThermalCameraStatus {
public boolean bSearching = false; // 是否正在查找
public int nFinderHanle; // 取到的查询句柄
public int nTotalCount; // 符合此次查询条件的结果总条数
public LLong hRadiometryHandle = new LLong(0); // 订阅句柄
}
private static ThermalCameraStatus status = new ThermalCameraStatus();
/**
*
*/
public static boolean radiometryAttach(int nChannel, fRadiometryAttachCB cbNotify) {
/*
*
*/
NET_IN_RADIOMETRY_ATTACH stIn = new NET_IN_RADIOMETRY_ATTACH();
stIn.nChannel = nChannel; // 通道号
stIn.cbNotify = cbNotify; // 回调函数
/*
*
*/
NET_OUT_RADIOMETRY_ATTACH stOut = new NET_OUT_RADIOMETRY_ATTACH();
status.hRadiometryHandle = LoginModule.netsdk.CLIENT_RadiometryAttach(LoginModule.m_hLoginHandle, stIn, stOut, 3000);
if(status.hRadiometryHandle.longValue() == 0) {
System.err.printf("RadiometryAttach Failed!" + ToolKits.getErrorCodePrint());
}
return status.hRadiometryHandle.longValue() != 0;
}
/**
*
*/
public static boolean isAttaching() {
return status.hRadiometryHandle.longValue() != 0;
}
/**
*
*/
public static int radiometryFetch(int nChannel) {
int nStatus = -1;
/*
*
*/
NET_IN_RADIOMETRY_FETCH stIn = new NET_IN_RADIOMETRY_FETCH();
stIn.nChannel = nChannel; // 通道号
/*
*
*/
NET_OUT_RADIOMETRY_FETCH stOut = new NET_OUT_RADIOMETRY_FETCH();
if(!LoginModule.netsdk.CLIENT_RadiometryFetch(LoginModule.m_hLoginHandle, stIn, stOut, 3000)) {
System.err.printf("RadiometryFetch Failed!" + ToolKits.getErrorCodePrint());
} else {
nStatus = stOut.nStatus;
}
return nStatus;
}
/**
*
* @throws IOException
*/
public static boolean saveData(NET_RADIOMETRY_DATA radiometryData) throws IOException {
if (radiometryData == null) {
return false;
}
int nWidth = radiometryData.stMetaData.nWidth;
int nHeight = radiometryData.stMetaData.nHeight;
short[] pGrayImg = new short[nWidth * nHeight];
float[] pTempForPixels = new float[nWidth * nHeight];
if(LoginModule.netsdk.CLIENT_RadiometryDataParse(radiometryData, pGrayImg, pTempForPixels)) {
byte[] pYData = new byte[nWidth*nHeight*2];
imageAlgApi.drcTable(pGrayImg, (short)nWidth, (short)nHeight, 0, pYData, null);
ToolKits.savePicture(pYData, "./GrayscaleMap.yuv");
} else {
System.err.println("saveData failed!" + ToolKits.getErrorCodePrint());
return false;
}
return true;
}
/**
*
*/
public static void radiometryDetach() {
if(status.hRadiometryHandle.longValue() != 0) {
LoginModule.netsdk.CLIENT_RadiometryDetach(status.hRadiometryHandle);
status.hRadiometryHandle.setValue(0);
}
}
/**
*
*/
public static NET_RADIOMETRYINFO queryPointTemper(int nChannel, short x, short y) {
int nQueryType = NetSDKLib.NET_QUERY_DEV_RADIOMETRY_POINT_TEMPER;
// 入参
NET_IN_RADIOMETRY_GETPOINTTEMPER stIn = new NET_IN_RADIOMETRY_GETPOINTTEMPER();
stIn.nChannel = nChannel;
stIn.stCoordinate.nx = x;
stIn.stCoordinate.ny = y;
// 出参
NET_OUT_RADIOMETRY_GETPOINTTEMPER stOut = new NET_OUT_RADIOMETRY_GETPOINTTEMPER();
stIn.write();
stOut.write();
boolean bRet = LoginModule.netsdk.CLIENT_QueryDevInfo(LoginModule.m_hLoginHandle, nQueryType, stIn.getPointer(), stOut.getPointer(), null, 3000);
if(!bRet) {
System.err.printf("QueryPointTemper Failed!" + ToolKits.getErrorCodePrint());
return null;
}
stOut.read();
return stOut.stPointTempInfo;
}
/**
*
*/
public static NET_OUT_RADIOMETRY_RANDOM_REGION_TEMPER radiometryGetRandomRegionTemper(int channel, int pointNum, short[][] nPoints){
NET_IN_RADIOMETRY_RANDOM_REGION_TEMPER stIn = new NET_IN_RADIOMETRY_RANDOM_REGION_TEMPER();
NET_OUT_RADIOMETRY_RANDOM_REGION_TEMPER stOut = new NET_OUT_RADIOMETRY_RANDOM_REGION_TEMPER();
stIn.nChannel = channel;
stIn.nPointNum = pointNum;
for(int i = 0;i < pointNum;i++){
stIn.stuPolygon[i].nx = nPoints[i][0];
stIn.stuPolygon[i].ny = nPoints[i][1];
}
stIn.write();
stOut.write();
boolean bet = LoginModule.netsdk.CLIENT_RadiometryGetRandomRegionTemper(LoginModule.m_hLoginHandle,stIn.getPointer(),stOut.getPointer(), 3000);
stIn.read();
stOut.read();
if(bet) {
}else {
System.err.println("获取测温区域的参数值失败," + ToolKits.getErrorCodePrint());
}
return stOut;
}
/**
*
*/
public static NET_RADIOMETRYINFO queryItemTemper(int nChannel, int nPresetId, int nRuleId, int nMeterType) {
int nQueryType = NetSDKLib.NET_QUERY_DEV_RADIOMETRY_TEMPER;
// 入参
NET_IN_RADIOMETRY_GETTEMPER stIn = new NET_IN_RADIOMETRY_GETTEMPER();
stIn.stCondition.nPresetId = nPresetId;
stIn.stCondition.nRuleId = nRuleId;
stIn.stCondition.nMeterType = nMeterType; // eg: NET_RADIOMETRY_METERTYPE.NET_RADIOMETRY_METERTYPE_AREA;
stIn.stCondition.nChannel = nChannel;
// 出参
NET_OUT_RADIOMETRY_GETTEMPER stOut = new NET_OUT_RADIOMETRY_GETTEMPER();
stIn.write();
stOut.write();
boolean bRet = LoginModule.netsdk.CLIENT_QueryDevInfo(LoginModule.m_hLoginHandle, nQueryType, stIn.getPointer(), stOut.getPointer(), null, 3000);
if(!bRet) {
System.err.printf("QueryPointTemper Failed!" + ToolKits.getErrorCodePrint());
return null;
}
stOut.read();
return stOut.stTempInfo;
}
/**
*
*/
public static boolean startFind(NET_IN_RADIOMETRY_STARTFIND stuIn) {
if(status.bSearching) {
stopFind();
}
/*
*
*/
NET_OUT_RADIOMETRY_STARTFIND stuOut = new NET_OUT_RADIOMETRY_STARTFIND();
stuIn.write();
stuOut.write();
status.bSearching = LoginModule.netsdk.CLIENT_StartFind(LoginModule.m_hLoginHandle,
NET_FIND.NET_FIND_RADIOMETRY, stuIn.getPointer(), stuOut.getPointer(), 5000);
if (status.bSearching) {
stuOut.read();
status.nFinderHanle = stuOut.nFinderHanle;
status.nTotalCount = stuOut.nTotalCount;
}else {
System.err.printf("startFind Failed!" + ToolKits.getErrorCodePrint());
}
return status.bSearching;
}
/**
*
*/
public static int getTotalCount() {
return status.nTotalCount;
}
/**
*
*/
public static NET_OUT_RADIOMETRY_DOFIND doFind(int nOffset, int nCount) {
if(!status.bSearching) {
System.err.printf("DoFind Failed! [need startFind]");
return null;
}
/*
*
*/
NET_IN_RADIOMETRY_DOFIND stuIn = new NET_IN_RADIOMETRY_DOFIND();
stuIn.nFinderHanle = status.nFinderHanle;
stuIn.nBeginNumber = nOffset;
stuIn.nCount = nCount;
/*
*
*/
NET_OUT_RADIOMETRY_DOFIND stuOut = new NET_OUT_RADIOMETRY_DOFIND();
stuIn.write();
stuOut.write();
if (!LoginModule.netsdk.CLIENT_DoFind(LoginModule.m_hLoginHandle,
NET_FIND.NET_FIND_RADIOMETRY, stuIn.getPointer(), stuOut.getPointer(), 5000)) {
System.err.printf("DoFind Failed!" + ToolKits.getErrorCodePrint());
return null;
}
stuOut.read();
return stuOut;
}
/**
*
*/
public static void stopFind() {
if(!status.bSearching) {
return;
}
/*
*
*/
NET_IN_RADIOMETRY_STOPFIND stuIn = new NET_IN_RADIOMETRY_STOPFIND();
stuIn.nFinderHanle = status.nFinderHanle;
/*
*
*/
NET_OUT_RADIOMETRY_STOPFIND stuOut = new NET_OUT_RADIOMETRY_STOPFIND();
stuIn.write();
stuOut.write();
LoginModule.netsdk.CLIENT_StopFind(LoginModule.m_hLoginHandle,
NET_FIND.NET_FIND_RADIOMETRY, stuIn.getPointer(), stuOut.getPointer(), 5000);
status.bSearching = false;
status.nFinderHanle = 0;
// status.nTotalCount = 0;
return;
}
}
Loading…
Cancel
Save