package com.netsdk.demo.customize; import com.netsdk.demo.util.CaseMenu; import com.netsdk.lib.NetSDKLib; import com.netsdk.lib.ToolKits; import com.netsdk.lib.structure.*; import com.netsdk.lib.utils.Initialization; import com.sun.jna.Memory; import com.sun.jna.Pointer; import java.io.UnsupportedEncodingException; import java.util.LinkedHashSet; import java.util.Random; import java.util.Scanner; /** * @author 291189 * @version 1.0 * @description ERR221009143 * @date 2022/10/24 9:45 */ public class VehicleRegisterDBNewDemo extends Initialization { //创建车辆组 public void CLIENT_CreateGroupForVehicleRegisterDB(){ //入参 NET_IN_CREATE_GROUP_FOR_VEHICLE_REG_DB inparam=new NET_IN_CREATE_GROUP_FOR_VEHICLE_REG_DB(); String groupName="one"; String GroupDetail="第一个分组"; try { System.arraycopy(groupName.getBytes(encode),0,inparam.szGroupName,0,groupName.getBytes(encode).length); System.arraycopy(GroupDetail.getBytes(encode),0,inparam.szGroupDetail,0,GroupDetail.getBytes(encode).length); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } inparam.nGroupType=0; int pInParamSize=inparam.size(); Pointer pInParam =new Memory(pInParamSize); ToolKits.SetStructDataToPointer(inparam, pInParam, 0); //出参 NET_OUT_CREATE_GROUP_FOR_VEHICLE_REG_DB outParam=new NET_OUT_CREATE_GROUP_FOR_VEHICLE_REG_DB(); int poutParamSize=outParam.size(); Pointer poutParam =new Memory(poutParamSize); ToolKits.SetStructDataToPointer(outParam, poutParam, 0); boolean isCreate = netSdk.CLIENT_CreateGroupForVehicleRegisterDB(loginHandle, pInParam, poutParam, 3000); String id=""; if(isCreate){ ToolKits.GetPointerDataToStruct(poutParam,0,outParam); byte[] szGroupID = outParam.szGroupID; id= new String(szGroupID); System.out.println("CLIENT_CreateGroupForVehicleRegisterDB success "); System.out.println("szGroupID:"+id); }else { System.err.println(" CLIENT_CreateGroupForVehicleRegisterDB fail :"+ToolKits.getErrorCode()); } } // 删除车辆组 public void CLIENT_DeleteGroupFromVehicleRegisterDB(){ Scanner scanner=new Scanner(System.in); //入参 NET_IN_DELETE_GROUP_FROM_VEHICLE_REG_DB inparam=new NET_IN_DELETE_GROUP_FROM_VEHICLE_REG_DB(); System.out.println("输入要删除车辆组的标识 为空时表示删除全部车辆组"); String next = scanner.nextLine(); String groupID=next.trim(); if(!"".equals(groupID)){ try { System.arraycopy(groupID.getBytes(encode),0,inparam.szGroupID,0,groupID.getBytes(encode).length); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } int pInParamSize=inparam.size(); Pointer pInParam =new Memory(pInParamSize); ToolKits.SetStructDataToPointer(inparam, pInParam, 0); //出参 NET_OUT_DELETE_GROUP_FROM_VEHICLE_REG_DB outParam=new NET_OUT_DELETE_GROUP_FROM_VEHICLE_REG_DB(); int pOutParamSize=outParam.size(); Pointer pOutParam =new Memory(pOutParamSize); ToolKits.SetStructDataToPointer(outParam, pOutParam, 0); boolean isDelete = netSdk.CLIENT_DeleteGroupFromVehicleRegisterDB(loginHandle, pInParam, pOutParam, 3000); if(isDelete){ System.out.println(" delete is success"); }else { System.err.println(" delete is fail:"+ToolKits.getErrorCode()); } } /** * 修改车辆组 */ public void CLIENT_ModifyGroupForVehicleRegisterDB(){ Scanner scanner=new Scanner(System.in); NET_IN_MODIFY_GROUP_FOR_VEHICLE_REG_DB inPut=new NET_IN_MODIFY_GROUP_FOR_VEHICLE_REG_DB(); NET_VEHICLE_GROUP_INFO stuGroupInfo = inPut.stuGroupInfo; System.out.println("输入要修改车辆组的Id"); String next = scanner.next(); // 车辆组标识 String szGroupID=next.trim(); System.out.println("输入要修改车辆组类型,0:未知 1:禁止列表 2:允许列表"); stuGroupInfo.nGroupType=scanner.nextInt(); System.out.println("输入要修改车辆组名称"); String szGroupName=scanner.next(); System.out.println("输入要修改车辆组备注信息"); String szGroupDetail=scanner.next(); try { System.arraycopy(szGroupID.getBytes(encode),0, stuGroupInfo.szGroupID,0,szGroupID.getBytes(encode).length); System.arraycopy(szGroupName.getBytes(encode),0, stuGroupInfo.szGroupName,0,szGroupName.getBytes(encode).length); System.arraycopy(szGroupDetail.getBytes(encode),0, stuGroupInfo.szGroupDetail,0,szGroupDetail.getBytes(encode).length); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } Pointer inputPointer = new Memory(inPut.size()); inputPointer.clear(inPut.size()); ToolKits.SetStructDataToPointer(inPut,inputPointer,0); NET_OUT_MODIFY_GROUP_FOR_VEHICLE_REG_DB outPut=new NET_OUT_MODIFY_GROUP_FOR_VEHICLE_REG_DB(); Pointer outPutPointer = new Memory(outPut.size()); outPutPointer.clear(outPut.size()); ToolKits.SetStructDataToPointer(outPut,outPutPointer,0); boolean isModify = netSdk.CLIENT_ModifyGroupForVehicleRegisterDB(loginHandle, inputPointer, outPutPointer, 3000); if(isModify){ System.out.println(" CLIENT_ModifyGroupForVehicleRegisterDB is success"); }else { System.err.println(" CLIENT_ModifyGroupForVehicleRegisterDB is fail:"+ToolKits.getErrorCode()); } } /** * 查找车辆组信息 */ public void CLIENT_FindGroupFormVehicleRegisterDB(){ Scanner scanner=new Scanner(System.in); NET_IN_FIND_GROUP_FROM_VEHICLE_REG_DB inPut=new NET_IN_FIND_GROUP_FROM_VEHICLE_REG_DB(); // 组ID,为空表示查找全部车辆组信息 System.out.println("输入要查询车辆组的Id,为空表示查找全部车辆组信息"); String next = scanner.nextLine(); String groupID=next.trim(); if(!"".equals(groupID)){ try { System.arraycopy(groupID.getBytes(encode),0,inPut.szGroupID,0,groupID.getBytes(encode).length); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } Pointer inputPointer = new Memory(inPut.size()); inputPointer.clear(inPut.size()); ToolKits.SetStructDataToPointer(inPut,inputPointer,0); NET_OUT_FIND_GROUP_FROM_VEHICLE_REG_DB outPut=new NET_OUT_FIND_GROUP_FROM_VEHICLE_REG_DB(); Pointer outPutPointer = new Memory(outPut.size()); outPutPointer.clear(outPut.size()); ToolKits.SetStructDataToPointer(outPut,outPutPointer,0); boolean b = netSdk.CLIENT_FindGroupFormVehicleRegisterDB(loginHandle, inputPointer, outPutPointer, 3000); if(b){ System.out.println(" CLIENT_FindGroupFormVehicleRegisterDB is success"); }else { System.err.println(" CLIENT_FindGroupFormVehicleRegisterDB is fail:"+ToolKits.getErrorCode()); } ToolKits.GetPointerData(outPutPointer,outPut); int nGroupListNum = outPut.nGroupListNum; NET_VEHICLE_GROUP_FOUND_INFO[] stuGroupList = outPut.stuGroupList; for(int i=0;i randomSet = getRandomSet(infos.length, 1000000000); Integer[] ranArr=new Integer[randomSet.size()]; Integer[] integers = randomSet.toArray(ranArr); System.out.println("输入车辆所属组ID(注意该groupID需在设备已存在) "); String groupID = scanner.next().trim(); for(int i=0;i getRandomSet(int size,int max){ Random random= new Random(); LinkedHashSet result= new LinkedHashSet<>(); while (result.size() < size) { Integer next = random.nextInt(max) + 1; result.add(next); } return result; } /** * 修改车辆信息 */ public void CLIENT_ModifyVehicleForVehicleRegisterDB(){ Scanner scanner=new Scanner(System.in); NET_IN_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB inPut=new NET_IN_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB(); NetSDKLib.NET_VEHICLE_INFO stuVehicleInfo = inPut.stuVehicleInfo; System.out.println("输入车辆唯一标识符"); // 车辆唯一标识符,由服务端生成用于程序中表示惟一 String uid = scanner.nextLine().trim(); stuVehicleInfo.nUID= Integer.parseInt(uid); System.out.println("输入车辆组ID"); String szGroupID= scanner.nextLine().trim(); System.out.println("输入车主名称"); // 车主名称 String szOwnerName=scanner.nextLine().trim(); try { System.arraycopy(szGroupID.getBytes(encode),0,stuVehicleInfo.szGroupID,0,szGroupID.getBytes(encode).length); System.arraycopy(szOwnerName.getBytes(encode),0,stuVehicleInfo.szOwnerName,0,szOwnerName.getBytes(encode).length); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } Pointer inputPointer = new Memory(inPut.size()); inputPointer.clear(inPut.size()); ToolKits.SetStructDataToPointer(inPut,inputPointer,0); NET_OUT_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB outPut=new NET_OUT_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB(); Pointer outPutPointer = new Memory(outPut.size()); outPutPointer.clear(outPut.size()); ToolKits.SetStructDataToPointer(outPut,outPutPointer,0); boolean b = netSdk.CLIENT_ModifyVehicleForVehicleRegisterDB(loginHandle, inputPointer, outPutPointer, 3000); if(b){ System.out.println(" CLIENT_ModifyVehicleForVehicleRegisterDB is success"); }else { System.err.println(" CLIENT_ModifyVehicleForVehicleRegisterDB is fail:"+ToolKits.getErrorCode()); } } /** * 删除车辆信息 */ public void CLIENT_DeleteVehicleFromVehicleRegisterDB(){ Scanner scanner=new Scanner(System.in); NET_IN_DELETE_VEHICLE_FROM_VEHICLE_REG_DB inPut=new NET_IN_DELETE_VEHICLE_FROM_VEHICLE_REG_DB(); System.out.println("输入车辆唯一标识符"); // 车辆唯一标识符,由服务端生成用于程序中表示惟一 String s = scanner.nextLine(); inPut.nUID= Integer.parseInt(s.trim()); /* System.out.println("输入车辆组ID"); // 输入车辆组ID String szGroupID = scanner.nextLine().trim(); System.out.println("输入车牌"); // 输入车辆组ID String szPlateNumber = scanner.nextLine().trim(); try { System.arraycopy(szGroupID.getBytes(encode),0,inPut.szGroupID,0,szGroupID.getBytes(encode).length); System.arraycopy(szPlateNumber.getBytes(encode),0,inPut.szPlateNumber,0,szPlateNumber.getBytes(encode).length); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }*/ Pointer inputPointer = new Memory(inPut.size()); inputPointer.clear(inPut.size()); ToolKits.SetStructDataToPointer(inPut,inputPointer,0); NET_OUT_DELETE_VEHICLE_FROM_VEHICLE_REG_DB outPut=new NET_OUT_DELETE_VEHICLE_FROM_VEHICLE_REG_DB(); Pointer outPutPointer = new Memory(outPut.size()); outPutPointer.clear(outPut.size()); ToolKits.SetStructDataToPointer(outPut,outPutPointer,0); boolean b = netSdk.CLIENT_DeleteVehicleFromVehicleRegisterDB(loginHandle, inputPointer, outPutPointer, 3000); if(b){ System.out.println(" CLIENT_DeleteVehicleFromVehicleRegisterDB is success"); }else { System.err.println(" CLIENT_DeleteVehicleFromVehicleRegisterDB is fail:"+ToolKits.getErrorCode()); } } /** * 向指定注册库查询车辆 */ public void FindVehicleRegisterDB(){ Scanner scanner=new Scanner(System.in); /** * 向指定注册库查询车辆 */ NET_IN_START_FIND_VEHICLE_REG_DB inPut=new NET_IN_START_FIND_VEHICLE_REG_DB(); NetSDKLib.NET_VEHICLE_INFO stuVehicleInfo = inPut.stuVehicleInfo; System.out.println("输入要查询车辆组的Id,为空表示查找全部车辆组信息"); String next = scanner.nextLine(); // 车辆所属组ID String szGroupID=next.trim(); // 车色 第一个元素表示红色分量值; 第二个元素表示绿色分量值; 第三个元素表示蓝色分量值; 第四个元素表示透明度分量(无意义) //此参数必填,不填则查询不到数据 stuVehicleInfo.stuVehicleColor.nAlpha = 255; try { System.arraycopy(szGroupID.getBytes(encode),0,stuVehicleInfo.szGroupID,0,szGroupID.getBytes(encode).length); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } Pointer inputPointer = new Memory(inPut.size()); inputPointer.clear(inPut.size()); ToolKits.SetStructDataToPointer(inPut,inputPointer,0); NET_OUT_START_FIND_VEHICLE_REG_DB outPut=new NET_OUT_START_FIND_VEHICLE_REG_DB(); Pointer outPutPointer = new Memory(outPut.size()); outPutPointer.clear(outPut.size()); ToolKits.SetStructDataToPointer(outPut,outPutPointer,0); boolean b = netSdk.CLIENT_StartFindVehicleRegisterDB(loginHandle, inputPointer, outPutPointer, 3000); if(b){ System.out.println(" CLIENT_StartFindVehicleRegisterDB is success"); }else { System.err.println(" CLIENT_StartFindVehicleRegisterDB is fail:"+ToolKits.getErrorCode()); return; } ToolKits.GetPointerData(outPutPointer,outPut); // 取到的查询令牌 int nToken = outPut.nToken; // 符合此次查询条件的结果总条数 int nTotalCount = outPut.nTotalCount; System.out.println(" nToken:"+nToken); System.out.println(" nTotalCount:"+nTotalCount); /** * 获取车辆查询结果信息 */ NET_IN_DO_FIND_VEHICLE_REG_DB inPutFind=new NET_IN_DO_FIND_VEHICLE_REG_DB(); NET_FIND_VEHICLE_CONDITION stuCondition = inPutFind.stuCondition; // 查询令牌 stuCondition.nToken=nToken; stuCondition. nBeginNumber=0; stuCondition.nCount=100; // System.out.println("stuCondition:"+stuCondition.toString()); Pointer inPutFindPointer = new Memory(inPutFind.size()); inPutFindPointer.clear(inPutFind.size()); ToolKits.SetStructDataToPointer(inPutFind,inPutFindPointer,0); NET_OUT_DO_FIND_VEHICLE_REG_DB outPutFind=new NET_OUT_DO_FIND_VEHICLE_REG_DB(); Pointer outPutFindPointer = new Memory(outPutFind.size()); outPutFindPointer.clear(outPutFind.size()); ToolKits.SetStructDataToPointer(outPutFind,outPutFindPointer,0); b = netSdk.CLIENT_DoFindVehicleRegisterDB(loginHandle, inPutFindPointer, outPutFindPointer, 3000); if(b){ System.out.println(" CLIENT_DoFindVehicleRegisterDB is success"); }else { System.err.println(" CLIENT_DoFindVehicleRegisterDB is fail:"+ToolKits.getErrorCode()); return; } ToolKits.GetPointerData(outPutFindPointer,outPutFind); /** * 候选车辆数量 */ int nCarCandidateNum = outPutFind.nCarCandidateNum; System.out.println("nCarCandidateNum:"+nCarCandidateNum); /** * 查询到的条数 */ int nFound = outPutFind.nFound; System.out.println("nFound:"+nFound); NetSDKLib.NET_CAR_CANDIDATE_INFO[] stuCarCandidate = outPutFind.stuCarCandidate; for(int i=0;i