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; } }