ICC大华sdk接口用Java怎么调用?用Java实现统计当日进出动态看一下
时间: 2023-05-30 10:07:23 浏览: 774
大华SDK-JAVA编程指导手册(动环主机分册).pdf,大华sdk对接
ICC大华SDK提供了Java接口,您可以通过以下步骤调用:
1. 下载并安装ICC大华SDK,并将其添加到Java项目的类路径中。
2. 创建一个Java类作为接口调用程序。
3. 在Java类中导入ICC大华SDK的相关类。
4. 创建SDK对象并初始化。
5. 根据需要设置SDK参数。
6. 调用相应的SDK方法。
以下是一个示例程序,用于统计当日进出动态:
```java
import com.dahua.netsdk.*;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DahuaSdkTest {
public static void main(String[] args) {
// 初始化SDK
HCNetSDK hCNetSDK = HCNetSDK.INSTANCE;
hCNetSDK.NET_DVR_Init();
// 设置连接超时时间和重连次数
hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
hCNetSDK.NET_DVR_SetReconnect(10000, true);
// 登录设备
HCNetSDK.NET_DVR_DEVICEINFO_V30 deviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30();
HCNetSDK.NET_DVR_USER_LOGIN_INFO loginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
loginInfo.sDeviceAddress = "192.168.1.100";
loginInfo.wPort = 8000;
loginInfo.sUserName = "admin";
loginInfo.sPassword = "password";
int lUserID = hCNetSDK.NET_DVR_Login_V30(loginInfo, deviceInfo);
if (lUserID < 0) {
System.err.println("Login failed: " + hCNetSDK.NET_DVR_GetLastError());
return;
}
// 获取当日进出动态
HCNetSDK.NET_DVR_TIME startTime = new HCNetSDK.NET_DVR_TIME();
HCNetSDK.NET_DVR_TIME endTime = new HCNetSDK.NET_DVR_TIME();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date now = new Date();
String dateStr = sdf.format(now);
startTime.dwYear = Integer.parseInt(dateStr.substring(0, 4));
startTime.dwMonth = Integer.parseInt(dateStr.substring(4, 6));
startTime.dwDay = Integer.parseInt(dateStr.substring(6, 8));
int lHandle = hCNetSDK.NET_DVR_FindDVRLog(lUserID, 0, HCNetSDK.COMM_ALARM_ACS, startTime, endTime, false);
if (lHandle < 0) {
System.err.println("FindDVRLog failed: " + hCNetSDK.NET_DVR_GetLastError());
hCNetSDK.NET_DVR_Logout(lUserID);
hCNetSDK.NET_DVR_Cleanup();
return;
}
HCNetSDK.NET_DVR_ALARMINFO_V30 alarmInfo = new HCNetSDK.NET_DVR_ALARMINFO_V30();
while (true) {
int result = hCNetSDK.NET_DVR_FindNextLog_V30(lHandle, alarmInfo);
if (result == HCNetSDK.NET_DVR_ISFINDING) {
continue;
} else if (result == HCNetSDK.NET_DVR_FILE_SUCCESS) {
// 处理日志信息
System.out.println("Alarm time: " + alarmInfo.struTime.toString());
System.out.println("Card number: " + new String(alarmInfo.struAcsEventInfo.byCardNo).trim());
System.out.println("Door name: " + new String(alarmInfo.struAcsEventInfo.byDoorName).trim());
System.out.println("Event type: " + alarmInfo.struAcsEventInfo.dwEventType);
System.out.println("Enter/Exit: " + alarmInfo.struAcsEventInfo.byAcsEventInfo[0]);
} else if (result == HCNetSDK.NET_DVR_FILE_NOFIND || result == HCNetSDK.NET_DVR_NOMOREFILE) {
break;
} else {
System.err.println("FindNextLog_V30 failed: " + hCNetSDK.NET_DVR_GetLastError());
break;
}
}
// 释放日志查询句柄
hCNetSDK.NET_DVR_FindClose(lHandle);
// 注销登录并清理SDK
hCNetSDK.NET_DVR_Logout(lUserID);
hCNetSDK.NET_DVR_Cleanup();
}
}
```
以上示例中,我们使用了`NET_DVR_FindDVRLog`方法查询当日进出动态,并通过`NET_DVR_FindNextLog_V30`方法逐一获取日志信息。您可以根据需要修改程序实现不同的功能。
阅读全文