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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
package com.netsdk.demo.customize;
 
import com.netsdk.lib.NetSDKLib.SdkStructure;
import com.netsdk.lib.SDKCallback;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
 
public interface VPRLib extends Library {
    
    VPRLib VPR_INSTANCE = (VPRLib)Native.load("D:\\Work\\Demo\\JAVA\\JNADemo\\libs\\win32\\VPR.dll", VPRLib.class);
    VPRLib VPR_config = (VPRLib)Native.load("D:\\Work\\Demo\\JAVA\\JNADemo\\libs\\win32\\VideoCard_DAHUA.dll", VPRLib.class);
    //车牌识别接口错误码
    public static final int        RET_OK                            =0;                        // 操作成功
    public static final int        ERROR_DEVICE_UNRESPONSIVE        =-100;                    // 设备无响应
    public static final int        ERROR_INPARAM                    =-1000;                    // 传入参数出错
    public static final int        ERROR_DEVICE_OCCUPIED            =-1001;                    // 设备被占用
    public static final int        ERROR_OPEN_FAILURE                =-1002;                    // 打开失败
    public static final int        ERROR_SETSHOW_WIN                =-1003;                    // 设置显示错误(WIN)
    public static final int        ERROR_SETSHOW_LINUX                =-1004;                    // 设置显示错误(LINUX)
    public static final int        ERROR_STOPSHOW                    =-1005;                    // 停止显示错误
    public static final int        ERROR_GETIMAGE                    =-1006;                    // 获取图片错误
    public static final int        ERROR_GETIMAGE_FILE                =-1007;                    // 获取图片文件错误
    public static final int        ERROR_OTHER                        =-2000;                    // 其它错误    
    
    public static class T_VLPINFO extends SdkStructure
    {
        public int                    vlpInfoSize;                                // 识别结构体的大小
        public byte[]                vlpTime=new byte[20];                        // 识别时间,格式 “yyyyMMddHHmmsszzz”
        public int                    vlpCarClass;                                // 车型
        public byte[]                vlpColor=new byte[2];                        // 车牌颜色(数字编码)"00" 蓝色、 "01" 黄色、 "02" 黑色、 "03" 白色,“04”渐变绿色,“05”黄绿双拼色,“06”蓝白渐变色
        public byte[]                vlpText=new byte[16];                        // 车牌文字, GBK编码
        public int                    vlpReliability;                                // 识别车牌可信度(采用四位表示 9999 表示为 99.99%)
        public int[]                imageLength=new int[3];                        // 识别图片长度:[0]=场景图长度,[1]=车牌图长度,[2]=二值化图长度
        public Pointer[]            image=new Pointer[3];                        // 识别图片:[0]=场景图,[1]=车牌图,[2]=二值化图
        
        public T_VLPINFO() {
            this.vlpInfoSize = this.size();
        }
        
         @Override
        protected int getNativeAlignment(Class<?> type, Object value, boolean isFirstElement) {
             int alignment = super.getNativeAlignment(type, value, isFirstElement);
             return Math.min(1, alignment);
          }
    }
    
    
    /*******************************车牌识别***********************************/
    // 设置识别结果回调定义 
    public interface CBFun_GetRegResult extends SDKCallback {
        public void invoke(int nHandle, T_VLPINFO pVlpResult, Pointer pUser);
    }
    
    // 设备状态回调定义
    public interface CBFun_GetDevStatus extends SDKCallback {
        public void invoke(int nHandle, int nStatus, Pointer pUser);
    }    
    //资源初始化
    public     int  VLPR_Init();
    //释放资源
    public     int  VLPR_Deinit();
    //连接设备
    public     int  VLPR_Login(int nType,String sParas);
    //断开设备连接
    public     int  VLPR_Logout(int nHandle);
    //设置识别结果回调
    public     int  VLPR_SetResultCallBack(int nHandle,CBFun_GetRegResult pFunc,Pointer pUser);
    //设置设备状态回调
    public     int  VLPR_SetStatusCallBack(int nHandle,int nTimeInvl,CBFun_GetDevStatus pFunc,Pointer pUser);
    //手动触发抓拍
    public     int  VLPR_ManualSnap(int nhandle);
    //获取设备状态
    public     int  VLPR_GetStatus(int nHandle, IntByReference pStatusCode);
    //获取错误码详细描述
    public     int  VLPR_GetStatusMsg(int nStatusCode, Pointer sStatusMsg, int nStatusMsgLen);
    //获取设备版本信息
    public     int  VLPR_GetHWVersion(int nHandle, Pointer sHWVersion, int nHWVerMaxLen, Pointer sAPIVersion, int nAPIVerMaxLen);
    
    
    
