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