package com.doumee.core.haikang.sdk; import com.sun.jna.Pointer; public class HIKCSDemo { static HCUsbSDK hCUsbSDK = HCUsbSDK.INSTANCE; static int iHandle = -1; public static void main(String[] args) throws InterruptedException{ HIKCSDemo csdemo = new HIKCSDemo(); hCUsbSDK.USB_Init(); hCUsbSDK.USB_SetLogToFile(3, ".\\", false); System.out.println(System.getProperty("user.dir")); csdemo.getVersion(); //获取版本 csdemo.EnumDevices(); //枚举设备 csdemo.Login(); csdemo.ActivateCard(); while(true); } public void getVersion(){ int iVersion = hCUsbSDK.USB_GetSDKVersion(); String v1 = Integer.toString((iVersion>>24) & 0xff); String v2 = Integer.toString((iVersion>>16) & 0xff); String v3 = Integer.toString((iVersion>>8) & 0xff); String v4 = Integer.toString((iVersion) & 0xff); System.out.println("USB_GetSDKVersion succeed, version:" + v1 + "." + v2 + "." + v3 + "." + v4); } public void EnumDevices(){ int iNum = hCUsbSDK.USB_GetDeviceCount(); System.out.println("iNum:" + iNum); if(iNum < 1){ System.out.println("无设备接入"); return ; } //根据获取到的设备数量,申请对应大小的设备信息结构体数组 //对结构体数组中的每个成员进行初始化 HCUsbSDK.OUT_USB_DEVICE_INFO struOutDevice = new HCUsbSDK.OUT_USB_DEVICE_INFO(); struOutDevice.init(iNum); struOutDevice.write(); Pointer pStruDeviceInfo = struOutDevice.getPointer(); if(hCUsbSDK.USB_EnumDevices(iNum, pStruDeviceInfo)) { struOutDevice.read(); while((--iNum) >= 0) { String s1, s2, s3, s4, s5, s6; s1 = String.valueOf(struOutDevice.struDeviceArr[iNum].dwIndex); s2 = String.valueOf(struOutDevice.struDeviceArr[iNum].dwVID); s3 = String.valueOf(struOutDevice.struDeviceArr[iNum].dwPID); s4 = new String(struOutDevice.struDeviceArr[iNum].szManufacturer).trim(); s5 = new String(struOutDevice.struDeviceArr[iNum].szDeviceName).trim(); s6 = new String(struOutDevice.struDeviceArr[iNum].szSerialNumber).trim(); System.out.println("device:" + s1 + ",dwVID:" +s2 + ",dwPID:" + s3 + ",szManufacturer:" + s4 + ",szDeviceName:" +s5 + ",szSerialNumber:" + s6); } System.out.println("USB_EnumDevices succeed"); } else { System.out.println("USB_EnumDevices failed, error:" + hCUsbSDK.USB_GetLastError()); } } public void Login(){ HCUsbSDK.USB_DEVICE_REG_RES struDeviceReg = new HCUsbSDK.USB_DEVICE_REG_RES(); struDeviceReg.dwSize = struDeviceReg.size(); struDeviceReg.write(); HCUsbSDK.USB_USER_LOGIN_INFO struUserLoginInfo = new HCUsbSDK.USB_USER_LOGIN_INFO(); struUserLoginInfo.dwSize = struUserLoginInfo.size(); struUserLoginInfo.dwTimeout = 5000; struUserLoginInfo.dwDevIndex = 1; struUserLoginInfo.dwVID = 1155; struUserLoginInfo.dwPID = 22352; System.arraycopy("813717552".getBytes(), 0, struUserLoginInfo.szSerialNumber, 0, "813717552".length()); System.arraycopy("admin".getBytes(), 0, struUserLoginInfo.szUserName, 0, "admin".length()); System.arraycopy("12345".getBytes(), 0, struUserLoginInfo.szPassword, 0, "12345".length()); struUserLoginInfo.write(); iHandle = hCUsbSDK.USB_Login(struUserLoginInfo, struDeviceReg); System.out.println("iHandle:" + iHandle); if(iHandle < 0){ System.out.println("USB_Login failed, error:" + hCUsbSDK.USB_GetLastError()); } else{ System.out.println("USB_Login succeed, lHandle:" + iHandle); } } public void ActivateCard(){ HCUsbSDK.USB_WAIT_SECOND StruWaitSecond = new HCUsbSDK.USB_WAIT_SECOND(); StruWaitSecond.dwSize = StruWaitSecond.size(); StruWaitSecond.byWait = 5; HCUsbSDK.USB_ACTIVATE_CARD_RES StruActivateRes = new HCUsbSDK.USB_ACTIVATE_CARD_RES(); StruActivateRes.dwSize = StruActivateRes.size(); HCUsbSDK.USB_CONFIG_INPUT_INFO StruInput = new HCUsbSDK.USB_CONFIG_INPUT_INFO(); StruInput.dwInBufferSize = StruWaitSecond.size(); Pointer ptrwaitSecond = StruWaitSecond.getPointer(); StruWaitSecond.write(); StruInput.lpInBuffer = ptrwaitSecond; HCUsbSDK.USB_CONFIG_OUTPUT_INFO StruOutput = new HCUsbSDK.USB_CONFIG_OUTPUT_INFO(); StruOutput.dwOutBufferSize = StruActivateRes.size(); Pointer ptrActivateRes = StruActivateRes.getPointer(); StruActivateRes.write(); StruOutput.lpOutBuffer = ptrActivateRes; if(!hCUsbSDK.USB_GetDeviceConfig(iHandle, HCUsbSDK.USB_GET_ACTIVATE_CARD, StruInput, StruOutput)) { System.out.println("USB_GET_ACTIVATE_CARD failed, error:" + hCUsbSDK.USB_GetLastError()); } else{ StruActivateRes.read(); System.out.println("byCardType:" + StruActivateRes.byCardType + ",bySerialLen:" + StruActivateRes.bySerialLen); System.out.println("USB_GET_ACTIVATE_CARD succeed"); String SerialNumber = ""; //返回的bySerial数组需要反序之后,将十六进制转换成十进制就是卡号 for(int i = 0; i < StruActivateRes.bySerialLen; i++) { String hex = Integer.toHexString(StruActivateRes.bySerial[StruActivateRes.bySerialLen-i-1] & 0xff); if(hex.length() == 1) { hex += '0'; } SerialNumber += hex.toUpperCase(); } System.out.println("SerialNumber:0x" + SerialNumber); System.out.println("cardNo:" + Long.parseLong(SerialNumber, 16)); } } //class 结束 }