package com.netsdk.demo.customize; import com.netsdk.demo.util.CaseMenu; import com.netsdk.lib.NetSDKLib; import com.netsdk.lib.ToolKits; import com.netsdk.lib.structure.*; import com.netsdk.lib.utils.Initialization; import com.sun.jna.Memory; import com.sun.jna.Pointer; /** * @author 291189 * @version 1.0 * @description * @date 2022/5/18 9:51 */ public class PTZbaseDemo extends Initialization { private static String ipAddr = "172.23.12.161"; private static int port = 37777; private static String user = "admin"; private static String password = "admin123"; int channel = 0; // 获取镜头当前倍率下水平视场角参数 public void QueryDevInfoHFOV() { int nQueryType = NetSDKLib.NET_QUERY_PTZBASE_GET_HFOV_VALUE; // 入参 NET_IN_PTZBASE_GET_HFOV_VALUE pIn = new NET_IN_PTZBASE_GET_HFOV_VALUE(); pIn.fZoom = 0.5f; pIn.nChannel = channel; Pointer pInBuf = new Memory(pIn.size()); ToolKits.SetStructDataToPointer(pIn, pInBuf, 0); // 出参 NET_OUT_PTZBASE_GET_HFOV_VALUE pOut = new NET_OUT_PTZBASE_GET_HFOV_VALUE(); Pointer pOutBuf = new Memory(pOut.size()); ToolKits.SetStructDataToPointer(pOut, pOutBuf, 0); boolean ret = netSdk.CLIENT_QueryDevInfo(loginHandle, nQueryType, pInBuf, pOutBuf, null, 3000); if (!ret) { System.err.printf("QueryDevInfoHFOV Failed!Last Error[0x%x]\n", netSdk.CLIENT_GetLastError()); return; } ToolKits.GetPointerDataToStruct(pOutBuf, 0, pOut); System.out.println("nMaxValue:" + pOut.nMaxValue); System.out.println("nMinValue:" + pOut.nMinValue); System.out.println("nValue:" + pOut.nValue); } // 获取镜头当前倍率下垂直视场角参数 public void QueryDevInfoVFOV() { int nQueryType = NetSDKLib.NET_QUERY_PTZBASE_GET_VFOV_VALUE; // 入参 NET_IN_PTZBASE_GET_VFOV_VALUE pIn = new NET_IN_PTZBASE_GET_VFOV_VALUE(); pIn.fZoom = 0.5f; pIn.nChannel = channel; Pointer pInBuf = new Memory(pIn.size()); ToolKits.SetStructDataToPointer(pIn, pInBuf, 0); // 出参 NET_OUT_PTZBASE_GET_VFOV_VALUE pOut = new NET_OUT_PTZBASE_GET_VFOV_VALUE(); Pointer pOutBuf = new Memory(pOut.size()); ToolKits.SetStructDataToPointer(pOut, pOutBuf, 0); boolean ret = netSdk.CLIENT_QueryDevInfo(loginHandle, nQueryType, pInBuf, pOutBuf, null, 3000); if (!ret) { System.err.printf("QueryDevInfoVFOV Failed!Last Error[0x%x]\n", netSdk.CLIENT_GetLastError()); return; } ToolKits.GetPointerDataToStruct(pOutBuf, 0, pOut); System.out.println("nMaxValue:" + pOut.nMaxValue); System.out.println("nMinValue:" + pOut.nMinValue); System.out.println("nValue:" + pOut.nValue); } // public static final int NET_QUERY_PTZBASE_GET_CENTER_GPS = 0x3a; // // 获取中心位置GPS信息,pInBuf = NET_IN_PTZBASE_GET_CENTER_GPS*,pOutBuf = // NET_OUT_PTZBASE_GET_CENTER_GPS* // 获取中心位置GPS信息 public void QueryDevInfoCenterGPS() { int nQueryType = NetSDKLib.NET_QUERY_PTZBASE_GET_CENTER_GPS; // 入参 NET_IN_PTZBASE_GET_CENTER_GPS pIn = new NET_IN_PTZBASE_GET_CENTER_GPS(); //计算GPS信息标志位,为1 时使用dPosition中的位置信息来进行计算,为0 时使用当前云台PT位置信息计算GPS pIn.bPosEnable = 1; pIn.nChannel = channel; double[] dPosition = pIn.dPosition; /** * 云台方向信息,第一个元素为水平角度,第二个元素为垂直角度 */ dPosition[0] = 600; dPosition[1] = 319; Pointer pInBuf = new Memory(pIn.size()); ToolKits.SetStructDataToPointer(pIn, pInBuf, 0); // 出参 NET_OUT_PTZBASE_GET_CENTER_GPS pOut = new NET_OUT_PTZBASE_GET_CENTER_GPS(); Pointer pOutBuf = new Memory(pOut.size()); ToolKits.SetStructDataToPointer(pOut, pOutBuf, 0); boolean ret = netSdk.CLIENT_QueryDevInfo(loginHandle, nQueryType, pInBuf, pOutBuf, null, 3000); if (!ret) { System.err.printf("QueryDevInfoCenterGPS Failed!Last Error[0x%x]\n", netSdk.CLIENT_GetLastError()); return; } ToolKits.GetPointerDataToStruct(pOutBuf, 0, pOut); System.out.println("dLongitude:" + pOut.dLongitude); System.out.println("dLatitude:" + pOut.dLatitude); } /** * 获取镜头当前倍率下水平视场角参数 */ public void queryDevInfoPTZCurrentTFOV() { int nQueryType = NetSDKLib.NET_QUERY_PTZ_CURRENT_FOV_VALUE; // 入参 NET_IN_PTZ_CURRENT_FOV_VALUE pIn = new NET_IN_PTZ_CURRENT_FOV_VALUE(); pIn.nChannel = 0; //通道号 pIn.write(); // 出参 NET_OUT_PTZ_CURRENT_FOV_VALUE pOut = new NET_OUT_PTZ_CURRENT_FOV_VALUE(); pOut.write(); boolean ret = netSdk.CLIENT_QueryDevInfo(loginHandle, nQueryType, pIn.getPointer(), pOut.getPointer(), null, 3000); if (!ret) { System.err.printf("queryDevInfoPTZCurrentTFOV Failed!Last Error[0x%x]\n", netSdk.CLIENT_GetLastError());//参考LastError return; } pOut.read(); System.out.println("当前倍率水平视场角单位0.01度,扩大100倍表示:" + pOut.nValue); System.out.println("镜头最小水平视场角单位同nValue:" + pOut.nMinValue); System.out.println("镜头最大水平视场角单位同nValue:" + pOut.nMaxValue); } public void RunTest() { System.out.println("Run Test"); CaseMenu menu = new CaseMenu(); menu.addItem((new CaseMenu.Item(this, "QueryDevInfoHFOV", "QueryDevInfoHFOV"))); menu.addItem((new CaseMenu.Item(this, "QueryDevInfoVFOV", "QueryDevInfoVFOV"))); menu.addItem((new CaseMenu.Item(this, "QueryDevInfoCenterGPS", "QueryDevInfoCenterGPS"))); // 获取镜头当前倍率下水平视场角参数 menu.addItem((new CaseMenu.Item(this, "queryDevInfoPTZCurrentTFOV", "queryDevInfoPTZCurrentTFOV"))); menu.run(); } public static void main(String[] args) { InitTest(ipAddr, port, user, password); PTZbaseDemo scd = new PTZbaseDemo(); scd.RunTest(); LoginOut(); } }