package com.doumee.core.haikang.sdk; //import com.sun.javafx.scene.paint.GradientUtils.Point; import com.sun.jna.Native; import com.sun.jna.Pointer; import com.sun.jna.Structure; import com.sun.jna.win32.StdCallLibrary; public interface HCUsbSDK extends StdCallLibrary{ HCUsbSDK INSTANCE = (HCUsbSDK) Native.loadLibrary("D:\\work\\安防平台对接\\HCUSBSDKV2.4.0.3_build20230418_win64_ZH\\library\\win64\\HCUSBSDK",HCUsbSDK.class); public static final int MAX_MANUFACTURE_LEN = 32; //制造商名称最大长度 public static final int MAX_DEVICE_NAME_LEN = 32; //设备名称最大长度 public static final int MAX_SERIAL_NUM_LEN = 48; //序列号最大长度 public static final int MAX_USB_DEV_LEN = 64; public static final int ERR_LEVEL = 1; public static final int DBG_LEVEL = 2; public static final int INF_LEVEL = 3; public static final int MAX_USERNAME_NAME = 32; //用户名最大长度 public static final int MAX_PASSWORD_LEN = 16; //密码最大长度 public static final int INVALID_USER_ID = -1; //登录返回ID,登录失败为-1,有效ID 0-128 public static final int USB_ERROR_BASE = 0; public static final int USB_SUCCESS = (HCUsbSDK.USB_ERROR_BASE + 0); public static final int USB_GET_ACTIVATE_CARD = 1004; public static final int USB_GET_CERTIFICATE_INFO = 1020; public static final int MAX_SERIAL_NUMBER_LEN = 48; public static final int MAX_PATH_LEN = 260; public static final int MAX_USERNAME_LEN = 32; public enum LOG_LEVEL_ENUM { NONE, //填补0这个位置,后面1,2,3 ENUM_ERROR_LEVEL, ENUM_DEBUG_LEVEL, ENUM_INFO_LEVEL }; public static class USB_DEVICE_INFO extends Structure { public int dwSize; //结构体大小 public int dwIndex; // 设备索引 public int dwVID; //设备VID public int dwPID; //设备PID public byte[] szManufacturer = new byte[MAX_MANUFACTURE_LEN/*32*/];//制造商(来自描述符) public byte[] szDeviceName = new byte[MAX_DEVICE_NAME_LEN/*32*/];//设备名称(来自描述符) public byte[] szSerialNumber = new byte[MAX_SERIAL_NUMBER_LEN/*48*/];//设备序列号(来自描述符) public byte byHaveAudio; // 是否具有音频 public byte iColorType; // 1.RGB路, 2.IR路 public byte[] szDevicePath = new byte[MAX_PATH_LEN]; public byte[] byRes = new byte[254]; } public static class USB_USER_LOGIN_INFO extends Structure { public int dwSize; //结构体大小 public int dwTimeout; //登录超时时间(单位:毫秒) public int dwDevIndex; //设备下标 public int dwVID; //设备VID,枚举设备时得到 public int dwPID; //设备PID,枚举设备时得到 public byte[] szUserName = new byte [MAX_USERNAME_LEN/*32*/]; //用户名,获取激活状态时无需填 public byte[] szPassword = new byte[MAX_PASSWORD_LEN/*16*/]; //密码,获取激活状态时无需填 public byte[] szSerialNumber = new byte[MAX_SERIAL_NUMBER_LEN/*48*/]; //设备序列号,枚举设备时得到 public byte byLoginMode; //0-认证登陆 1-默认账号登陆(不关心用户名密码)(权限不同,部分功能需认证登陆才支持) public byte[] byRes2 = new byte[3]; public int dwFd; //设备描述符fd (android下没有root权限登录时使用) public byte[] byRes = new byte[248]; } public static class USB_DEVICE_REG_RES extends Structure { public int dwSize; //结构体大小 public byte[] szDeviceName = new byte[MAX_DEVICE_NAME_LEN /*32*/]; //设备名称 public byte[] szSerialNumber = new byte[MAX_SERIAL_NUMBER_LEN /*48*/]; //设备序列号 public int dwSoftwareVersion; //软件版本号,高16位是主版本,低16位是次版本 public short wYear; public byte byMonth; public byte byDay; public byte byRetryLoginTimes; //剩余可尝试登陆的次数 public byte[] byRes1 = new byte[3]; //保留 public int dwSurplusLockTime; //剩余时间,单位秒 用户锁定时,此参数有效 public byte[] byRes = new byte[256]; } public static class USB_ACTIVATE_CARD_RES extends Structure { public int dwSize; public byte byCardType; // 卡类型(0-TypeA m1卡,1-TypeA cpu卡,2-TypeB,3-125kHz Id卡,4-Felica Card 5-Desfire Card) public byte bySerialLen; //卡物理序列号字节长度 public byte[] bySerial = new byte[10]; //卡物理序列号 public byte bySelectVerifyLen; //选择确认长度 public byte[] bySelectVerify = new byte[3]; //选择确认(3字节) public byte[] byRes = new byte[12]; } public static class USB_WAIT_SECOND extends Structure { public int dwSize; //结构体大小 public byte byWait; //1Byte操作等待时间(0-一直执行直到有卡响应,其他对应1S单位) public byte[] byRes = new byte[27]; }//32字节 public static class USB_CONFIG_INPUT_INFO extends Structure { public Pointer lpCondBuffer; //指向条件缓冲区 public int dwCondBufferSize; //条件缓冲区大小 public Pointer lpInBuffer; //指向输出缓冲区 public int dwInBufferSize; //输入缓冲区大小 public byte[] byRes = new byte[48]; }//64字节 public static class USB_CONFIG_OUTPUT_INFO extends Structure { public Pointer lpOutBuffer; //指向输出缓冲区 public int dwOutBufferSize; //输出缓冲区大小 public byte[] byRes = new byte[56]; }//64字节 public static class USB_CERTIFICATE_INFO extends Structure { public int dwSize; //结构体大小 public short wWorldInfoSize; //文字信息长度 public short wPicInfoSize; //相片信息长度 public short wFingerPrintInfoSize; //指纹信息长度 public byte byCertificateType; //证件类型:0-身份证,1-中国绿卡 public byte byRes2; public byte[] byWordInfo = new byte[256]; //文字信息 public byte[] byPicInfo = new byte[1024]; //相片信息 public byte[] byFingerPrintInfo = new byte[1024]; //指纹信息 public byte[] byRes = new byte[40]; } public static class OUT_USB_DEVICE_INFO extends Structure { public USB_DEVICE_INFO[] struDeviceArr; public void init(int devCount) { struDeviceArr = new USB_DEVICE_INFO[devCount]; } } boolean USB_Init(); boolean USB_Cleanup(); int USB_GetLastError(); int USB_GetDeviceCount(); //新增获取设备列表信息接口,替换原有回调的方式去获取设备信息 boolean USB_EnumDevices(int dwCount, Pointer pDevInfoList); Pointer USB_GetErrorMsg(int dwErrorCode); boolean USB_SetLogToFile(int dwLogLevel, String strLogDir, boolean bAutoDel); int USB_GetSDKVersion(); int USB_Login(USB_USER_LOGIN_INFO pUsbLoginInfo, USB_DEVICE_REG_RES pDevRegRes); boolean USB_Logout(int lUserID); boolean USB_GetDeviceConfig(int lUserID, int dwCommand, USB_CONFIG_INPUT_INFO InputInfo, USB_CONFIG_OUTPUT_INFO OutputInfo); }