海康设备xml透传以及DS

您所在的位置:网站首页 海康sdk错误码41 海康设备xml透传以及DS

海康设备xml透传以及DS

2023-08-11 09:54| 来源: 网络整理| 查看: 265

对接海康5604设备,设置温度上限及下限,设备较多通过demo手动透传不可取,故采用代码方式进行透传. (代码记录,方便后续开发找方便)

public void setThermal(Map params){ Object ids = params.get("ids"); //设备id集 if (ComnUtil.isEmpty(ids)){ throw new ComnException(ComnStatusCode.ERROR_PARAM, "请选择设备!"); } Object highestThermal = params.get("highestThermal"); //最高温度上限 Object lowestThermal = params.get("lowestThermal"); //最低温度上限 String[] split = ids.toString().split(","); for (String id : split) { Equipment equipment = equipmentMapper.selectById(Long.parseLong(id)); String ip = equipment.getIp(); String port = equipment.getPort(); String password = equipment.getPassword(); String brand = equipment.getBrand(); int loginRes = HCNetSDKApiHelper.login(ip, Integer.parseInt(port), "admin", password, HCNetSDKApiHelper.DEVICE_CATCH); //登录 HCNetSDK.NET_DVR_STRING_POINTER stringRequest = new HCNetSDK.NET_DVR_STRING_POINTER(); stringRequest.read(); stringRequest.byString = SEND_INFOMACTION_URL.getBytes(); stringRequest.write(); HCNetSDK.NET_DVR_STRING_POINTER stringInBuffer = new HCNetSDK.NET_DVR_STRING_POINTER(); stringInBuffer.read(); HashMap AcsCfg = new HashMap(); HashMap para = new HashMap(); para.put("highestThermalThreshold",Float.parseFloat(highestThermal.toString())); para.put("lowestThermalThreshold",Float.parseFloat(lowestThermal.toString())); AcsCfg.put("AcsCfg",para); String strInbuffer = GsonHelper.obj2Json(AcsCfg); // 请求参数json stringInBuffer.byString = strInbuffer.getBytes(); stringInBuffer.write(); HCNetSDK.NET_DVR_XML_CONFIG_INPUT struXMLInput = new HCNetSDK.NET_DVR_XML_CONFIG_INPUT(); struXMLInput.read(); struXMLInput.dwSize = struXMLInput.size(); struXMLInput.lpRequestUrl = stringRequest.getPointer(); struXMLInput.dwRequestUrlLen = stringRequest.byString.length; struXMLInput.lpInBuffer = stringInBuffer.getPointer(); struXMLInput.dwInBufferSize = stringInBuffer.byString.length; struXMLInput.write(); HCNetSDK.NET_DVR_STRING_POINTER stringXMLOut = new HCNetSDK.NET_DVR_STRING_POINTER(); stringXMLOut.read(); HCNetSDK.NET_DVR_STRING_POINTER struXMLStatus = new HCNetSDK.NET_DVR_STRING_POINTER(); struXMLStatus.read(); HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT struXMLOutput = new HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT(); stringInBuffer.read(); struXMLOutput.dwSize = struXMLOutput.size(); struXMLOutput.lpOutBuffer = stringXMLOut.getPointer(); struXMLOutput.dwOutBufferSize = stringXMLOut.size(); struXMLOutput.lpStatusBuffer = struXMLStatus.getPointer(); struXMLOutput.dwStatusSize = struXMLStatus.size(); stringInBuffer.write(); boolean setConfig = sdkInstance.NET_DVR_STDXMLConfig(loginRes, struXMLInput, struXMLOutput); if (!setConfig) { log.error(String.format("[%s]下发温度设置[%s]失败:%d", ip, strInbuffer, sdkInstance.NET_DVR_GetLastError())); } else { stringXMLOut.read(); String strOutJson = new String(stringXMLOut.byString).trim(); struXMLStatus.read(); System.out.println(strOutJson); } HCNetSDKApiHelper.logout(ip); } }

针对DS-K1F100-D8E 设备下发卡 ,读卡 的开发主要借鉴了别人代码,从中找到部分错误及代码不全,针对这些重新优化

package com.keyou.blzx.controller; import com.keyou.blzx.controller.hksdk.callback.HCUsbSDK; import com.sun.jna.NativeLong; import com.sun.jna.Pointer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Map; /** * @author *** * @description 下发卡 读卡 * @date 2021-06-18 14:59 */ public class CardMakeController extends BaseController { private static final Log logger = LogFactory.getLog(CardMakeController.class); static HCUsbSDK hcusbsdk = HCUsbSDK.INSTANCE; static fDEVInfoCallBack fdeviceCallBack = null; static HCUsbSDK.USB_SDK_DEVICE_INFO StruDevceInfo = new HCUsbSDK.USB_SDK_DEVICE_INFO(); static boolean bDevCallBack = false; public static void main(String[] args) throws UnsupportedEncodingException { //发卡 //make(); //读卡 NativeLong login = login(); String readKh = active(login ); valid(login ); String card = read(login); System.out.println(card); } /** * 枚举设备 * */ public static class fDEVInfoCallBack implements HCUsbSDK.fEnumDeviceCallBack { public void invoke(HCUsbSDK.USB_SDK_DEVICE_INFO pDevceInfo, Pointer pUser) { if ((pDevceInfo.szDeviceName[0] == 'D') && (pDevceInfo.szDeviceName[1] == 'S') && (pDevceInfo.szDeviceName[2] == '-') && (pDevceInfo.szDeviceName[3] == 'K')) { StruDevceInfo = pDevceInfo; String strName = new String(pDevceInfo.szDeviceName); logger.info("枚举到的设备信息:" + strName); bDevCallBack = true; } } } private static NativeLong login() { int iError = 0; boolean bInit = hcusbsdk.USB_SDK_Init(); if (bInit) { hcusbsdk.USB_SDK_SetLogToFile(3, "C:/USBSDKLog", false); } if (fdeviceCallBack == null) { fdeviceCallBack = new fDEVInfoCallBack(); } boolean bEnum = hcusbsdk.USB_SDK_EnumDevice(fdeviceCallBack, null); if (!bEnum) { iError = hcusbsdk.USB_SDK_GetLastError(); logger.error("枚举获取设备失败,原因: " + iError); return null; } HCUsbSDK.USB_SDK_USER_LOGIN_INFO struUserLoginInfo = new HCUsbSDK.USB_SDK_USER_LOGIN_INFO(); struUserLoginInfo.dwSize = struUserLoginInfo.size(); struUserLoginInfo.dwTimeout = 5000; while (true) { if (bDevCallBack) { struUserLoginInfo.dwVID = StruDevceInfo.dwVID; struUserLoginInfo.dwPID = StruDevceInfo.dwPID; struUserLoginInfo.szUserName = "admin".getBytes(); struUserLoginInfo.szPassword = "12345".getBytes(); struUserLoginInfo.szSerialNumber = StruDevceInfo.szSerialNumber; break; } } struUserLoginInfo.write(); HCUsbSDK.USB_SDK_DEVICE_REG_RES struRegRes = new HCUsbSDK.USB_SDK_DEVICE_REG_RES(); struRegRes.dwSize = struRegRes.size(); struRegRes.write(); NativeLong lUserID = hcusbsdk.USB_SDK_Login(struUserLoginInfo, struRegRes);// 登录设备 if (lUserID.intValue() == -1) { iError = hcusbsdk.USB_SDK_GetLastError(); logger.error("设备登陆失败,原因: " + iError); hcusbsdk.USB_SDK_Logout(lUserID); } else { logger.info("登陆成功,lUserID: " + lUserID); } return lUserID; } /** * 激活卡 * */ private static String active(NativeLong lUserID) { int iError = 0; HCUsbSDK.USB_SDK_WAIT_SECOND struWaitSecond = new HCUsbSDK.USB_SDK_WAIT_SECOND(); struWaitSecond.dwSize = struWaitSecond.size(); struWaitSecond.byWait = 0; struWaitSecond.write(); HCUsbSDK.USB_SDK_ACTIVATE_CARD_RES struActivate = new HCUsbSDK.USB_SDK_ACTIVATE_CARD_RES(); struActivate.dwSize = struActivate.size(); struActivate.byCardType = 1; struActivate.write(); HCUsbSDK.USB_CONFIG_INPUT_INFO struInput = new HCUsbSDK.USB_CONFIG_INPUT_INFO(); struInput.lpInBuffer = struWaitSecond.getPointer(); struInput.dwInBufferSize = struWaitSecond.size(); struInput.write(); HCUsbSDK.USB_CONFIG_OUTPUT_INFO struOutput = new HCUsbSDK.USB_CONFIG_OUTPUT_INFO(); struOutput.lpOutBuffer = struActivate.getPointer(); struOutput.dwOutBufferSize = struActivate.size(); struOutput.write(); boolean bRet = hcusbsdk.USB_SDK_GetDeviceConfig(lUserID, HCUsbSDK.USB_SDK_GET_ACTIVATE_CARD, struInput, struOutput); if (!bRet) { iError = hcusbsdk.USB_SDK_GetLastError(); logger.error("激活失败,原因: " + iError); return ""; } struOutput.read(); struActivate.read(); String strSerial = ""; for (int i = 0; i < struActivate.bySerialLen; i++) { int iSerial = struActivate.bySerial[i] & 0xff; strSerial = strSerial + new String(Integer.toHexString(iSerial)) + " "; } logger.info("激活成功,卡号:" + strSerial); return strSerial; } /** * (M1卡) 验证扇区密码 * */ private static void valid(NativeLong lUserID) { int iError = 0; HCUsbSDK.USB_SDK_M1_PWD_VERIFY struWaitSecond = new HCUsbSDK.USB_SDK_M1_PWD_VERIFY(); struWaitSecond.dwSize = struWaitSecond.size(); struWaitSecond.bySectionNum = hexToByte("1"); struWaitSecond.byPasswordType = hexToByte("0"); struWaitSecond.byPassword = hexToByteArray("FFFFFFFFFFFF"); struWaitSecond.write(); HCUsbSDK.USB_CONFIG_INPUT_INFO struInput = new HCUsbSDK.USB_CONFIG_INPUT_INFO(); struInput.lpInBuffer = struWaitSecond.getPointer(); struInput.dwInBufferSize = struWaitSecond.size(); struInput.write(); HCUsbSDK.USB_CONFIG_OUTPUT_INFO struOutput = new HCUsbSDK.USB_CONFIG_OUTPUT_INFO(); struOutput.lpOutBuffer = struWaitSecond.getPointer(); struOutput.dwOutBufferSize = struWaitSecond.size(); struOutput.write(); boolean bRet = hcusbsdk.USB_SDK_SetDeviceConfig(lUserID, HCUsbSDK.USB_SDK_SET_M1_PWD_VERIFY, struInput, struOutput); if (!bRet) { iError = hcusbsdk.USB_SDK_GetLastError(); logger.error("设备验证失败原因: " + iError); return; } logger.info("验证成功"); } /** * 写卡操作 * @param lUserID 登录结果 * @param cardNo 卡号 * */ private static void write(NativeLong lUserID, String cardNo) { int iError = 0; while (cardNo.length() < 32) { cardNo = "0" + cardNo; } if (cardNo.length() > 32) { cardNo = cardNo.substring(0, 16); } HCUsbSDK.USB_SDK_M1_BLOCK_WRITE_DATA struWaitSecond = new HCUsbSDK.USB_SDK_M1_BLOCK_WRITE_DATA(); struWaitSecond.dwSize = struWaitSecond.size(); // struWaitSecond.wAddr = hexToByteArray("4"); struWaitSecond.wAddr = 4; struWaitSecond.byDataLen = 16; struWaitSecond.byData = hexToByteArray(cardNo); struWaitSecond.write(); HCUsbSDK.USB_CONFIG_INPUT_INFO struInput = new HCUsbSDK.USB_CONFIG_INPUT_INFO(); struInput.lpInBuffer = struWaitSecond.getPointer(); struInput.dwInBufferSize = struWaitSecond.size(); struInput.write(); HCUsbSDK.USB_CONFIG_OUTPUT_INFO struOutput = new HCUsbSDK.USB_CONFIG_OUTPUT_INFO(); struOutput.lpOutBuffer = struWaitSecond.getPointer(); struOutput.dwOutBufferSize = struWaitSecond.size(); struOutput.write(); boolean bRet = hcusbsdk.USB_SDK_SetDeviceConfig(lUserID, HCUsbSDK.USB_SDK_SET_M1_WRITE_BLOCK, struInput, struOutput); if (!bRet) { iError = hcusbsdk.USB_SDK_GetLastError(); logger.error("写卡失败,原因: " + iError); makeDevice(lUserID, "3", "3", "2", "3"); //写卡错误是快鸣2下,闪烁2下红灯 return; } makeDevice(lUserID, "2", "1", "3", "2"); //写卡成功是慢鸣1下,闪烁2下蓝灯 logger.info("写卡成功,内容为" + cardNo); } /** * 控制蜂鸣器及显示灯 * @param lUserID 登录 * @param buBeepType 蜂鸣类型 0无效,1连续,2慢鸣,3快鸣,4停止 * @param buBeepCount 鸣叫次数, (只对慢鸣、快鸣有效,且不能为0) * @param byFlickerType 闪烁类型 0无效,1连续,2错误,3正确,4停止 * @param byFlickerCount 闪烁次数(只对错误、正确有效,且不能为0) * */ public static Boolean makeDevice(NativeLong lUserID, String buBeepType, String buBeepCount, String byFlickerType, String byFlickerCount){ HCUsbSDK.USB_SDK_BEEP_AND_FLICKER fukcjer = new HCUsbSDK.USB_SDK_BEEP_AND_FLICKER(); fukcjer.dwSize = fukcjer.size(); fukcjer.byBeepType = hexToByte(buBeepType); fukcjer.byBeepCount = hexToByte(buBeepCount); fukcjer.byFlickerType = hexToByte(byFlickerType); fukcjer.byFlickerCount = hexToByte(byFlickerCount); fukcjer.write(); HCUsbSDK.USB_CONFIG_INPUT_INFO pInputInfo = new HCUsbSDK.USB_CONFIG_INPUT_INFO(); pInputInfo.lpInBuffer = fukcjer.getPointer(); pInputInfo.dwInBufferSize = fukcjer.size(); pInputInfo.write(); HCUsbSDK.USB_CONFIG_OUTPUT_INFO pOutInfo = new HCUsbSDK.USB_CONFIG_OUTPUT_INFO(); pOutInfo.dwOutBufferSize = fukcjer.size(); pOutInfo.write(); Boolean bb =hcusbsdk.USB_SDK_SetDeviceConfig(lUserID, HCUsbSDK.USB_SDK_SET_BEEP_AND_FLICKER,pInputInfo,pOutInfo); return bb; } public static byte[] hexToByteArray(String inHex) { int hexlen = inHex.length(); byte[] result; if (hexlen % 2 == 1) { // 奇数 hexlen++; result = new byte[(hexlen / 2)]; inHex = "0" + inHex; } else { // 偶数 result = new byte[(hexlen / 2)]; } int j = 0; for (int i = 0; i < hexlen; i += 2) { result[j] = hexToByte(inHex.substring(i, i + 2)); j++; } return result; } public static byte hexToByte(String inHex) { return (byte)Integer.parseInt(inHex, 16); } public static String make(){ Map map = new HashMap(); int card = 10000; String cardnum = "10000"; NativeLong lUserID = login(); try { String readKh = active(lUserID); valid(lUserID); String cardNo = card+ String.valueOf(cardnum); write(lUserID, Long.toHexString(Long.valueOf(cardNo))); } catch (Exception e) { e.printStackTrace(); }finally { //退出登录 hcusbsdk.USB_SDK_Logout(lUserID); } return ""; } private static String read(NativeLong lUserID) { int iError = 0; HCUsbSDK.USB_SDK_M1_BLOCK_ADDR struWaitSecond = new HCUsbSDK.USB_SDK_M1_BLOCK_ADDR(); struWaitSecond.dwSize = struWaitSecond.size(); struWaitSecond.wAddr = 4; struWaitSecond.write(); HCUsbSDK.USB_SDK_M1_BLOCK_DATA struOut = new HCUsbSDK.USB_SDK_M1_BLOCK_DATA(); struOut.dwSize = struOut.size(); struOut.write(); HCUsbSDK.USB_CONFIG_INPUT_INFO struInput = new HCUsbSDK.USB_CONFIG_INPUT_INFO(); struInput.lpInBuffer = struWaitSecond.getPointer(); struInput.dwInBufferSize = struWaitSecond.size(); struInput.write(); HCUsbSDK.USB_CONFIG_OUTPUT_INFO struOutput = new HCUsbSDK.USB_CONFIG_OUTPUT_INFO(); struOutput.lpOutBuffer = struOut.getPointer(); struOutput.dwOutBufferSize = struOut.size(); struOutput.write(); boolean bRet = hcusbsdk.USB_SDK_SetDeviceConfig(lUserID, HCUsbSDK.USB_SDK_GET_M1_READ_BLOCK, struInput, struOutput); if (!bRet) { iError = hcusbsdk.USB_SDK_GetLastError(); logger.error("读卡失败,原因为" + iError); makeDevice(lUserID, "3", "3", "2", "3"); return ""; } struOutput.read(); struOut.read(); String strSerial = ""; strSerial = bytes2hexStr(struOut.byData); makeDevice(lUserID, "2", "1", "3", "2"); return String.valueOf(Long.parseLong(strSerial, 16)); } private static final char[] HEX_CHARS = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; /* * byte[]数组转十六进制 */ public static String bytes2hexStr(byte[] bytes) { int len = bytes.length; if (len == 0) { return null; } char[] cbuf = new char[len * 2]; for (int i = 0; i < len; i++) { int x = i * 2; cbuf[x] = HEX_CHARS[(bytes[i] >>> 4) & 0xf]; cbuf[x + 1] = HEX_CHARS[bytes[i] & 0xf]; } return new String(cbuf); } }

具体HCUsbSDK如下:

/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.keyou.blzx.controller.hksdk.callback; import com.sun.jna.Native; import com.sun.jna.NativeLong; 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("F:\\hu\\hik\\demo\\lib\\dll\\HCUsbSDK\\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_USERNAME_LEN = 32; public static final int MAX_PASSWORD_LEN = 16; public static final int USB_SDK_GET_ACTIVATE_CARD = 0x0104; //激活卡 public static final int USB_SDK_GET_CERTIFICATE_INFO = 1000; //获取身份证信息 public static final int USB_SDK_SET_BEEP_AND_FLICKER = 0x0100; public static final int USB_SDK_SET_M1_WRITE_BLOCK = 0x0108; public static final int USB_SDK_SET_M1_PWD_VERIFY = 0x0106; public static final int USB_SDK_GET_M1_READ_BLOCK = 0x0107; public static class USB_SDK_DEVICE_INFO extends Structure{ public int dwSize; //结构体大小 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_NUM_LEN/*48*/];//设备序列号(来自描述符) public byte [] byRes = new byte[68]; } public static class USB_SDK_USER_LOGIN_INFO extends Structure{ public int dwSize; //结构体大小 public int dwTimeout; //登录超时时间(单位:毫秒) 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_NUM_LEN/*48*/]; //设备序列号,枚举设备时得到 public byte[] byRes = new byte[80]; } public static class USB_SDK_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_NUM_LEN /*48*/]; //设备序列号 public int dwSoftwareVersion; //软件版本号,高16位是主版本,低16位是次版本 public byte[] byRes = new byte[40]; } 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]; } public static class USB_CONFIG_OUTPUT_INFO extends Structure{ public Pointer lpOutBuffer; //指向输出缓冲区 public int dwOutBufferSize; //输出缓冲区大小 public byte[] byRes = new byte[56]; } public static class USB_SDK_WAIT_SECOND extends Structure{ public int dwSize; //结构体大小 public byte byWait; // 1Byte操作等待时间(0-一直执行直到有卡响应,其他对应1S单位) public byte[] byRes = new byte[27]; } public static class USB_SDK_ACTIVATE_CARD_RES extends Structure{ public int dwSize; public byte byCardType;// 卡类型(0-TypeA m1卡,1-TypeA cpu卡,2-TypeB,3-125kHz Id卡) 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_SDK_M1_BLOCK_WRITE_DATA extends Structure{ public int dwSize; public short wAddr; // public byte[] wAddr = new byte[8]; public byte byDataLen; public byte byRes1; public byte[] byData = new byte[16]; public byte[] byRes = new byte[8]; } public static class USB_SDK_CERTIFICATE_INFO extends Structure{ public int dwSize; //结构体大小 public short wWordInfoSize; //文字信息长度 public short wPicInfoSize; //相片信息长度 public short wFingerPrintInfoSize; //指纹信息长度 public byte byCertificateType; //证件类型:0-身份证,1-中国绿卡 public byte byRes2; // public byte [] byWordInfo =new byte[256]; public USB_WORD_INFORMATION byWordInfo; //文字信息 public byte [] byPicInfo = new byte[1024]; //相片信息 public byte [] byFingerPrintInfo = new byte[1024]; //指纹信息 public byte [] byRes = new byte[40]; // } public static class USB_WORD_INFORMATION extends Structure{ public byte[] byNmae = new byte [30]; //姓名 public short sex; //性别 public int nationalCode; //民族代码 public byte[] birthDay = new byte[16]; //出生日期 public byte[] address = new byte[70]; //住址 public byte[] byCertificateNumber = new byte[36]; //证件号码 public byte[] issuingAuthority = new byte[30]; //签发机关 public byte[] byEffectiveDate = new byte[16]; //起始有效日期 public byte[] byIneffectiveDate = new byte[16];//截止有效日期 public byte[] byRes = new byte[36]; //保留字节; } public static class USB_SDK_BEEP_AND_FLICKER extends Structure{ public int dwSize; public byte byBeepType; public byte byBeepCount; public byte byFlickerType; public byte byFlickerCount; public byte[] byRes = new byte[24]; //保留字节; } public static class USB_SDK_M1_PWD_VERIFY extends Structure{ public int dwSize; public byte byPasswordType; public byte bySectionNum; public byte[] byRes1 = new byte[2]; public byte[] byPassword = new byte[6]; public byte[] byRes = new byte[18]; } public static class USB_SDK_M1_BLOCK_ADDR extends Structure{ public int dwSize; public short wAddr; public byte[] byRes = new byte[26]; } public static class USB_SDK_M1_BLOCK_DATA extends Structure{ public int dwSize; public byte[] byData = new byte[16]; public byte[] byRes = new byte[12]; } public static interface fEnumDeviceCallBack extends StdCallCallback { public void invoke(USB_SDK_DEVICE_INFO pDevceInfo, Pointer pUser); } boolean USB_SDK_Init();//USB_SDK的初始化 boolean USB_SDK_Cleanup();//USB_SDK的反初始化 boolean USB_SDK_SetLogToFile(int dwLogLevel, String strLogDir, boolean bAutoDel); int USB_SDK_GetLastError();//获取错误码 String USB_SDK_GetErrorMsg(int dwErrorCode);//获取错误码对应的信息 boolean USB_SDK_EnumDevice(fEnumDeviceCallBack cbEnumDeviceCallBack, Pointer pUser);//枚举USB设备 NativeLong USB_SDK_Login(USB_SDK_USER_LOGIN_INFO pUsbLoginInfo, USB_SDK_DEVICE_REG_RES pDevRegRes);//登录设备 boolean USB_SDK_Logout(NativeLong lUserID);//关闭USB设备 boolean USB_SDK_SetDeviceConfig(NativeLong lUserID, int dwCommand, USB_CONFIG_INPUT_INFO pConfigInputInfo, USB_CONFIG_OUTPUT_INFO pConfigOutputInfo); //激活卡:dwCommand对应为USB_SDK_GET_ACTIVATE_CARD,pInputInfo->lpInBuffer对应结构体USB_SDK_WAIT_SECOND,pOutputInfo->lpOutBuffer对应结构体USB_SDK_ACTIVATE_CARD_RES boolean USB_SDK_GetDeviceConfig(NativeLong lUserID, int dwCommand, USB_CONFIG_INPUT_INFO pConfigInputInfo, USB_CONFIG_OUTPUT_INFO pConfigOutputInfo); }

 

 

具体包已上传,可参考https://download.csdn.net/download/qq_40524941/19764369?spm=1001.2014.3001.5503



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3