1
zhanghua
2024-09-26 c775c6953d9759e70f08acbfa8f6d7490aaae3d1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
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();
    }
 
}