package com.netsdk.demo.customize; import com.netsdk.demo.customize.healthCodeEx.callback.RegisterServiceCallBack; import com.netsdk.demo.customize.healthCodeEx.entity.DeviceInfo; import com.netsdk.demo.customize.healthCodeEx.entity.ListenInfo; import com.netsdk.demo.customize.healthCodeEx.module.AutoRegisterModule; import com.netsdk.demo.customize.healthCodeEx.module.LoginModule; import com.netsdk.demo.customize.healthCodeEx.module.SdkUtilModule; import com.netsdk.demo.util.CaseMenu; import com.netsdk.lib.NetSDKLib; import com.netsdk.lib.ToolKits; import com.netsdk.lib.enumeration.EM_WATER_DETECTION_ALARM_TYPE; import com.netsdk.lib.enumeration.ENUMERROR; import com.netsdk.lib.structure.*; import com.sun.jna.Memory; import com.sun.jna.Native; import com.sun.jna.Pointer; import java.util.Map; import java.util.Scanner; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; /** * @author 291189 * @version 1.0 * @description * @date 2022/8/22 9:56 */ public class WaterDataDemo { static NetSDKLib netSdk = NetSDKLib.NETSDK_INSTANCE; // 登录句柄 private static NetSDKLib.LLong loginHandle = new NetSDKLib.LLong(0); // 设备信息 private static NetSDKLib.NET_DEVICEINFO_Ex m_hDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex(); // 主动注册监听句柄 private NetSDKLib.LLong m_hListenHandle = new NetSDKLib.LLong(0); // 用户存储注册上来的设备信息的缓存 Map 项目中请替换成其他中间件 private final Map deviceInfoMap = new ConcurrentHashMap<>(); private volatile Boolean taskIsOpen = false; /////////////// 注册地址(服务器 这里是运行此Demo的电脑IP) 监听端口 ////////////////////// private final String serverIpAddr = "10.34.3.159"; private final int serverPort = 9500; // 注意不要和其他程序发生冲突 private String username = "admin"; private String password = "admin123"; /////////////// 配置TCP登陆地址,端口,用户名,密码 //////////////////////// private String m_ipAddr = "172.30.2.91"; private int m_nPort = 37777; private String m_username = "admin"; private String m_password = "admin123"; ////////////////////////////////////////////////////////////////////// public void GetWaterDataStatServerCaps(){ NET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO input=new NET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO(); Pointer pointerInput = new Memory(input.size()); pointerInput.clear(input.size()); ToolKits.SetStructDataToPointer(input, pointerInput, 0); NET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO outPut=new NET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO(); Pointer pointerOutput = new Memory(outPut.size()); pointerOutput.clear(outPut.size()); ToolKits.SetStructDataToPointer(outPut, pointerOutput, 0); NetSDKLib.LLong lLong = netSdk.CLIENT_GetWaterDataStatServerCaps(loginHandle, pointerInput, pointerOutput, 3000); if(lLong.longValue()!=0){ System.out.printf(" CLIENT_GetWaterDataStatServerCaps Success\n"); ToolKits.GetPointerDataToStruct(pointerOutput,0,outPut); Native.free(Pointer.nativeValue(pointerInput)); //清理内存 Pointer.nativeValue(pointerInput, 0); Native.free(Pointer.nativeValue(pointerOutput)); Pointer.nativeValue(pointerOutput, 0); System.out.println("emSupport:"+ outPut.emSupport); System.out.println("emSupportLocalDataStore:"+ outPut.emSupportLocalDataStore); }else { Native.free(Pointer.nativeValue(pointerInput)); //清理内存 Pointer.nativeValue(pointerInput, 0); //防止gc重复回收 Native.free(Pointer.nativeValue(pointerOutput)); Pointer.nativeValue(pointerOutput, 0); System.out.printf("CLIENT_GetWaterDataStatServerCaps Failed!LastError = %s\n", ToolKits.getErrorCode()); } } //水质检测实时数据获取 public void GetWaterDataStatServerWaterData(){ NET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO input=new NET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO(); input.nTypeNum=1; input.emType[0]=1; Pointer pointerInput = new Memory(input.size()); pointerInput.clear(input.size()); ToolKits.SetStructDataToPointer(input, pointerInput, 0); NET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO outPut=new NET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO(); Pointer pointerOutput = new Memory(outPut.size()); pointerOutput.clear(outPut.size()); ToolKits.SetStructDataToPointer(outPut, pointerOutput, 0); NetSDKLib.LLong lLong = netSdk.CLIENT_GetWaterDataStatServerWaterData(loginHandle, pointerInput, pointerOutput, 3000); if(lLong.longValue()!=0){ System.out.printf(" CLIENT_GetWaterDataStatServerWaterData Success\n"); ToolKits.GetPointerDataToStruct(pointerOutput,0,outPut); Native.free(Pointer.nativeValue(pointerInput)); //清理内存 Pointer.nativeValue(pointerInput, 0); Native.free(Pointer.nativeValue(pointerOutput)); Pointer.nativeValue(pointerOutput, 0); System.out.println("emQuality:"+ outPut.emQuality); NET_WATER_DETECTION_UPLOAD_INFO stuUploadInfo = outPut.stuUploadInfo; System.out.println("stuUploadInfo:"+ stuUploadInfo.toString()); int nFlunkTypeNum = outPut.nFlunkTypeNum; int[] emFlunkType = outPut.emFlunkType; for(int i=0;i