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 结束
|
}
|