    /*******************************高清视频流接口***********************************/
    //初始化视频流
    public int  VC_Init(int nType, String sParas);
    //释放资源
    public int VC_Deinit(int nHandle);
 
    public int VC_StartDisplay(int nHandle, int nWidth, int nHeight, int nWinId);
 
    public int VC_StopDisplay(int nHandle);
 
    public int VC_GetImage(int nHandle, int nFormat, Pointer sImage, IntByReference nLength);
 
    public int VC_GetImageFile(int nHandle, int nFormat, String sFilleName);
 
    public int VC_TVPDisplay(int nHandle, int nRow, int nCol,String sText);
    
    public int VC_TVPClear(int nHandle, int nRow, int nCol,  int nLengt);
 
    public int VC_SyncTime(int nHandle, String sSysTime);
 
    public int VC_ShowTime(int nHandle, int nStyle);
 
    public int VC_GetStatus(int nHandle, IntByReference pStatusCode);
 
    public int VC_GetStatusMsg(int nStatusCode, Pointer sStatusMsg, int nStatusMsgLen);
 
    public int VC_GetHWVersion( Pointer sDevVersion, int nDevVerLen, Pointer sAPIVersion, int nAPIVerLen);
    
}
class test implements VPRLib{
 
    @Override
    public int VLPR_Init() {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VLPR_Deinit() {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VLPR_Login(int nType, String sParas) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VLPR_Logout(int nHandle) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VLPR_SetResultCallBack(int nHandle, CBFun_GetRegResult pFunc,
            Pointer pUser) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VLPR_SetStatusCallBack(int nHandle, int nTimeInvl,
            CBFun_GetDevStatus pFunc, Pointer pUser) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VLPR_ManualSnap(int nhandle) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VLPR_GetStatus(int nHandle, IntByReference pStatusCode) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VLPR_GetStatusMsg(int nStatusCode, Pointer sStatusMsg,
            int nStatusMsgLen) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VLPR_GetHWVersion(int nHandle, Pointer sHWVersion,
            int nHWVerMaxLen, Pointer sAPIVersion, int nAPIVerMaxLen) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VC_Init(int nType, String sParas) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VC_Deinit(int nHandle) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VC_StartDisplay(int nHandle, int nWidth, int nHeight, int nWinId) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VC_StopDisplay(int nHandle) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VC_GetImage(int nHandle, int nFormat, Pointer sImage,
            IntByReference nLength) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VC_GetImageFile(int nHandle, int nFormat, String sFilleName) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VC_TVPDisplay(int nHandle, int nRow, int nCol, String sText) {
        VPRLib vprlib     = VPRLib.VPR_config;
        System.out.println(sText);
        sText+="\0";
        System.out.println(sText);
        int lo=vprlib.VC_TVPDisplay(nHandle, nRow, nCol, sText);
        return lo;
    }
 
    @Override
    public int VC_TVPClear(int nHandle, int nRow, int nCol, int nLengt) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VC_SyncTime(int nHandle, String sSysTime) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VC_ShowTime(int nHandle, int nStyle) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VC_GetStatus(int nHandle, IntByReference pStatusCode) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VC_GetStatusMsg(int nStatusCode, Pointer sStatusMsg,
            int nStatusMsgLen) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int VC_GetHWVersion(Pointer sDevVersion, int nDevVerLen,
            Pointer sAPIVersion, int nAPIVerLen) {
        // TODO Auto-generated method stub
        return 0;
    }
    
}