目录
1、获取网络相关参数
//获取设备的网络参数
private void getNetCfg(int iUserID) {
HCNetSDK.NET_DVR_NETCFG_V30 m_strNetCfg = new HCNetSDK.NET_DVR_NETCFG_V30();
m_strNetCfg.dwSize = m_strNetCfg.size();
m_strNetCfg.write();
Pointer pStrDeviceCfg = m_strNetCfg.getPointer();
IntByReference pInt = new IntByReference(0);
boolean b_GetCfg = hcNetSDK.NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_NETCFG_V30,
0Xffffffff, pStrDeviceCfg, m_strNetCfg.dwSize, pInt);
if (b_GetCfg == false) {
logger.error("获取参数失败 错误码:" + hcNetSDK.NET_DVR_GetLastError());
}
m_strNetCfg.read();
byte[] byMACAddr = netCfg.struEtherNet[0].byMACAddr;
List<String> macEles = new ArrayList<>();
for (byte macEle : byMACAddr) {
macEles.add(String.format("%02x", macEle));
}
String mac = StringUtils.join(macEles, "-");
String subnetMask = new String(netCfg.struEtherNet[0].struDVRIPMask.sIpV4).trim();
String gateway = new String(netCfg.struGatewayIpAddr.sIpV4).trim();
logger.info("查询到到海康设备sn:{}, mac:{}, 子网掩码:{}, 网关:{}", sn, mac, subnetMask, gateway);
}
2、设置网络相关参数
private void setNetCfg(int iUserID, ControllerInfo controllerInfo) {
HCNetSDK.NET_DVR_NETCFG_V30 m_strNetCfg = new HCNetSDK.NET_DVR_NETCFG_V30();
m_strNetCfg.dwSize = m_strNetCfg.size();
m_strNetCfg.write();
Pointer pStrDeviceCfg = m_strNetCfg.getPointer();
IntByReference pInt = new IntByReference(0);
boolean b_GetCfg = hcNetSDK.NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_NETCFG_V30,
0Xffffffff, pStrDeviceCfg, m_strNetCfg.dwSize, pInt);
if (b_GetCfg == false) {
logger.error("获取参数失败 错误码:" + hcNetSDK.NET_DVR_GetLastError());
}
m_strNetCfg.read();
m_strNetCfg.struEtherNet[0].struDVRIP.sIpV4 = controllerInfo.getIp().getBytes(); // ip
m_strNetCfg.struEtherNet[0].wDVRPort = controllerInfo.getPort().shortValue(); // port
m_strNetCfg.struEtherNet[0].struDVRIPMask.sIpV4 = controllerInfo.getSubnetMask().getBytes(); // 子网掩码
m_strNetCfg.struGatewayIpAddr.sIpV4 = controllerInfo.getGateway().getBytes(); // 网关
m_strNetCfg.write();
boolean b_SetCameraParam = hcNetSDK.NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_NETCFG_V30, 1, pStrDeviceCfg, m_strNetCfg.size());
if (!b_SetCameraParam) {
logger.error("设置前端参数失败,错误码:" + hcNetSDK.NET_DVR_GetLastError());
}
m_strNetCfg.read();
logger.info("成功设置海康设备ip:[{}]", controllerInfo.getIp());
}