package com.netsdk.demo.customize.videoin;
|
|
import com.netsdk.demo.customize.configuration.QRcode;
|
import com.netsdk.demo.util.CaseMenu;
|
import com.netsdk.lib.NetSDKLib;
|
import com.netsdk.lib.ToolKits;
|
import com.netsdk.lib.callback.impl.DefaultDisconnectCallback;
|
import com.netsdk.lib.callback.impl.DefaultHaveReconnectCallBack;
|
import com.netsdk.lib.enumeration.ENUMERROR;
|
import com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
|
import com.netsdk.lib.structure.NET_CFG_HEALTH_CODE_INFO;
|
import com.netsdk.lib.structure.NET_CFG_QR_CODE_INFO;
|
import com.netsdk.lib.structure.NET_VIDEOIN_DEFOG_INFO;
|
import com.netsdk.module.BaseModule;
|
import com.netsdk.module.ConfigModule;
|
import com.netsdk.module.entity.DeviceInfo;
|
import com.sun.jna.Pointer;
|
import com.sun.jna.ptr.IntByReference;
|
|
import java.io.File;
|
|
import static com.netsdk.lib.NetSDKLib.NET_EM_CONFIG_TYPE.NET_EM_CONFIG_NORMAL;
|
import static com.netsdk.lib.NetSDKLib.NET_EM_DEFOG_MODE.NET_EM_DEFOG_AUTO;
|
import static com.netsdk.lib.NetSDKLib.NET_EM_INTENSITY_MODE.NET_EM_INTENSITY_MODE_AUTO;
|
import static com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE.NET_EM_CFG_VIDEOIN_DEFOG;
|
|
/**
|
* className:VideoinConfigDemo
|
* description:高点监控球机透雾功能打开、关闭需求。
|
* author:251589
|
* createTime:2020/12/28 14:59
|
*
|
* @version v1.0
|
*/
|
public class VideoinConfigDemo {
|
|
public static final NetSDKLib netSdk = NetSDKLib.NETSDK_INSTANCE;
|
// 登陆句柄
|
private static NetSDKLib.LLong loginHandle = new NetSDKLib.LLong(0);
|
|
// 设备信息扩展
|
private NetSDKLib.NET_DEVICEINFO_Ex deviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();
|
|
|
public void initTest() {
|
// 初始化SDK库
|
netSdk.CLIENT_Init(DisConnectCallBack.getInstance(), null);
|
// 设置断线重连成功回调函数
|
netSdk.CLIENT_SetAutoReconnect(HaveReConnectCallBack.getInstance(), null);
|
|
//打开日志,可选
|
NetSDKLib.LOG_SET_PRINT_INFO setLog = new NetSDKLib.LOG_SET_PRINT_INFO();
|
String logPath = new File(".").getAbsoluteFile().getParent() + File.separator + "sdk_log" + File.separator + "sdk.log";
|
setLog.bSetFilePath = 1;
|
System.arraycopy(logPath.getBytes(), 0, setLog.szLogFilePath, 0, logPath.getBytes().length);
|
setLog.bSetPrintStrategy = 1;
|
setLog.nPrintStrategy = 0;
|
if (!netSdk.CLIENT_LogOpen(setLog)) {
|
System.err.println("Open SDK Log Failed!!!");
|
}
|
login();
|
}
|
|
public void login() {
|
// 登陆设备
|
int nSpecCap = NetSDKLib.EM_LOGIN_SPAC_CAP_TYPE.EM_LOGIN_SPEC_CAP_TCP; // TCP登入
|
IntByReference nError = new IntByReference(0);
|
loginHandle = netSdk.CLIENT_LoginEx2(ip, port, username,
|
password, nSpecCap, null, deviceInfo, nError);
|
if (loginHandle.longValue() != 0) {
|
System.out.printf("Login Device[%s] Success!\n", ip);
|
} else {
|
System.err.printf("Login Device[%s] Fail.Error[%s]\n", ip, ToolKits.getErrorCode());
|
loginOut();
|
}
|
}
|
|
|
public void loginOut() {
|
System.out.println("End Test");
|
if (loginHandle.longValue() != 0) {
|
netSdk.CLIENT_Logout(loginHandle);
|
}
|
System.out.println("See You...");
|
|
netSdk.CLIENT_Cleanup();
|
System.exit(0);
|
}
|
|
|
/**
|
* 设备断线回调
|
*/
|
private static class DisConnectCallBack implements NetSDKLib.fDisConnect {
|
|
private DisConnectCallBack() {
|
}
|
|
private static class CallBackHolder {
|
private static DisConnectCallBack instance = new DisConnectCallBack();
|
}
|
|
public static DisConnectCallBack getInstance() {
|
return DisConnectCallBack.CallBackHolder.instance;
|
}
|
|
public void invoke(NetSDKLib.LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser) {
|
System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
|
}
|
}
|
|
/**
|
* 设备重连回调
|
*/
|
private static class HaveReConnectCallBack implements NetSDKLib.fHaveReConnect {
|
private HaveReConnectCallBack() {
|
}
|
|
private static class CallBackHolder {
|
private static HaveReConnectCallBack instance = new HaveReConnectCallBack();
|
}
|
|
public static HaveReConnectCallBack getInstance() {
|
return HaveReConnectCallBack.CallBackHolder.instance;
|
}
|
|
public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
|
System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
|
|
}
|
}
|
|
|
/**
|
* 获取透雾配置
|
*/
|
public void getConfig() {
|
NET_VIDEOIN_DEFOG_INFO info = new NET_VIDEOIN_DEFOG_INFO();
|
info.write();
|
boolean ret = netSdk.CLIENT_GetConfig(loginHandle, type, -1, info.getPointer(), info.size(), 5000, null);
|
if (ret) {
|
info.read();
|
System.out.println("读取配置" + info.toString());
|
}
|
}
|
|
/**
|
* 下发透雾使能配置
|
*/
|
public void setConfig() {
|
NET_VIDEOIN_DEFOG_INFO info = new NET_VIDEOIN_DEFOG_INFO();
|
|
info.emDefogMode = NET_EM_DEFOG_AUTO; //自动 2
|
// info.bCamDefogEnable = true;
|
// info.emCfgType = NET_EM_CONFIG_NORMAL; // 普通 2
|
// info.emIntensityMode = NET_EM_INTENSITY_MODE_AUTO; // 自动 1
|
// info.nIntensity = 50;
|
// info.nLightIntensityLevel = 2;
|
info.write();
|
boolean ret = netSdk.CLIENT_SetConfig(loginHandle, type, -1, info.getPointer(), info.size(), 5000, null, null);
|
if (ret) {
|
System.out.println("下发透雾使能配置成功!!!");
|
} else {
|
System.err.println("下发透雾使能配置," + ENUMERROR.getErrorMessage());
|
}
|
}
|
|
|
public void run() {
|
CaseMenu menu = new CaseMenu();
|
menu.addItem(new CaseMenu.Item(this, "设置透雾", "setConfig"));
|
menu.addItem(new CaseMenu.Item(this, "获取透雾配置", "getConfig"));
|
menu.run();
|
}
|
|
int type = NET_EM_CFG_VIDEOIN_DEFOG;
|
String ip = "171.5.42.15";//"172.23.10.38";
|
int port = 37777;
|
String username = "admin";
|
String password = "admin123";
|
|
public static void main(String[] args) {
|
VideoinConfigDemo demo = new VideoinConfigDemo();
|
demo.initTest();
|
demo.run();
|
demo.loginOut();
|
}
|
}
|