package com.netsdk.demo.customize; import com.netsdk.demo.DemoTemplate; import com.netsdk.demo.util.CaseMenu; import com.netsdk.lib.NetSDKLib; import com.netsdk.lib.PlaySDKLib; import com.netsdk.lib.ToolKits; import com.netsdk.lib.structure.NET_IN_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW; import com.netsdk.lib.structure.NET_OUT_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW; import com.netsdk.lib.structure.NET_VEHICLE_INOUT_ANALYSE_PROC; import com.netsdk.lib.structure.NET_VEHICLE_OBJECT; import com.netsdk.lib.utils.Initialization; import com.sun.jna.Pointer; import java.io.File; import java.util.Scanner; public class TrafficFlowDemo extends Initialization { /**变量区**/ int channel=0; NetSDKLib.LLong attachHandle = new NetSDKLib.LLong(0); static NetSDKLib netsdkApi = NetSDKLib.NETSDK_INSTANCE; static NetSDKLib configApi = NetSDKLib.CONFIG_INSTANCE; static PlaySDKLib playsdkApi = PlaySDKLib.PLAYSDK_INSTANCE; /**方法区**/ private static class VehicleInOutAnalyseProc implements NetSDKLib.fVehicleInOutAnalyseProc{ private VehicleInOutAnalyseProc() { } private static class VehicleInOutAnalyseHolder { private static final VehicleInOutAnalyseProc instance = new VehicleInOutAnalyseProc(); } public static VehicleInOutAnalyseProc getInstance() { return VehicleInOutAnalyseProc.VehicleInOutAnalyseHolder.instance; } @Override public void invoke(NetSDKLib.LLong lAttachHandle, Pointer pstuVehicleInOutAnalyseProc, Pointer dwUser) { if (lAttachHandle.longValue() == 0 || pstuVehicleInOutAnalyseProc == null) { return; } NET_VEHICLE_INOUT_ANALYSE_PROC cbMsg = new NET_VEHICLE_INOUT_ANALYSE_PROC(); ToolKits.GetPointerData(pstuVehicleInOutAnalyseProc, cbMsg); System.out.println("==========CallBack received=========="); System.out.println("szName = " + new String(cbMsg.szName).trim()); System.out.println("dbPTS = " + cbMsg.dbPTS); System.out.println("stuUTC = " + cbMsg.stuUTC.toStringTime()); System.out.println("nEventID = " + cbMsg.nEventID); System.out.println("nSequence = " + cbMsg.nSequence); System.out.println("nFrameSequence = " + cbMsg.nFrameSequence); System.out.println("dbRadarInstallAngle = " + cbMsg.dbRadarInstallAngle); System.out.println("nStatNum = " + cbMsg.nStatNum); for(int i = 0; i < cbMsg.nStatNum; i ++){ System.out.println("stuStats[" + i + "] = " + cbMsg.stuStats[i].toString()); } System.out.println("nObjectNum = " + cbMsg.nObjectNum); if(cbMsg.nObjectNum > 0){ NET_VEHICLE_OBJECT[] stuObject = new NET_VEHICLE_OBJECT[cbMsg.nObjectNum]; for(int i = 0; i < cbMsg.nObjectNum; i ++){ stuObject[i] = new NET_VEHICLE_OBJECT(); } ToolKits.GetPointerDataToStructArr(cbMsg.pstuObjets, stuObject); for(int i = 0; i < cbMsg.nObjectNum; i ++){ System.out.println("pstuObject[" + i + "] = " + stuObject[i].toString()); } } } } /** * 订阅交通流量统计 */ public void AttachTrafficFlowStateRealFlow() { //先关闭,再开启 if(attachHandle.intValue() != 0){ DetachTrafficFlowStateRealFlow(); } NET_IN_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW stIn = new NET_IN_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW(); stIn.cbVehicleInOutAnalyseProc = VehicleInOutAnalyseProc.getInstance(); NET_OUT_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW stOut = new NET_OUT_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW(); stIn.write(); stOut.write(); attachHandle = netsdkApi.CLIENT_AttachTrafficFlowStatRealFlow(loginHandle, stIn.getPointer(), stOut.getPointer(), 3000); if(attachHandle.intValue() != 0){ System.out.println("AttachTrafficFlowStatRealFlow success"); } else { System.err.println("AttachTrafficFlowStatRealFlow failed" + ToolKits.getLastError()); } } public void DetachTrafficFlowStateRealFlow() { if(netsdkApi.CLIENT_DetachTrafficFlowStatRealFlow(attachHandle)){ System.out.println("DetachTrafficFlowStatRealFlow success"); } else { System.err.println("DetachTrafficFlowStatRealFlow failed" + ToolKits.getLastError()); } } public void RunTest() { System.out.println("Run Test"); CaseMenu menu = new CaseMenu();; menu.addItem((new CaseMenu.Item(this , "AttachTrafficFlowStateRealFlow" , "AttachTrafficFlowStateRealFlow"))); menu.addItem((new CaseMenu.Item(this , "DetachTrafficFlowStateRealFlow" , "DetachTrafficFlowStateRealFlow"))); menu.run(); } public static void main(String[] args) { TrafficFlowDemo demo = new TrafficFlowDemo(); /**登录信息运行时输入**/ // Scanner sc = new Scanner(System.in); // System.out.print("ip:"); // String ip = sc.nextLine(); // System.out.print("port:"); // String tmp = sc.nextLine(); // int port = Integer.parseInt(tmp); // System.out.print("username:"); // String username = sc.nextLine(); // System.out.print("password:"); // String pwd = sc.nextLine(); // InitTest(ip,port,username,pwd); /**登录信息固定**/ InitTest("172.9.102.188",37777,"admin","admin123"); demo.RunTest(); LoginOut(); } }