package com.netsdk.demo.customize;
|
|
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.Scanner;
|
|
/**
|
* @author 291189
|
* @version 1.0
|
* @description ERR220629200
|
* @date 2022/7/4 10:45
|
*/
|
public class PollingConfigDemo extends Initialization {
|
|
/**
|
* 平台下发轮询配置,规则和场景字段见附件
|
*/
|
|
public void setPollingConfig() {
|
|
NET_IN_SET_POLLING_CONFIG input = new NET_IN_SET_POLLING_CONFIG();
|
|
input.nConfigCnt = 1;
|
|
NET_SET_POLLING_CONFIG_INFO info = new NET_SET_POLLING_CONFIG_INFO();
|
info.bEnable = 1;
|
|
NET_SET_POLLING_CONFIG_INFO setInfo = new NET_SET_POLLING_CONFIG_INFO();
|
|
setInfo.bEnable = 1;
|
|
setInfo.nChannel = 0;
|
|
/**
|
* 规则配置个数
|
*/
|
setInfo.nRulelTypeCnt = 2;
|
/**
|
* 规则配置
|
*/
|
ToolKits.StringToByteArray("ObjectRemoval", setInfo.szRulelType[0].arr);
|
ToolKits.StringToByteArray("ObjectPlacement", setInfo.szRulelType[1].arr);
|
/**
|
* 全局配置列表
|
*/
|
ToolKits.StringToByteArray("ObjectMonitor", setInfo.szGlobalTypeList[0].arr);
|
/**
|
* 全局配置列表个数
|
*/
|
setInfo.nGlobalTypeListNum = 1;
|
|
input.stuConfigInfos[0] = setInfo;
|
|
Pointer pointerInput = new Memory(input.size());
|
|
pointerInput.clear(input.size());
|
|
ToolKits.SetStructDataToPointer(input, pointerInput, 0);
|
|
NET_OUT_SET_POLLING_CONFIG outPut = new NET_OUT_SET_POLLING_CONFIG();
|
|
Pointer pointerOutput = new Memory(outPut.size());
|
pointerOutput.clear(outPut.size());
|
ToolKits.SetStructDataToPointer(outPut, pointerOutput, 0);
|
|
boolean b = netSdk.CLIENT_SetPollingConfig(loginHandle, pointerInput, pointerOutput, 3000);
|
|
if (b) {
|
System.out.println("CLIENT_SetPollingConfig success");
|
} else {
|
System.out.println("CLIENT_SetPollingConfig fail:" + ToolKits.getErrorCode());
|
|
}
|
|
}
|
|
/**
|
* 按通道获取设备智能业务的运行状态
|
*/
|
public void getChannelState() {
|
NET_IN_GET_CHANNEL_STATE input = new NET_IN_GET_CHANNEL_STATE();
|
input.nChannelNum = 0;
|
//input.nChannel[0] = 0;
|
//input.nChannel[1] = 1;
|
Pointer pointerInput = new Memory(input.size());
|
pointerInput.clear(input.size());
|
ToolKits.SetStructDataToPointer(input, pointerInput, 0);
|
|
NET_OUT_GET_CHANNEL_STATE outPut = new NET_OUT_GET_CHANNEL_STATE();
|
|
outPut.nMaxStateNum = 10;
|
|
NET_CHANNEL_STATE_INFO_EX[] infos = new NET_CHANNEL_STATE_INFO_EX[outPut.nMaxStateNum];
|
|
for (int i = 0; i < infos.length; i++) {
|
infos[i] = new NET_CHANNEL_STATE_INFO_EX();
|
}
|
|
outPut.pstuStateEx = new Memory(infos[0].size() * infos.length);
|
|
outPut.pstuStateEx.clear(infos[0].size() * infos.length);
|
|
ToolKits.SetStructArrToPointerData(infos, outPut.pstuStateEx);
|
|
Pointer pointerOutput = new Memory(outPut.size());
|
pointerOutput.clear(outPut.size());
|
ToolKits.SetStructDataToPointer(outPut, pointerOutput, 0);
|
|
boolean b = netSdk.CLIENT_GetChannelState(loginHandle, pointerInput, pointerOutput, 3000);
|
|
if (b) {
|
System.out.println("CLIENT_GetChannelState success");
|
|
ToolKits.GetPointerData(pointerOutput, outPut);
|
|
int nMaxStateNum = outPut.nMaxStateNum;
|
// 用户申请智能业务状态信息最大个数
|
System.out.println("用户申请智能业务状态信息最大个数:" + nMaxStateNum);
|
System.out.println("智能业务状态信息实际个数:" + outPut.nStateNum);
|
|
NET_CHANNEL_STATE_INFO_EX[] stateInfos = new NET_CHANNEL_STATE_INFO_EX[outPut.nMaxStateNum];
|
for (int i = 0; i < stateInfos.length; i++) {
|
stateInfos[i] = new NET_CHANNEL_STATE_INFO_EX();
|
}
|
|
ToolKits.GetPointerDataToStructArr(outPut.pstuStateEx, stateInfos);
|
|
for (int i = 0; i < outPut.nStateNum; i++) {
|
|
NET_CHANNEL_STATE_INFO_EX info = stateInfos[i];
|
|
/**
|
* 通道号
|
*/
|
int nChannel = info.nChannel;
|
System.out.println("通道号:" + nChannel);
|
/**
|
* 已开启的智能规则信息个数
|
*/
|
|
int nIntelliInfoNum = info.nIntelliInfoNum;
|
System.out.println("已开启的智能规则信息个数:" + nIntelliInfoNum);
|
|
NET_INTELLI_INFO[] stuIntelliInfo = info.stuIntelliInfo;
|
|
for (int j = 0; j < nIntelliInfoNum; j++) {
|
|
NET_INTELLI_INFO net_intelli_info = stuIntelliInfo[j];
|
|
int nTypeNum = net_intelli_info.nTypeNum;
|
System.out.println("智能规则类型个数:" + nTypeNum);
|
|
/**
|
* 智能规则类型
|
*/
|
Byte64Arr[] szType = net_intelli_info.szType;
|
|
for (int m = 0; m < nTypeNum; m++) {
|
Byte64Arr byte64Arr = szType[m];
|
// 智能规则类型
|
try {
|
System.out.println("智能规则类型:" + new String(byte64Arr.arr, encode));
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
|
}
|
/**
|
* 智能场景类型
|
*/
|
|
byte[] szClass = net_intelli_info.szClass;
|
try {
|
System.out.println("智能场景类型:" + new String(szClass, encode));
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
|
}
|
|
}
|
|
} else {
|
System.out.println("CLIENT_GetChannelState fail:" + ToolKits.getErrorCode());
|
|
}
|
|
}
|
|
public static void main(String[] args) {
|
PollingConfigDemo pollingConfigDemo = new PollingConfigDemo();
|
InitTest("10.172.160.239", 37777, "admin", "admin123");
|
|
Scanner sc = new Scanner(System.in);
|
|
while (true) {
|
System.out.println("0 退出");
|
System.out.println("1 平台下发轮询配置");
|
System.out.println("2 按通道获取设备智能业务的运行状态");
|
int nextInt = sc.nextInt();
|
|
if (nextInt == 0) {
|
break;
|
} else if (nextInt == 1) {
|
pollingConfigDemo.setPollingConfig();
|
} else if (nextInt == 2) {
|
pollingConfigDemo.getChannelState();
|
}
|
}
|
|
LoginOut();
|
|
}
|
}
|