设备网络SDK开发使用手册

NET_DVR_SetDVRMessageCallBack_V30

注册回调函数,接收设备报警消息等。

BOOL NET_DVR_SetDVRMessageCallBack_V30(
  MSGCallBack    fMessageCallBack,
  void           *pUser
);

Parameters

fMessageCallBack
[in] 回调函数
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *MSGCallBack)(
  LONG               lCommand,
  NET_DVR_ALARMER    *pAlarmer,
  char               *pAlarmInfo,
  DWORD              dwBufLen,
  void               *pUser
);

Callback Function Parameters

lCommand
[out] 上传的消息类型,不同的报警信息对应不同的类型,通过类型区分是什么报警信息,详见“Remarks”中列表
pAlarmer
[out] 报警设备信息,包括设备序列号、IP地址、登录IUserID句柄等
pAlarmInfo
[out] 报警信息,通过lCommand值判断pAlarmer对应的结构体,详见“Remarks”中列表
dwBufLen
[out] 报警信息缓存大小
pUser
[out] 用户数据

Return Values

TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

Remarks

Example

以布防方式设置回调接收报警信息为例

void CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
  int i;
  switch(lCommand) 
  {       
  case COMM_ALARM:
      {
          NET_DVR_ALARMINFO struAlarmInfo;
          memcpy(&struAlarmInfo, pAlarmInfo, sizeof(NET_DVR_ALARMINFO));
          switch (struAlarmInfo.dwAlarmType)
          {
          case 3: //移动侦测报警
               for (i=0; i<16; i++)   //#define MAX_CHANNUM   16  //最大通道数
               {
                   if (struAlarmInfo.dwChannel[i] == 1)
                   {
                       printf("发生移动侦测报警的通道号 %d\n", i+1);
                   }
               }       
          break;
          default:
          break;
          }
       }
  break;
  default:
  break;
  }
}

void main() {

  //---------------------------------------
  // 初始化
  NET_DVR_Init();
  //设置连接时间与重连时间
  NET_DVR_SetConnectTime(2000, 1);
  NET_DVR_SetReconnect(10000, true);

  //---------------------------------------
  // 注册设备
  LONG lUserID;
  NET_DVR_DEVICEINFO_V30 struDeviceInfo;
  lUserID = NET_DVR_Login_V30("172.0.0.100", 8000, "admin", "12345", &struDeviceInfo);
  if (lUserID < 0)
  {
       printf("Login error, %d\n", NET_DVR_GetLastError());
       NET_DVR_Cleanup(); 
       return;
  }
  
  //设置报警回调函数
  NET_DVR_SetDVRMessageCallBack_V30(MessageCallback, NULL);
  
  //启用布防
  LONG lHandle;
  lHandle = NET_DVR_SetupAlarmChan_V30(lUserID);
  if (lHandle < 0)
  {
      printf("NET_DVR_SetupAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup(); 
      return;
  }
  
  Sleep(5000);
  //撤销布防上传通道
  if (!NET_DVR_CloseAlarmChan_V30(lHandle))
  {
      printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup(); 
      return;
  }
  
  //注销用户
  NET_DVR_Logout(lUserID);
  //释放SDK资源
  NET_DVR_Cleanup();
  return;
}

See Also

NET_DVR_SetupAlarmChan_V41

NET_DVR_StartListen_V30

Reference Interface

扩展接口可见

NET_DVR_SetDVRMessageCallBack_V31

NET_DVR_SetDVRMessageCallBack_V50