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.NativeLong;
|
import com.sun.jna.Pointer;
|
import static com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE.NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR;
|
|
/**
|
* @author 291189
|
* @version 1.0
|
* @description GIP220518009
|
* @date 2022/5/26 17:01
|
*/
|
public class UserPassDemo extends Initialization {
|
|
/**(无图的)
|
* 订阅报警信息
|
* @return
|
*/
|
public void startListen() {
|
// 设置报警回调函数
|
netSdk.CLIENT_SetDVRMessCallBack(fAlarmDataCB.getCallBack(), null);
|
|
// 订阅报警
|
boolean bRet = netSdk.CLIENT_StartListenEx(loginHandle);
|
if (!bRet) {
|
System.err.println("订阅报警失败! LastError = 0x%x\n" + netSdk.CLIENT_GetLastError());
|
}
|
else {
|
System.out.println("订阅报警成功.");
|
}
|
}
|
|
/**(无图)
|
* 取消订阅报警信息
|
* @return
|
*/
|
public void stopListen() {
|
// 停止订阅报警
|
boolean bRet = netSdk.CLIENT_StopListen(loginHandle);
|
if (bRet) {
|
System.out.println("取消订阅报警信息.");
|
}
|
}
|
|
/**
|
* 报警信息回调函数原形,建议写成单例模式
|
*/
|
private static class fAlarmDataCB implements NetSDKLib.fMessCallBack{
|
private fAlarmDataCB(){}
|
|
private static class fAlarmDataCBHolder {
|
private static fAlarmDataCB callback = new fAlarmDataCB();
|
}
|
|
public static fAlarmDataCB getCallBack() {
|
return fAlarmDataCB.fAlarmDataCBHolder.callback;
|
}
|
|
public boolean invoke(int lCommand, NetSDKLib.LLong lLoginID, Pointer pStuEvent, int dwBufLen, String strDeviceIP, NativeLong nDevicePort, Pointer dwUser){
|
switch (lCommand)
|
{
|
|
case NetSDKLib.NET_ALARM_USER_PASS_CONFIRM: { // 用户通过闸机进入或离开事件(对应结构体 NET_ALARM_USER_PASS_CONFIRM_INFO)
|
NET_ALARM_USER_PASS_CONFIRM_INFO msg = new NET_ALARM_USER_PASS_CONFIRM_INFO();
|
ToolKits.GetPointerData(pStuEvent, msg);
|
System.out.println("用户通过闸机进入或离开事件");
|
//事件动作,1表示持续性事件开始,2表示持续性事件结束;
|
int nAction = msg.nAction;
|
System.out.println("事件动作:"+nAction);
|
|
int nChannelID = msg.nChannelID;
|
System.out.println("通道号:"+nChannelID);
|
|
NET_TIME_EX stuTime
|
= msg.stuTime;
|
System.out.println("事件发生的时间:"+stuTime);
|
//stuRealUTC 是否有效,bRealUTC 为 1 时,用 stuRealUTC,否则用 stuTime 字段
|
int bRealUTC = msg.bRealUTC;
|
System.out.println("事件发生的时间:"+bRealUTC);
|
|
NET_TIME_EX stuRealUTC
|
= msg.stuRealUTC;
|
System.out.println("事件发生的时间(标准UTC时间):"+stuRealUTC);
|
|
int nCount
|
= msg.nCount;
|
System.out.println("通过人数数量:"+nCount);
|
|
int emType
|
= msg.emType;
|
System.out.println("进出方向:"+emType);
|
|
break;
|
}
|
|
default:
|
System.out.println("lCommand:"+lCommand);
|
break;
|
}
|
return true;
|
}
|
}
|
|
|
//定期通行人数清除功能配置
|
public void userPassDataCountClearInfo(){
|
// 通道无关, 通道号填-1
|
int nChannelID=-1;
|
NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR_INFO msg=new NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR_INFO();
|
Pointer pstuConfigInfo=new Memory(msg.size());
|
pstuConfigInfo.clear(msg.size());
|
ToolKits.SetStructDataToPointer(msg,pstuConfigInfo,0);
|
boolean gRet = netSdk.CLIENT_GetConfig(loginHandle, NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR, nChannelID, pstuConfigInfo, msg.size(), 3000, null);
|
if (!gRet)
|
{
|
System.out.println("CLIENT_GetConfig fail,error:"+ToolKits.getErrorCode());
|
|
return;
|
}
|
ToolKits.GetPointerData(pstuConfigInfo, msg);
|
System.out.println("使能:"+msg.bEnable);
|
System.out.println("定期人数清除周期:"+msg.emPeriod);
|
|
msg.bEnable=1;
|
msg.emPeriod=2;
|
|
Pointer pstuOutInfo=new Memory(msg.size());
|
pstuOutInfo.clear(msg.size());
|
|
ToolKits.SetStructDataToPointer(msg, pstuOutInfo, 0);
|
boolean sRet=netSdk.CLIENT_SetConfig(loginHandle, NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR, nChannelID, pstuOutInfo, msg.size(), 3000, null, null);
|
if(!sRet){
|
|
System.out.println("CLIENT_SetConfig fail,error:"+ToolKits.getErrorCode());
|
|
return;
|
}else{
|
System.out.printf("CLIENT_SetConfig success\n");
|
}
|
}
|
|
public void RunTest()
|
{
|
System.out.println("Run Test");
|
CaseMenu menu = new CaseMenu();
|
menu.addItem((new CaseMenu.Item(this , "userPassDataCountClearInfo" , "userPassDataCountClearInfo")));
|
menu.addItem((new CaseMenu.Item(this , "startListen" , "startListen")));
|
menu.addItem((new CaseMenu.Item(this , "stopListen" , "stopListen")));
|
menu.run();
|
}
|
|
public static void main(String[] args) {
|
|
UserPassDemo userPassDemo=new UserPassDemo();
|
InitTest("172.10.3.52",37777,"admin","admin123");
|
userPassDemo.RunTest();
|
LoginOut();
|
|
}
|
}
|