前言

非常感谢您使用我们公司的产品，我们将竭诚为您提供最好的服务。

本手册可能包含技术上不准确的地方或文字错误。

本手册的内容将做定期的更新，恕不另行通知；更新的内容将会在本手册的新版本中加入。

我们随时会改进或更新本手册中描述的产品或程序。


概述

EHOME协议是设备和服务器通信的一种推模式协议，EHOME SDK是基于该协议开发的API接口，数据结构和接口函数简洁清晰，更具有易用性。适用于支持EHOME协议的网络摄像机、网络球机、DVR、NVR、车载DVR、车载取证系统、单兵、报警主机等设备。

EHOME SDK包含3个组成模块：

A：CMS注册请求模块，设备（PU）和注册服务器（CMS）之间网络交互接口，包括设备注册、预览请求、录像/图片查找、录像回放请求、参数配置、语音对讲等。

B：预览回放取流模块，设备（PU）和流媒体服务器（VTDU）之间的网络交互接口，包括实时预览、远程回放等。CMS发送预览或者回放请求给设备，告知设备流媒体服务器地址，设备将数据推送给该服务器，流媒体服务器端通过该模块的接口启动监听，接收实时流数据或者录像数据。

C：报警监听模块，设备（PU）和报警管理服务器（AMS）之间的网络交互接口。CMS监听到设备注册，响应时告知设备报警服务器地址信息，设备将报警信息推送给该服务器，报警服务器端通过该模块接口启动监听，接收报警信息，包括移动侦测、视频信号丢失、遮挡报警、行为分析报警、客流量、热度图、人脸抓拍、GPS信息等。

EHOME SDK不包含服务器之间的网络交互内容，注册服务器（CMS）、流媒体服务器（VTDU）、报警管理服务器（AMS）以及客户端（CU）的交互需要用户自行实现。

EHOME SDK包含的3个组件模块的库文件如下所示：

公共头文件 | HCEHomePublic.h | 头文件
CMS注册模块 | HCEHomeCMS.dll | dll库文件
 | HCEHomeCMS.lib | lib库文件
 | HCEHomeCMS.h | 头文件
预览回放取流模块 | HCEHomeStream.dll | dll库文件
 | HCEHomeStream.lib | lib库文件
 | HCEHomeStream.h | 头文件
报警管理服务器 | HCEHomeAlarm.dll | dll库文件
 | HCEHomeAlarm.lib | lib库文件
 | HCEHomeAlarm.h | 头文件


SDK支持的系统说明

Windows 32位设备网络SDK：
  • Windows 8/Windows 7/Vista/XP以及Windows Server 2012/2008/2003

    Windows 64位设备网络SDK：
  • Windows 10/Windows 8/Windows 7以及Windows Server 2012/2008

    Linux 32位设备网络SDK：
  • GCC版本要求大于等于4.1.2
  • 支持系统：CentOS 5.4、Redhat AS5.4 、ubuntu 9.10、Fedora12及以上版本

    Linux 64位设备网络SDK：
  • GCC版本要求大于等于4.1.2
  • 支持系统：CentOS 5.4、Redhat AS5.4 、SUSE10及以上版本


版本更新

更新版本 更新项目 更新记录
V2.0.0.1
build20180418 		EHOME SDK基线项目 1. 新增获取、设置设备SessionKey信息接口：NET_ECMS_GetDeviceSessionKey_Ehome50 NET_ECMS_SetDeviceSessionKey_Ehome50。
2. 注册监听接口扩展：
1) NET_EHOME_CMS_LISTEN_PARAM(监听参数结构体)：fnCB（设备注册回调函数）中dwDataType(回调数据类型)新增枚举类型：ENUM_EHOME50_DEV_AUTH(Ehome5.0设备认证回调)、ENUM_EHOME50_DEV_SESSIONKEY(Ehome5.0设备Sessionkey回调)、ENUM_EHOME50_DEV_DAS_REQ(Ehome5.0设备重定向请求回调)。
2) 设备注册信息结构体NET_EHOME_DEV_REG_INFO(设备注册信息结构体)使用48个保留字节新增参数：bySessionKey(Ehome5.0设备SessionKey)、sDevName(设备名称)。
V1.2.0.0
build20160902 		EHOME SDK Linux64基线项目 1. 新增控制信令透传接口：NET_ECMS_XMLRemoteControl。
2. CMS预览请求接口扩展：NET_ECMS_StartGetRealStreamV11，支持取流模式设置。
3. 文件查询接口扩展：NET_ECMS_StartFindFile_V11，新增设备日志和报警主机日志查询功能。
4. 新增报警服务器本地回环地址配置功能，对应接口：NET_ECMS_GetSDKLocalCfg、NET_ECMS_SetSDKLocalCfg，配置类型：AMS_ADDRESS。
5. NET_EHOME_ALARM_LISTEN_PARAM(报警监听参数)使用1个保留字节新增参数：byUseCmsPort(是否复用CMS端口)。
6. GPS信息上传类型EHOME_ALARM_GPS和EHOME_ALARM_GPS_DATA合并，保留EHOME_ALARM_GPS，删除EHOME_ALARM_GPS_DATA，NET_EHOME_GPS_INFO(GPS报警信息)使用5个保留字节新增参数：byLocateMode(定位模式)、dwMileage(设备里程数统计)。
V1.1.0.1
build20160220 		EHOME SDK Win32基线项目 1. 新增设备软件能力集，对应接口：NET_ECMS_XMLConfig，能力集获取命令：GetDevAbility，能力集描述：SoftwareCapability。
2. NET_EHOME_DEV_REG_INFO(设备注册信息)使用12个保留字节新增参数：sDeviceSerial(设备序列号)。
3. 实时预览取流协议V4.0扩展：
1) 新增预览请求推流接口：NET_ECMS_StartPushRealStream。
2) NET_EHOME_NEWLINK_CB_MSG(预览连接请求消息)使用12个保留字节新增参数：sDeviceSerial(设备序列号)。
4. 回放取流协议V4.0扩展：
1) 新增回放请求推流接口：NET_ECMS_StartPushPlayBack。
2) 新增停止回放请求接口：NET_ECMS_StopPlayBack。
3) NET_EHOME_PLAYBACK_INFO_OUT(回放请求输出参数)中lSessionID(回放请求会话ID)有效，V4.0版本协议开始支持。
4) NET_EHOME_PLAYBACK_NEWLINK_CB_INFO(回放连接请求消息)扩展：szDeviceID(设备ID)有效，V4.0版本协议开始支持；使用20个保留字节新增参数：lSessionID(回放请求会话ID)、dwChannelNo(设备通道号)、sDeviceSerial(设备序列号)。
5. 新增通过流媒体服务器进行语音对讲的功能接口：
1) CMS注册模块新增接口：
NET_ECMS_StartVoiceWithStmServer、
NET_ECMS_StartPushVoiceStream、
NET_ECMS_StopVoiceTalkWithStmServer。
2) 取流模块新增接口：
NET_ESTREAM_StartListenVoiceTalk、
NET_ESTREAM_StopListenVoiceTalk、
NET_ESTREAM_SetVoiceTalkDataCB、
NET_ESTREAM_SendVoiceTalkData、
NET_ESTREAM_StopVoiceTalk。
6. 查找接口和功能扩展：
1) NET_EHOME_FINDCOND(查找条件参数)：使用5个保留字节新增参数：byStartIndex(查询起始位置)、dwStartIndexEx(扩展后的查询起始位置)；enumSearchType(查找类型)新增枚举类型：ENUM_SEARCH_FLOW_INFO(流量查询)；unionSearchParam(查找类型联合体)新增struFlowParam(流量查询条件)。
2) 扩展单个信息查询接口：NET_ECMS_FindNextFile_V11。
7. NET_EHOME_ALARM_MSG(报警信息)使用12个保留字节新增参数：sDeviceSerial(设备序列号)。
8. 新增OSD显示配置功能（对应接口NET_ECMS_GetDevConfig和NET_ECMS_SetDevConfig）：
命令：NET_EHOME_GET_PIC_CFG、NET_EHOME_SET_PIC_CFG。
9. 新增本地参数配置接口：
1) CMS注册模块：
NET_ECMS_GetSDKLocalCfg、
NET_ECMS_SetSDKLocalCfg。
2) 取流模块：
NET_ESTREAM_GetSDKLocalCfg、
NET_ESTREAM_SetSDKLocalCfg。
3) 报警模块：
NET_EALARM_GetSDKLocalCfg、
NET_EALARM_SetSDKLocalCfg。
10. NET_ESTREAM_SetExceptionCallBack异常回调函数中新增异常类型：EHOME_AUDIOTALK_EXCEPTION(语音对讲取流异常)。
11. NET_EHOME_ALARM_MSG(报警信息)中dwAlarmType新增报警类型取值：EHOME_ALARM_NOTICE_PICURL(图片URL上报)、EHOME_ALARM_NOTIFY_FAIL(异步失败通知)、EHOME_ALARM_GPS_DATA(GPS数据上报)。
12. NET_EHOME_PREVIEWINFO_IN(预览请求输入参数)中dwLinkMode(连接模式)新增取值：2-HRUDP方式。
V1.0.0.3
build20150425 		EHOME SDK Win32基线项目 1. 新增CMS注册模块接口：
NET_ECMS_Init、
NET_ECMS_Fini、
NET_ECMS_GetBuildVersion、
NET_ECMS_SetLogToFile、
NET_ECMS_GetLastError、
NET_ECMS_StartListen、
NET_ECMS_StopListen、
NET_ECMS_ForceLogout、
NET_ECMS_StartGetRealStream、
NET_ECMS_StopGetRealStream、
NET_ECMS_StartFindFile、
NET_ECMS_FindNextFile、
NET_ECMS_StopFindFile、
NET_ECMS_StartPlayBack、
NET_ECMS_GetDevConfig、
NET_ECMS_SetDevConfig、
NET_ECMS_RemoteControl、
NET_ECMS_StartVoiceTalk、
NET_ECMS_SendVoiceTransData、
NET_ECMS_StopVoiceTalk。
2. 新增预览回放取流模块接口：
NET_ESTREAM_Init、
NET_ESTREAM_Fini、
NET_ESTREAM_GetBuildVersion、
NET_ESTREAM_SetLogToFile、
NET_ESTREAM_GetLastError、
NET_ESTREAM_SetExceptionCallBack、
NET_ESTREAM_StartListenPreview、
NET_ESTREAM_SetPreviewDataCB、
NET_ESTREAM_StopPreview、
NET_ESTREAM_StopListenPreview、
NET_ESTREAM_StartListenPlayBack、
NET_ESTREAM_SetPlayBackDataCB、
NET_ESTREAM_StopPlayBack、
NET_ESTREAM_StopListenPlayBack。
3. 新增报警监听模块接口：
NET_EALARM_Init、
NET_EALARM_Fini、
NET_EALARM_GetBuildVersion、
NET_EALARM_SetLogToFile、
NET_EALARM_GetLastError、
NET_EALARM_StartListen、
NET_EALARM_StopListen。


实时预览接口流程

  • 为了保证在CMS服务器收到lSessionID之后设备再开始推流，EHOME协议版本大于等于4.0的设备，修改了实时码流推送机制，需要在预览请求之后再向设备发送开始推流的命令请求，设备接收到命令之后才开始发送实时码流。设备是否支持V4.0版本取流协议，可以通过能力集进行判断，接口：NET_ECMS_XMLConfig，对应能力集<SoftwareCapability>里面的<NewInviteStream>节点。
  • 新的实时取流协议实现方法：
    1）CMS注册服务器通过NET_ECMS_StartListen启动监听，获取设备上下线信息，并且响应设备。
    2）设备成功注册之后，CMS注册服务器调用NET_ECMS_StartGetRealStreamV11发送预览请求给设备，告知设备流媒体服务器地址和端口。设备接收到请求之后自动分配一个SessionID返回给CMS服务器，服务器再调用NET_ECMS_StartPushRealStream向设备发送“推送实时码流”的请求命令，设备接收到该命令之后自动连接流媒体服务器并且向预览请求里面指定的流媒体服务器推送实时码流。
    3）相应的流媒体服务器（VTDU）端，需要调用NET_ESTREAM_StartListenPreview启动预览监听，接收和响应设备连接请求（该接口需要在CMS服务器预览请求之前调用，避免设备连接流媒体服务器失败），并且通过NET_ESTREAM_SetPreviewDataCB设置实时流回调函数来接收设备推送过来的实时流数据。
  • 老的回放协议实现方法：
    1）CMS注册服务器通过NET_ECMS_StartListen启动监听，获取设备上下线信息，并且响应设备。
    2）设备成功注册之后，CMS注册服务器调用NET_ECMS_StartGetRealStreamV11发送预览请求给设备，告知设备流媒体服务器地址和端口。
    3）设备接收到预览请求后，主动连接指定的服务器，并且推送码流数据给该服务器。相应的流媒体服务器（VTDU）端，需要调用NET_ESTREAM_StartListenPreview启动预览监听，接收和响应设备连接请求（该接口需要在CMS服务器预览请求之前调用，避免设备连接流媒体服务器失败），并且通过NET_ESTREAM_SetPreviewDataCB设置实时流回调函数来接收设备推送过来的实时流数据。
  • 数据处理：流媒体服务器接收到实时流数据之后，可以转发客户端、解码显示或者保存文件（即下载录像）等相关操作。该过程需要用户自行实现。

示例代码

为了简化了服务器之间的网络交互，该示例里将CMS和VTDU服务器部署在同一台PC的同一个程序里面。

#include <stdio.h>
#include <Windows.h>
#include "HCEHomeCMS.h"
#include "HCEHomeStream.h"
#include "plaympeg4.h"

LONG lLoginID = -1;
LONG lLinkHandle = -1;
LONG lRealHandle = -1;
FILE *Videofile = NULL;

//////////////////////////////////////////////////////////////////////
//注册回调函数
BOOL CALLBACK RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dwOutLen, void *pInBuffer, DWORD dwInLen, void *pUser)
{
    if (ENUM_DEV_ON == dwDataType)
    {
       NET_EHOME_DEV_REG_INFO *pDevInfo = (NET_EHOME_DEV_REG_INFO *)pOutBuffer;

       if (pDevInfo != NULL)
       {
          lLoginID = lUserID;
          printf("On-line, lUserID: %d, Device ID: %s\n", lLoginID, pDevInfo->byDeviceID);
       }
       //输入参数
       NET_EHOME_SERVER_INFO *pServerInfo = (NET_EHOME_SERVER_INFO *)pInBuffer;
       pServerInfo->dwTimeOutCount = 6; //心跳超时次数
       pServerInfo->dwKeepAliveSec = 15; //心跳间隔
    }
    else if (ENUM_DEV_OFF == dwDataType)
    {
    printf("Off-line, lUserID: %d\n", lUserID);
    NET_ECMS_ForceLogout(lUserID);
    }
    else
    {
    }

    return TRUE;
}

//////////////////////////////////////////////////////////////////////
//实时流数据处理
BOOL InputStreamData(BYTE byDataType, char* pBuffer, int iDataLen)
{
    if(Videofile == NULL)
    {
        Videofile = fopen("Test.mp4","wb");
        printf("Save data to file: Test.mp4!\n");
    }

    if(Videofile!= NULL)
    {
        fwrite(pBuffer,iDataLen,1,Videofile);  //回调实时流直接写文件，保存录像
    }

    //调用播放库解码显示，实现预览
    /*
    if(1 == byDataType)
    {
        if (!PlayM4_GetPort(&m_lPort))
        {
            return FALSE;
        }
        if (!PlayM4_SetStreamOpenMode(m_lPort, STREAME_REALTIME))
        {
            return FALSE;
        }
        // 先输入头,前40个字节
        if(!PlayM4_OpenStream(m_lPort, (unsigned char *)pBuffer, (DWORD)iDataLen, 2*1024*1024))
        {
            return FALSE;
        }
        if(!PlayM4_Play(m_lPort, hWnd))
        {
            return FALSE;
        }
    }
    else
    {
        for (int i=0; i<1000; i++)
        {
            BOOL bRet = PlayM4_InputData(m_lPort,(unsigned char *)pBuffer, (DWORD)iDataLen);
            if (!bRet)
            {
                if ( i >=999)
                {
                    printf("PlayM4_InputData failed, error code: %d!", PlayM4_GetLastError(m_lPort));
                }
                Sleep(2);
            }
        }
    }
    */
    return TRUE;
}

//////////////////////////////////////////////////////////////////////
//实时流数据回调函数
void CALLBACK fnPREVIEW_DATA_CB(LONG lPreviewHandle, NET_EHOME_PREVIEW_CB_MSG *pPreviewCBMsg, void *pUserData)
{
    if (NULL == pPreviewCBMsg)
    {
        return ;
    }
    lRealHandle = lPreviewHandle;
    InputStreamData(pPreviewCBMsg->byDataType, (char*)pPreviewCBMsg->pRecvdata, pPreviewCBMsg->dwDataLen);
}

//////////////////////////////////////////////////////////////////////
//VTDU预览请求回应回调函数
BOOL CALLBACK fnPREVIEW_NEWLINK_CB(LONG lPreviewHandle, NET_EHOME_NEWLINK_CB_MSG *pNewLinkCBMsg, void *pUserData)
{
    lLinkHandle = lPreviewHandle;
    printf("Callback of preview listening, Device ID: %s, Channel: %d\n", pNewLinkCBMsg->szDeviceID, pNewLinkCBMsg->dwChannelNo);

    //预览数据回调参数
    NET_EHOME_PREVIEW_DATA_CB_PARAM struDataCB = {0};
    struDataCB.fnPreviewDataCB = fnPREVIEW_DATA_CB;
    struDataCB.byStreamFormat = 0;//封装格式：0- PS

    if (!NET_ESTREAM_SetPreviewDataCB(lPreviewHandle, &struDataCB))
    {
        printf("NET_ESTREAM_SetPreviewDataCB failed, error code: %d\n", NET_ESTREAM_GetLastError());
        return FALSE;
    }
    printf("NET_ESTREAM_SetPreviewDataCB!\n");

    return TRUE;
}

void main(){
    ////////////////////////////////////////////////////////////////////////
    //流媒体服务器(VTDU)监听取流

    //取流库初始化
    NET_ESTREAM_Init();

    //预览监听参数
    NET_EHOME_LISTEN_PREVIEW_CFG struListen = {0};
    memcpy(struListen.struIPAdress.szIP,"10.16.2.123", sizeof("10.16.2.123"));
    struListen.struIPAdress.wPort = 8003; //流媒体服务器监听端口
    struListen.fnNewLinkCB = fnPREVIEW_NEWLINK_CB; //预览连接请求回调函数
    struListen.pUser = NULL;
    struListen.byLinkMode = 1; //0- TCP方式，1- UDP方式

    //启动预览监听
    LONG lHandle = NET_ESTREAM_StartListenPreview(&struListen);
    if(lHandle < -1)
    {
        printf("NET_ESTREAM_StartListenPreview failed, error code: %d\n", NET_ESTREAM_GetLastError());
        NET_ESTREAM_Fini();
        return;
    }
    printf("NET_ESTREAM_StartListenPreview!\n");
    //////////////////////////////

    ////////////////////////////////////////////////////////////////////////
    //CMS注册和预览请求

    //CMS注册模块初始化
    NET_ECMS_Init();

    //注册监听参数
    NET_EHOME_CMS_LISTEN_PARAM struCMSListenPara = {0};
    memcpy(struCMSListenPara.struAddress.szIP, "0.0.0.0", sizeof("0.0.0.0"));
    struCMSListenPara.struAddress.wPort = 7660;
    struCMSListenPara.fnCB = RegisterCallBack;

    //启动监听，接收设备注册信息
    LONG lListen = NET_ECMS_StartListen(&struCMSListenPara);
    if(lListen < -1)
    {
        printf("NET_ECMS_StartListen failed, error code: %d\n", NET_ECMS_GetLastError());
        NET_ECMS_Fini();
        return;
    }
    printf("NET_ECMS_StartListen!\n");

    while(1)
    {
        Sleep(1000);  //注册成功之后再做后续操作
        if(lLoginID >= 0)
        {
            break;
        }
    }

    //预览请求输入参数
    NET_EHOME_PREVIEWINFO_IN_V11 struPreviewIn = {0};
    struPreviewIn.iChannel = 1; //通道号
    struPreviewIn.dwLinkMode = 1; //0- TCP方式，1- UDP方式
    struPreviewIn.dwStreamType = 0; //码流类型：0- 主码流，1- 子码流, 2- 第三码流
    memcpy(struPreviewIn.struStreamSever.szIP, "10.16.2.123", sizeof("10.16.2.123"));//流媒体服务器IP地址
    struPreviewIn.struStreamSever.wPort = 8003; //流媒体服务器端口，需要跟服务器启动监听端口一致

    //预览请求输出参数
    NET_EHOME_PREVIEWINFO_OUT struPreviewOut = {0};

    //预览请求
    if(!NET_ECMS_StartGetRealStreamV11(lLoginID, &struPreviewIn, &struPreviewOut))
    {
        printf("NET_ECMS_StartGetRealStreamV11 failed, error code: %d\n", NET_ECMS_GetLastError());
        NET_ECMS_Fini();
        return;
    }
    printf("NET_ECMS_StartGetRealStreamV11!\n");

    //预览请求推流输入参数
    NET_EHOME_PUSHSTREAM_IN struPushStreamIn = {0};
    struPushStreamIn.dwSize = sizeof(struPushStreamIn);
    struPushStreamIn.lSessionID = struPreviewOut.lSessionID; //SessionID，预览请求会话ID

    //预览请求推流输出参数
    NET_EHOME_PUSHSTREAM_OUT struPushStreamOut = {0};

    //向设备发送命令请求开始发送实时码流，EHOME协议版本大于等于4.0的设备支持
    if(!NET_ECMS_StartPushRealStream(lLoginID, &struPushStreamIn, &struPushStreamOut))
    {
        printf("NET_ECMS_StartPushRealStream failed, error code: %d\n", NET_ECMS_GetLastError());
        NET_ECMS_Fini();
        return;
    }
    printf("NET_ECMS_StartPushRealStream!\n");

    Sleep(50000);

    ////////////////////////////////////////////////////////////////////////
    //退出

    //释放CMS预览请求资源
    if(!NET_ECMS_StopGetRealStream(lLoginID, struPreviewOut.lSessionID))
    {
        printf("NET_ECMS_StopGetRealStream failed, error code: %d\n", NET_ECMS_GetLastError());
    }

    //CMS停止监听
    if(!NET_ECMS_StopListen(lListen))
    {
        printf("NET_ECMS_StopListen failed, error code: %d\n", NET_ECMS_GetLastError());
    }

    //CMS库反初始化，释放资源
    NET_ECMS_Fini();
    //////////////////////////////

    //VTDU停止预览
    if(lRealHandle >= 0)
    {
        if (!NET_ESTREAM_StopPreview(lRealHandle))
        {
            printf("NET_ESTREAM_StopPreview failed, error code: %d\n", NET_ECMS_GetLastError());
        }
    }

    //VTDU停止预览监听
    if(lLinkHandle >= 0)
    {
        if (!NET_ESTREAM_StopListenPreview(lLinkHandle))
        {
            printf("NET_ESTREAM_StopListenPreview failed, error code: %d\n", NET_ECMS_GetLastError());
        }
    }
    //取流库反初始化，释放资源
    NET_ESTREAM_Fini();

    //释放文件资源
    if(Videofile != NULL)
    {
        fclose(Videofile);
        Videofile = NULL;
    }

    printf("Exit!\n");
}


远程回放接口流程

  • 为了保证在CMS服务器收到lSessionID之后设备再开始推流，EHOME协议版本大于等于4.0的设备，修改了回放码流推送机制，需要在回放请求之后再向设备发送开始推流的命令请求，设备接收到命令之后才开始发送回放码流。设备是否支持V4.0版本回放协议，可以通过能力集进行判断，接口：NET_ECMS_XMLConfig，对应能力集<SoftwareCapability>里面的<NewPlayBack>节点。
  • 新的回放协议实现方法：
    1）CMS注册服务器通过NET_ECMS_StartListen启动监听，获取设备上下线信息，并且响应设备。
    2）设备成功注册之后，CMS注册服务器调用NET_ECMS_StartPlayBack发送回放请求给设备，告知设备流媒体服务器地址和端口，指定时间或者文件名等回放条件。设备接收到请求之后自动分配一个SessionID返回给CMS服务器，服务器再调用NET_ECMS_StartPushPlayBack向设备发送“推送回放码流”的请求命令，设备接收到该命令之后自动连接流媒体服务器并且向回放请求里面指定的流媒体服务器推送回放数据。
    3）相应的流媒体服务器（VTDU）端，需要调用NET_ESTREAM_StartListenPlayBack启动回放监听，接收和响应设备连接请求（该接口需要在CMS服务器回放请求之前调用，避免设备连接流媒体服务器失败），并且通过NET_ESTREAM_SetPlayBackDataCB设置回放数据回调函数来接收设备推送过来的文件流数据。
  • 老的回放协议实现方法：
    1）CMS注册服务器通过NET_ECMS_StartListen启动监听，获取设备上下线信息，并且响应设备。
    2）设备成功注册之后，CMS注册服务器调用NET_ECMS_StartPlayBack发送回放请求给设备，告知设备流媒体服务器地址和端口，指定时间或者文件名等回放条件。
    3）设备接收到回放请求后，主动连接指定的服务器，并且推送码流数据给该服务器。相应的流媒体服务器（VTDU）端，需要调用NET_ESTREAM_StartListenPlayBack启动回放监听，接收和响应设备连接请求（该接口需要在CMS服务器回放请求之前调用，避免设备连接流媒体服务器失败），并且通过NET_ESTREAM_SetPlayBackDataCB设置回放数据回调函数来接收设备推送过来的文件流数据。
  • 数据处理：流媒体服务器接收到文件流数据之后，可以转发客户端、解码显示或者保存文件（即下载录像）等相关操作。该过程需要用户自行实现。

示例代码

为了简化了服务器之间的网络交互，该示例里将CMS和VTDU服务器部署在同一台PC的同一个程序里面。

#include <stdio.h>
#include <Windows.h>
#include "HCEHomeCMS.h"
#include "HCEHomeStream.h"
#include "plaympeg4.h"

LONG lLoginID = -1;
LONG lLinkHandle = -1;
LONG lPlayHandle = -1;
FILE *Videofile = NULL;

//////////////////////////////////////////////////////////////////////
//注册回调函数
BOOL CALLBACK RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dwOutLen, void *pInBuffer, DWORD dwInLen, void *pUser)
{
    if (ENUM_DEV_ON == dwDataType)
    {
       NET_EHOME_DEV_REG_INFO *pDevInfo = (NET_EHOME_DEV_REG_INFO *)pOutBuffer;

       if (pDevInfo != NULL)
       {
          lLoginID = lUserID;
          printf("On-line, lUserID: %d, Device ID: %s\n", lLoginID, pDevInfo->byDeviceID);
       }
       //输入参数
       NET_EHOME_SERVER_INFO *pServerInfo = (NET_EHOME_SERVER_INFO *)pInBuffer;
       pServerInfo->dwTimeOutCount = 6; //心跳超时次数
       pServerInfo->dwKeepAliveSec = 15; //心跳间隔
    }
    else if (ENUM_DEV_OFF == dwDataType)
    {
    printf("Off-line, lUserID: %d\n", lUserID);
    NET_ECMS_ForceLogout(lUserID);
    }
    else
    {
    }

    return TRUE;
}

//////////////////////////////////////////////////////////////////////
//文件流数据处理
BOOL InputStreamData(BYTE byDataType, char* pBuffer, int iDataLen)
{
    if(Videofile == NULL)
    {
        Videofile = fopen("Test.mp4","wb");
        printf("Save data to file: Test.mp4!");
    }

    if(Videofile!= NULL)
    {
        fwrite(pBuffer,iDataLen,1,Videofile);  //回调录像数据直接写文件，即下载录像
    }

    //调用播放库解码显示，实现回放
    /*
    if(1 == byDataType)
    {
        if (!PlayM4_GetPort(&m_lPort))
        {
            return FALSE;
        }
        if (!PlayM4_SetStreamOpenMode(m_lPort, STREAME_REALTIME))
        {
            return FALSE;
        }
        // 先输入头,前40个字节
        if(!PlayM4_OpenStream(m_lPort, (unsigned char *)pBuffer, (DWORD)iDataLen, 2*1024*1024))
        {
            return FALSE;
        }
        if(!PlayM4_Play(m_lPort, hWnd))
        {
            return FALSE;
        }
    }
    else
    {
        for (int i=0; i<1000; i++)
        {
            BOOL bRet = PlayM4_InputData(m_lPort,(unsigned char *)pBuffer, (DWORD)iDataLen);
            if (!bRet)
            {
                if ( i >=999)
                {
                    printf("PlayM4_InputData failed, error code: %d!", PlayM4_GetLastError(m_lPort));
                }
                Sleep(2);
            }
        }
    }
    */
    return TRUE;
}

//////////////////////////////////////////////////////////////////////
//回放数据回调函数
BOOL CALLBACK fnPLAYBACK_DATA_CB(LONG lPlayBackLinkHandle, NET_EHOME_PLAYBACK_DATA_CB_INFO *pDataCBInfo, void *pUserData)
{
    if (NULL == pDataCBInfo)
    {
        return FALSE;
    }
    lPlayHandle = lPlayBackLinkHandle;
    InputStreamData(pDataCBInfo->dwType, (char*)pDataCBInfo->pData, pDataCBInfo->dwDataLen);
    return TRUE;
}

//////////////////////////////////////////////////////////////////////
//VTDU回放请求回应回调函数
BOOL CALLBACK fnPLAYBACK_NEWLINK_CB(LONG lPlayBackLinkHandle, NET_EHOME_PLAYBACK_NEWLINK_CB_INFO  *pNewLinkCBMsg, void *pUserData)
{
    lLinkHandle = lPlayBackLinkHandle;
    printf("Callback of playback listening, Device ID: %s\n", pNewLinkCBMsg->szDeviceID);

    //回放数据回调参数
    NET_EHOME_PLAYBACK_DATA_CB_PARAM struDataCB = {0};
    struDataCB.fnPlayBackDataCB = fnPLAYBACK_DATA_CB;
    struDataCB.byStreamFormat = 0;//封装格式：0- PS

    if (!NET_ESTREAM_SetPlayBackDataCB(lPlayBackLinkHandle, &struDataCB))
    {
        printf("NET_ESTREAM_SetPlayBackDataCB failed, error code: %d\n", NET_ESTREAM_GetLastError());
        return FALSE;
    }
    printf("NET_ESTREAM_SetPlayBackDataCB!\n");

    return TRUE;
}

void main(){
    ////////////////////////////////////////////////////////////////////////
    //流媒体服务器(VTDU)监听取流

    //取流库初始化
    NET_ESTREAM_Init();

    //回放监听参数
    NET_EHOME_PLAYBACK_LISTEN_PARAM struListen = {0};
    memcpy(struListen.struIPAdress.szIP,"10.16.2.123", sizeof("10.16.2.123"));
    struListen.struIPAdress.wPort = 8003; //流媒体服务器监听端口
    struListen.fnNewLinkCB = fnPLAYBACK_NEWLINK_CB; //回放连接请求回调函数
    struListen.pUserData = NULL;
    struListen.byLinkMode = 0; //0- TCP方式，1- UDP方式(UDP保留)

    //启动预览监听
    LONG lHandle = NET_ESTREAM_StartListenPlayBack(&struListen);
    if(lHandle < -1)
    {
        printf("NET_ESTREAM_StartListenPlayBack failed, error code: %d\n", NET_ESTREAM_GetLastError());
        NET_ESTREAM_Fini();
        return;
    }
    printf("NET_ESTREAM_StartListenPlayBack!\n");
    //////////////////////////////

    ////////////////////////////////////////////////////////////////////////
    //CMS注册和预览请求

    //CMS注册模块初始化
    NET_ECMS_Init();

    //注册监听参数
    NET_EHOME_CMS_LISTEN_PARAM struCMSListenPara = {0};
    memcpy(struCMSListenPara.struAddress.szIP, "0.0.0.0", sizeof("0.0.0.0"));
    struCMSListenPara.struAddress.wPort = 7660;
    struCMSListenPara.fnCB = RegisterCallBack;

    //启动监听，接收设备注册信息
    LONG lListen = NET_ECMS_StartListen(&struCMSListenPara);
    if(lListen < -1)
    {
        printf("NET_ECMS_StartListen failed, error code: %d\n", NET_ECMS_GetLastError());
        NET_ECMS_Fini();
        return;
    }
    printf("NET_ECMS_StartListen!\n");

    while(1)
    {
        Sleep(1000);  //注册成功之后再做后续操作
        if(lLoginID >= 0)
        {
            break;
        }
    }

    //查找录像文件
    NET_EHOME_REC_FILE_COND struFindCond = {0};
    struFindCond.dwChannel =1;  //通道号，从1开始
    struFindCond.dwRecType = 0xff; //全部类型
    struFindCond.dwStartIndex = 0;  //查询起始位置
    struFindCond.dwMaxFileCountPer = 5;  //单次搜索最大文件个数

    //查找开始时间
    struFindCond.struStartTime.wYear = (WORD)2015;
    struFindCond.struStartTime.byMonth = (BYTE)5;
    struFindCond.struStartTime.byDay = (BYTE)18;
    struFindCond.struStartTime.byHour = (BYTE)10;
    struFindCond.struStartTime.byMinute = (BYTE)0;
    struFindCond.struStartTime.bySecond = (BYTE)0;

    //查找结束时间
    struFindCond.struStopTime.wYear = (WORD)2015;
    struFindCond.struStopTime.byMonth = (BYTE)5;
    struFindCond.struStopTime.byDay = (BYTE)18;
    struFindCond.struStopTime.byHour = (BYTE)12;
    struFindCond.struStopTime.byMinute = (BYTE)59;
    struFindCond.struStopTime.bySecond = (BYTE)59;

    LONG lSearchType = 0; //查找录像文件
    LONG lFileHandle = NET_ECMS_StartFindFile_V11(lLoginID, lSearchType, &struFindCond, sizeof(struFindCond)); //开始文件查找
    if (lFileHandle < 0)
    {
        printf("NET_ECMS_StartFindFile_V11 failed, error code: %d\n", NET_ECMS_GetLastError());
        NET_ECMS_Fini();
        return;
    }
    printf("NET_ECMS_StartFindFile_V11!\n");

    LONG lRet = -1;
    char csTmp[256] = {0};
    char szFileName[MAX_FILE_NAME_LEN] = {0};

    NET_EHOME_REC_FILE struFileInfo = {0};

    //实际应用可创建线程，在线程里面查找文件
    while(1)
    {
        lRet = NET_ECMS_FindNextFile_V11(lFileHandle, &struFileInfo, sizeof(struFileInfo));//逐个获取查找到的文件信息
        if (lRet == ENUM_GET_NEXT_STATUS_SUCCESS)
        {
            if (struFileInfo.dwFileSize / 1024 == 0)
            {
                sprintf(csTmp,"%d",struFileInfo.dwFileSize);
            }
            else if (struFileInfo.dwFileSize / 1024 > 0 && struFileInfo.dwFileSize /(1024*1024) == 0)
            {
                sprintf(csTmp,"%dK",struFileInfo.dwFileSize/1024);
            }
            else
            {
                sprintf(csTmp,"%dM",struFileInfo.dwFileSize /1024/1024);
            }

            printf("Filename[%s], Filesize[%s], StarTime[%04d-%02d-%02d %02d:%02d:%02d], StopTime[%04d-%02d-%02d %02d:%02d:%02d] \n", \
                struFileInfo.szFileName, csTmp, struFileInfo.struStartTime.wYear, struFileInfo.struStartTime.byMonth, \
                struFileInfo.struStartTime.byDay, struFileInfo.struStartTime.byHour, struFileInfo.struStartTime.byMinute,\
                struFileInfo.struStartTime.bySecond, struFileInfo.struStopTime.byDay, struFileInfo.struStopTime.byHour, \
                struFileInfo.struStopTime.byMinute, struFileInfo.struStopTime.bySecond);//查找到的文件信息

            memcpy(szFileName, struFileInfo.sFileName, MAX_FILE_NAME_LEN);
        }
        else
        {
            if (lRet == ENUM_GET_NETX_STATUS_NEED_WAIT)
            {
                Sleep(5);
                continue;
            }

            if ((lRet == ENUM_GET_NETX_STATUS_NO_FILE) || (lRet == ENUM_GET_NEXT_STATUS_FINISH))
            {
                printf("No more file!\n");
                break;
            }
            else if(lRet == ENUM_GET_NEXT_STATUS_NOT_SUPPORT)
            {
                printf("Device does not support!\n");
                break;
            }
            else
            {
                printf("Failed to find a file, for the server is busy or network failure!\n");
                break;
            }
        }
    }

    //回放请求输入参数
    NET_EHOME_PLAYBACK_INFO_IN struPlayBackIn = {0};
    struPlayBackIn.dwSize = sizeof(struPlayBackIn);
    struPlayBackIn.dwChannel = 1; //通道号
    struPlayBackIn.byPlayBackMode = 0; //回放下载模式：0- 按文件名回放，1- 按时间回放（保留，暂不支持）
    struPlayBackIn.unionPlayBackMode.struPlayBackbyName.dwSeekType = 0; //0-按字节长度计算，1-按秒数计算
    struPlayBackIn.unionPlayBackMode.struPlayBackbyName.dwFileOffset = 0; //dwSeekType为0时，偏移量以字节计算；dwSeekType为1时，偏移量以秒数计算
    struPlayBackIn.unionPlayBackMode.struPlayBackbyName.dwFileSpan = 0; //下载的文件大小，值为0表示下载直到该文件结束为止
    memcpy(struPlayBackIn.unionPlayBackMode.struPlayBackbyName.szFileName, szFileName, MAX_FILE_NAME_LEN);//回放的文件名

    memcpy(struPlayBackIn.struStreamSever.szIP, "10.16.2.123", sizeof("10.16.2.123")); //流媒体服务器IP地址
    struPlayBackIn.struStreamSever.wPort = 8003; //流媒体服务器端口，需要跟服务器启动监听端口一致

    //回放请求输出参数
    NET_EHOME_PLAYBACK_INFO_OUT struPlayBackOut = {0};

    //回放请求
    if(!NET_ECMS_StartPlayBack(lLoginID, &struPlayBackIn, &struPlayBackOut))
    {
        printf("NET_ECMS_StartPlayBack failed, error code: %d\n", NET_ECMS_GetLastError());
        NET_ECMS_Fini();
        return;
    }
    printf("NET_ECMS_StartPlayBack!\n");

    //回放请求推流输入参数
    NET_EHOME_PUSHPLAYBACK_IN struPushPlayBackIn = {0};
    struPushPlayBackIn.dwSize = sizeof(struPushPlayBackIn);
    struPushPlayBackIn.lSessionID = struPlayBackOut.lSessionID; //SessionID，回放请求会话ID

    //回放请求推流输出参数
    NET_EHOME_PUSHPLAYBACK_OUT struPushPlayBackOut = {0};

    //向设备发送命令请求开始发送回放数据，EHOME协议版本大于等于4.0的设备支持
    if(!NET_ECMS_StartPushPlayBack(lLoginID, &struPushPlayBackIn, &struPushPlayBackOut))
    {
        printf("NET_ECMS_StartPushPlayBack failed, error code: %d\n", NET_ECMS_GetLastError());
        NET_ECMS_Fini();
        return;
    }
    printf("NET_ECMS_StartPushPlayBack!\n");

    Sleep(50000);

    ////////////////////////////////////////////////////////////////////////
    //退出

    //CMS停止监听
    if(!NET_ECMS_StopListen(lListen))
    {
        printf("NET_ECMS_StopListen failed, error code: %d\n", NET_ECMS_GetLastError());
    }

    //CMS库反初始化，释放资源
    NET_ECMS_Fini();
    //////////////////////////////

    //VTDU停止回放
    if(lPlayHandle >= 0)
    {
        if (!NET_ESTREAM_StopPlayBack(lPlayHandle))
        {
            printf("NET_ESTREAM_StopPlayBack failed, error code: %d\n", NET_ECMS_GetLastError());
        }
    }

    //VTDU停止回放监听
    if(lLinkHandle >= 0)
    {
        if (!NET_ESTREAM_StopListenPlayBack(lLinkHandle))
        {
            printf("NET_ESTREAM_StopListenPlayBack failed, error code: %d\n", NET_ECMS_GetLastError());
        }
    }
    //取流库反初始化，释放资源
    NET_ESTREAM_Fini();

    //释放文件资源
    if(Videofile != NULL)
    {
        fclose(Videofile);
        Videofile = NULL;
    }

    printf("Exit!\n");
}


报警监听接口流程

  • 注册：CMS通过NET_ECMS_StartListen启动监听，获取设备上下线信息，并且响应设备，告知设备报警服务器地址信息（包括IP地址和端口）。
  • 报警上传：设备接收到注册响应后，获取到报警服务器地址，在发送报警后，将报警信息推送给指定服务器。相应的报警管理服务器（AMS）端，需要调用NET_EALARM_StartListen启动报警监听并设置报警回调函数，在回调函数里面返回设备上传的报警信息。
  • 数据处理：报警服务器接收到报警信息之后，可以推送给客户端或者数据库等相关操作。该过程需要用户自行实现。

    • 示例代码

    为了简化了服务器之间的网络交互，该示例里将CMS和AMS服务器部署在同一台PC的同一个程序里面。

    #include
#include
#include "HCEHomeCMS.h"
#include "HCEHomeAlarm.h"

LONG lLoginID = -1;
LONG lListenHandle = -1;

//////////////////////////////////////////////////////////////////////
//注册回调函数
BOOL CALLBACK RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dwOutLen, void *pInBuffer, DWORD dwInLen, void *pUser)
{
    if (ENUM_DEV_ON == dwDataType)
    {
        NET_EHOME_DEV_REG_INFO *pDevInfo = (NET_EHOME_DEV_REG_INFO *)pOutBuffer;

        if (pDevInfo != NULL)
        {
          lLoginID = lUserID;
          printf("On-line, lUserID: %d, Device ID: %s\n", lLoginID, pDevInfo->byDeviceID);
        }
        //输入参数
        NET_EHOME_SERVER_INFO *pServerInfo = (NET_EHOME_SERVER_INFO *)pInBuffer;
        pServerInfo->dwTimeOutCount = 6; //心跳超时次数
        pServerInfo->dwKeepAliveSec = 15; //心跳间隔
        memcpy(pServerInfo->struUDPAlarmSever.szIP, "10.16.2.123", sizeof("10.16.2.123")); //报警服务器IP地址（TCP协议）
        pServerInfo->struUDPAlarmSever.wPort = 7200; //报警服务器端口（UDP协议），需要和报警服务器启动监听的端口一致
        pServerInfo->dwAlarmServerType = 0;  //报警服务器类型：0- 只支持UDP协议上报，1- 支持UDP、TCP两种协议上报
    }
    else if (ENUM_DEV_OFF == dwDataType)
    {
        printf("Off-line, lUserID: %d\n", lUserID);
        NET_ECMS_ForceLogout(lUserID);
    }
    else
    {
    }

    return TRUE;
}

//////////////////////////////////////////////////////////////////////
//AMS报警回调函数
BOOL CALLBACK AlarmMSGCallBack(LONG lHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, void *pUserData)
{
    lListenHandle = lHandle;

    DWORD dwType = pAlarmMsg->dwAlarmType;  //不同的报警类型(dwAlarmType)，pAlarmInfo对应不同的报警信息类型
    printf("Callback of alarm listening, dwAlarmType[%d]\n", dwType);

    switch(dwType)
    {
    case EHOME_ALARM_UNKNOWN://未知报警信息
        printf("Unknown Alarm Type!\n");
        break;
    case EHOME_ALARM://基本报警信息：移动侦测、视频遮盖、视频丢失、PIR报警、人脸侦测、区域入侵等
        NET_EHOME_ALARM_INFO struAlarmInfo;
        memcpy(&struAlarmInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_ALARM_INFO));
        printf("Basic Alarm: Device ID[%s], szAlarmTime[%s], Alarm Type[%d], Action[%d], VideoChannel[%d]!\n", struAlarmInfo.szDeviceID, \
            struAlarmInfo.szAlarmTime, struAlarmInfo.dwAlarmType, struAlarmInfo.dwAlarmAction, struAlarmInfo.dwVideoChannel);
        break;
    case EHOME_ALARM_HEATMAP_REPORT://热度图报告上传
        NET_EHOME_HEATMAP_REPORT struHeatmapInfo;
        memcpy(&struHeatmapInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_HEATMAP_REPORT));
        printf("Heatmap report: Device ID[%s], StartTime[%s], StopTime[%s], dwVideoChannel[%d]!\n", struHeatmapInfo.byDeviceID, \
            struHeatmapInfo.byStartTime, struHeatmapInfo.byStopTime, struHeatmapInfo.dwVideoChannel);
        break;
    case EHOME_ALARM_FACESNAP_REPORT://人脸抓拍报告上传
        NET_EHOME_FACESNAP_REPORT struFaceSnap;
        memcpy(&struFaceSnap, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_FACESNAP_REPORT));
        printf("Face snap: Device ID[%s], AlarmTime[%s], dwFaceScore[%d], dwVideoChannel[%d]!\n", struFaceSnap.byDeviceID, \
            struFaceSnap.byAlarmTime, struFaceSnap.dwFaceScore, struFaceSnap.dwVideoChannel);
        break;
    case EHOME_ALARM_GPS://GPS信息上传
        NET_EHOME_GPS_INFO struGpsInfo;
        memcpy(&struGpsInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_GPS_INFO));
        printf("GPS info: Device ID[%s], SampleTime[%s], Longitude[%d], Latitude[%d]!\n", struGpsInfo.byDeviceID, \
            struGpsInfo.bySampleTime, struGpsInfo.dwLongitude, struGpsInfo.dwLatitude );
        break;
    case EHOME_ALARM_CID_REPORT://报警主机CID报警信息
        NET_EHOME_CID_INFO struCIDInfo;
        memcpy(&struCIDInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_CID_INFO));
        printf("CID info: Device ID[%s], AlarmTime[%s], CID Code[%d], CID Type[%d], CID Describe[%s]!\n", struCIDInfo.byDeviceID, \
        struCIDInfo.byTriggerTime, struCIDInfo.dwCIDCode, struCIDInfo.dwCIDType, struCIDInfo.byCIDDescribe );
        break;
    default:
        break;
    }

    return TRUE;
}

void main(){

    ////////////////////////////////////////////////////////////////////////
    //报警管理服务器(AMS)报警监听

    //报警库初始化
    NET_EALARM_Init();

    //报警监听参数
    NET_EHOME_ALARM_LISTEN_PARAM struListen = {0};
    memcpy(struListen.struAddress.szIP, "10.16.2.123", sizeof("10.16.2.123"));
    struListen.struAddress.wPort = 7200; //报警服务器监听端口
    struListen.fnMsgCb = AlarmMSGCallBack; //报警回调函数
    struListen.pUserData = NULL;
    struListen.byProtocolType = 1; //0- TCP方式(保留，暂不支持)，1- UDP方式

    //启动报警监听
    LONG lHandle = NET_EALARM_StartListen(&struListen);
    if(lHandle < -1)
    {
        printf("NET_EALARM_StartListen failed, error code: %d\n", NET_EALARM_GetLastError());
        NET_EALARM_Fini();
        return;
    }
    printf("NET_EALARM_StartListen!\n");
    //////////////////////////////

    ////////////////////////////////////////////////////////////////////////
    //CMS注册模块初始化
    NET_ECMS_Init();

    //注册监听参数
    NET_EHOME_CMS_LISTEN_PARAM struCMSListenPara = {0};
    memcpy(struCMSListenPara.struAddress.szIP, "0.0.0.0", sizeof("0.0.0.0"));
    struCMSListenPara.struAddress.wPort = 7660;
    struCMSListenPara.fnCB = RegisterCallBack;

    //启动监听，接收设备注册信息，注册回调函数里面需要发送报警主机IP和端口给设备
    LONG lListen = NET_ECMS_StartListen(&struCMSListenPara);
    if(lListen < -1)
    {
        printf("NET_ECMS_StartListen failed, error code: %d\n", NET_ECMS_GetLastError());
        NET_ECMS_Fini();
        return;
    }
    printf("NET_ECMS_StartListen!\n");

    while(1)
    {
        Sleep(1000);  //注册成功之后再做后续操作
        if(lLoginID >= 0)
        {
            break;
        }
    }

    Sleep(300000); //等待5分钟，接收报警信息

    ////////////////////////////////////////////////////////////////////////
    //退出

    //CMS停止监听
    if(!NET_ECMS_StopListen(lListen))
    {
        printf("NET_ECMS_StopListen failed, error code: %d\n", NET_ECMS_GetLastError());
    }

    //CMS库反初始化，释放资源
    NET_ECMS_Fini();

    //AMS停止报警监听
    if(lListenHandle >= 0)
    {
        if (!NET_EALARM_StopListen(lListenHandle))
        {
            printf("NET_EALARM_StopListen failed, error code: %d\n", NET_ECMS_GetLastError());
        }
    }
    //报警库反初始化，释放资源
    NET_EALARM_Fini();

    printf("Exit!");
}


流媒体服务器对讲模式流程

  • 通过流媒体服务器转发实现语音对讲、转发或者广播，需要设备支持V4.0版本EHOME协议，设备是否支持该功能可以通过能力集进行判断，接口：NET_ECMS_XMLConfig，对应能力集<SoftwareCapability>里面的<VoiceTalkWithStmServer>节点。
  • 通过流媒体服务器转发实现语音对讲、转发或者广播的实现步骤主要有：
    1）CMS注册服务器通过NET_ECMS_StartListen启动监听，获取设备上下线信息，并且响应设备。
    2) 设备成功注册之后，CMS服务器通过调用NET_ECMS_StartVoiceWithStmServer向设备发送语音对讲请求，告知流媒体服务器地址和端口，设备接收到请求之后自动分配一个SessionID返回给CMS服务器，服务器再调用NET_ECMS_StartPushVoiceStream请求设备开始发送语音数据，设备接收到该命令之后自动连接流媒体服务器并且发送语音数据。
    3) 相应的流媒体服务器（VTDU）端，需要调用NET_ESTREAM_StartListenVoiceTalk启动语音对讲连接监听，并且调用NET_ESTREAM_SetVoiceTalkDataCB设置语音数据回调函数进行数据接收。
    4) 流媒体服务器接收到音频数据之后可以自行转发给客户端进行解码播放，客户端的语音数据采集编码之后也需要转发给流媒体服务器，然后流媒体服务器调用NET_ESTREAM_SendVoiceTalkData将语音数据发送给设备。
  • 客户端声音采集和编码或者其他方式获取音频数据，接收到音频数据解码播放或者其他处理，以及CMS服务器、客户端、流媒体服务器之间的交互均需要用户自行实现。音频编码数据格式必须和设备语音对讲音频编码格式一致，设备语音对讲的音频编码格式可以通过NET_ECMS_GetDevConfig(命令:NET_EHOME_GET_DEVICE_INFO)获取，对应结构体NET_EHOME_DEVICE_INFO中的参数dwAudioEncType。

示例代码

为了简化了服务器之间的网络交互，该示例里将CMS和VTDU服务器部署在同一台PC的同一个程序里面。

#include <stdio.h>
#include <Windows.h>
#include "HCEHomeCMS.h"
#include "HCEHomeStream.h"
#include "plaympeg4.h"

LONG lLoginID = -1;
LONG lVoiceLinkHandle = -1;
LONG lVoiceHandle = -1;
FILE AudioTalkfile = NULL;

//////////////////////////////////////////////////////////////////////
//注册回调函数
BOOL CALLBACK RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dwOutLen, void *pInBuffer, DWORD dwInLen, void *pUser)
{
    if (ENUM_DEV_ON == dwDataType)
    {
       NET_EHOME_DEV_REG_INFO *pDevInfo = (NET_EHOME_DEV_REG_INFO *)pOutBuffer;

       if (pDevInfo != NULL)
       {
          lLoginID = lUserID;
          printf("On-line, lUserID: %d, Device ID: %s\n", lLoginID, pDevInfo->byDeviceID);
       }
       //输入参数
       NET_EHOME_SERVER_INFO *pServerInfo = (NET_EHOME_SERVER_INFO *)pInBuffer;
       pServerInfo->dwTimeOutCount = 6; //心跳超时次数
       pServerInfo->dwKeepAliveSec = 15; //心跳间隔
    }
    else if (ENUM_DEV_OFF == dwDataType)
    {
    printf("Off-line, lUserID: %d\n", lUserID);
    NET_ECMS_ForceLogout(lUserID);
    }
    else
    {
    }

    return TRUE;
}

//////////////////////////////////////////////////////////////////////
//语音数据处理
BOOL InputVoiceData(char* pBuffer, int iDataLen)
{
    if(AudioTalkfile == NULL)
    {
        AudioTalkfile = fopen("Test.mp4","wb");
        printf("Save data to file: Test.mp4!\n");
    }

    if(AudioTalkfile!= NULL)
    {
        fwrite(pBuffer,iDataLen,1,AudioTalkfile);  //回调实时流直接写文件，保存录像
    }

    //......其他数据处理，语音数据转发、解码播放需要自行实现

    return TRUE;
}

//////////////////////////////////////////////////////////////////////
//语音数据回调函数
void CALLBACK fnVOICETALK_DATA_CB(LONG lHandle, NET_EHOME_VOICETALK_DATA_CB_INFO *pDataCBInfo, void *pUserData)
{
    if (NULL == pDataCBInfo)
    {
        return ;
    }
    lVoiceHandle = lHandle;
    InputVoiceData((char*)pDataCBInfo->pData, pDataCBInfo->dwDataLen);
}

//////////////////////////////////////////////////////////////////////
//VTDU语音对讲请求回应回调函数
BOOL CALLBACK fnVOICETALK_NEWLINK_CB(LONG lLinkHandle,  NET_EHOME_VOICETALK_NEWLINK_CB_INFO *pNewLinkCBInfo, void *pUserData)
{
    lVoiceLinkHandle = lLinkHandle;
    printf("Callback of two-way audio listening, Device ID: %s, Audio Channel: %d, Audio Type: %d\n", pNewLinkCBInfo->szDeviceID, pNewLinkCBInfo->dwAudioChan, pNewLinkCBInfo->dwEncodeType);

    //语音数据回调参数
    NET_EHOME_VOICETALK_DATA_CB_PARAM struDataCB = {0};
    struDataCB.fnVoiceTalkDataCB = fnVOICETALK_DATA_CB;

    if (!NET_ESTREAM_SetVoiceTalkDataCB(lVoiceLinkHandle, &struDataCB))
    {
        printf("NET_ESTREAM_SetVoiceTalkDataCB failed, error code: %d\n", NET_ESTREAM_GetLastError());
        return FALSE;
    }
    printf("NET_ESTREAM_SetVoiceTalkDataCB!\n");

    return TRUE;
}

//////////////////////////////////////////////////////////////////////
//读取文件语音数据发给设备
DWORD WINAPI TestVoiceTransThread(LPVOID lpArg)
{
    LONG lHanle = (LONG)lpArg;

    FILE *pFile = fopen("ehome_send.audio", "rb"); //打开本地的语音文件，音频格式需要跟设备语音对讲音频格式一致
    if (pFile == NULL)
    {
        return 0;
    }

    char szBuf[80] = {0};  //以G722音频类型为例，每次发送数据80字节
    int nRemainLen = 0;

    int nCurPos = fseek(pFile,0, SEEK_END);
    nRemainLen = ftell(pFile);
    fseek(pFile, nCurPos, SEEK_SET);

    int nSendTotal = 0;
    while(1)
    {
        if (nRemainLen >= 80)
        {
            nSendTotal += 80;
            fread(szBuf, 80, 1, pFile);

            语音对讲数据参数
            NET_EHOME_VOICETALK_DATA struVoicTalkData = {0};
            struVoicTalkData.pSendBuf = (BYTE*)szBuf;
            struVoicTalkData.dwDataLen = 80;

            NET_ESTREAM_SendVoiceTalkData(lHanle, &struVoicTalkData);
            nRemainLen -= 80;
        }
        else
        {
            nSendTotal += nRemainLen;
            fread(szBuf, nRemainLen, 1, pFile);

            语音对讲数据参数
            NET_EHOME_VOICETALK_DATA struVoicTalkData = {0};
            struVoicTalkData.pSendBuf = (BYTE*)szBuf;
            struVoicTalkData.dwDataLen = nRemainLen;

            NET_ESTREAM_SendVoiceTalkData(lHanle, &struVoicTalkData);
            break;
        }
        Sleep(15);
    }

    fclose(pFile);
    return 0;
}

void main(){
    ////////////////////////////////////////////////////////////////////////
    //流媒体服务器(VTDU)监听取流

    //取流库初始化
    NET_ESTREAM_Init();

    //语音对讲监听参数
    NET_EHOME_LISTEN_VOICETALK_CFG struListen = {0};
    memcpy(struListen.struIPAdress.szIP,"10.16.2.123", sizeof("10.16.2.123"));
    struListen.struIPAdress.wPort = 8003; //流媒体服务器监听端口
    struListen.fnNewLinkCB = fnVOICETALK_NEWLINK_CB; //语音对讲连接请求回调函数
    struListen.pUser = NULL;

    //启动语音对讲监听
    LONG lHandle = NET_ESTREAM_StartListenVoiceTalk(&struListen);
    if(lHandle < -1)
    {
        printf("NET_ESTREAM_StartListenVoiceTalk failed, error code: %d\n", NET_ESTREAM_GetLastError());
        NET_ESTREAM_Fini();
        return;
    }
    printf("NET_ESTREAM_StartListenVoiceTalk!\n");
    //////////////////////////////

    ////////////////////////////////////////////////////////////////////////
    //CMS注册和语音对讲请求

    //CMS注册模块初始化
    NET_ECMS_Init();

    //注册监听参数
    NET_EHOME_CMS_LISTEN_PARAM struCMSListenPara = {0};
    memcpy(struCMSListenPara.struAddress.szIP, "0.0.0.0", sizeof("0.0.0.0"));
    struCMSListenPara.struAddress.wPort = 7660;
    struCMSListenPara.fnCB = RegisterCallBack;

    //启动监听，接收设备注册信息
    LONG lListen = NET_ECMS_StartListen(&struCMSListenPara);
    if(lListen < -1)
    {
        printf("NET_ECMS_StartListen failed, error code: %d\n", NET_ECMS_GetLastError());
        NET_ECMS_Fini();
        return;
    }
    printf("NET_ECMS_StartListen!\n");

    while(1)
    {
        Sleep(1000);  //注册成功之后再做后续操作
        if(lLoginID >= 0)
        {
            break;
        }
    }

    //语音对讲请求输入参数
    NET_EHOME_VOICE_TALK_IN struVoiceTalkIn = {0};
    struVoiceTalkIn.dwVoiceChan = 1; //语音对讲通道号
    memcpy(struVoiceTalkIn.struStreamSever.szIP, "10.16.2.123", sizeof("10.16.2.123"));//流媒体服务器IP地址
    struVoiceTalkIn.struStreamSever.wPort = 8003; //流媒体服务器端口，需要跟服务器启动监听端口一致

    //语音对讲请求输出参数
    NET_EHOME_VOICE_TALK_OUT struVoiceTalkOut = {0};

    //CMS语音对讲请求
    if(!NET_ECMS_StartVoiceWithStmServer(lLoginID, &struVoiceTalkIn, &struVoiceTalkOut))
    {
        printf("NET_ECMS_StartVoiceWithStmServer failed, error code: %d\n", NET_ECMS_GetLastError());
        NET_ECMS_Fini();
        return;
    }
    printf("NET_ECMS_StartVoiceWithStmServer!\n");

    //CMS请求开始推流
    NET_EHOME_PUSHVOICE_IN struPushVoiceIn = {0};
    struPushVoiceIn.dwSize = sizeof(struPushVoiceIn);
    struPushVoiceIn.lSessionID = struVoiceTalkOut.lSessionID;
    NET_EHOME_PUSHVOICE_OUT struPushVoiceOut = {0};
    struPushVoiceOut.dwSize = sizeof(struPushVoiceOut);
    if (!NET_ECMS_StartPushVoiceStream(lLoginID, &struPushVoiceIn, &struPushVoiceOut))
    {
        printf("NET_ECMS_StartPushVoiceStream failed, error code: %d\n", NET_ECMS_GetLastError());
        NET_ECMS_Fini();
        return;
    }
    printf("NET_ECMS_StartPushVoiceStream!\n");

    //创建线程从文件读取语音数据发送给设备
    DWORD dwThreadId;
    CreateThread(NULL, 0, LPTHREAD_START_ROUTINE(TestVoiceTransThread), (void*)lVoiceLinkHandle, 0, &dwThreadId);

    Sleep(50000);

    ////////////////////////////////////////////////////////////////////////
    //退出

    //释放CMS语音对讲请求资源
    if(!NET_ECMS_StopVoiceTalkWithStmServer(lLoginID, struVoiceTalkOut.lSessionID))
    {
        printf("NET_ECMS_StopVoiceTalkWithStmServer failed, error code: %d\n", NET_ECMS_GetLastError());
    }

    //CMS停止监听
    if(!NET_ECMS_StopListen(lListen))
    {
        printf("NET_ECMS_StopListen failed, error code: %d\n", NET_ECMS_GetLastError());
    }

    //CMS库反初始化，释放资源
    NET_ECMS_Fini();
    //////////////////////////////

    //VTDU停止语音对讲
    if(lVoiceHandle >= 0)
    {
        if (!NET_ESTREAM_StopVoiceTalk(lVoiceHandle))
        {
            printf("NET_ESTREAM_StopVoiceTalk failed, error code: %d\n", NET_ECMS_GetLastError());
        }
    }

    //VTDU停止语音对讲监听
    if(lVoiceLinkHandle >= 0)
    {
        if (!NET_ESTREAM_StopListenVoiceTalk(lVoiceLinkHandle))
        {
            printf("NET_ESTREAM_StopListenVoiceTalk failed, error code: %d\n", NET_ECMS_GetLastError());
        }
    }
    //取流库反初始化，释放资源
    NET_ESTREAM_Fini();

    //释放文件资源
    if(AudioTalkfile != NULL)
    {
        fclose(AudioTalkfile);
        AudioTalkfile = NULL;
    }

    printf("Exit!\n");
}


注册服务器对讲模式流程

  • 注册：CMS通过NET_ECMS_StartListen启动监听，获取设备上下线信息，并且响应设备。
  • 语音对讲：CMS调用NET_ECMS_StartVoiceTalk启动语音对讲，其中语音对讲参数（NET_EHOME_VOICETALK_PARA）中byVoiceTalk设为0。该功能是CMS服务器和设备之间直接对讲，如果客户端和设备直接对接需要使用语音转发来实现。
  • 语音转发：CMS调用NET_ECMS_StartVoiceTalk启动语音转发，其中语音对讲参数（NET_EHOME_VOICETALK_PARA）中byVoiceTalk设为1。
    1）CMS服务器，启动语音转发时设置回调函数，获取设备发送过来的语音数据，然后将语音数据转发给客户端。
    2）客户端，接收到CMS服务器转发过来的语音数据之后，进行解码播放。
    3）客户端采集声卡声音进行编码，或从音频文件读取音频数据，或其他方式获取音频数据，将音频数据发送给CMS服务器，服务器调用NET_ECMS_SendVoiceTransData将音频数据发送给客户。
  • 音频数据处理：语音对讲方式SDK底层自动实现了音频采集编码和解码播放过程，而如果是语音转发方式，客户端声音采集和编码或者其他方式获取音频数据，以及接收到音频数据解码播放或者其他处理，均需要用户自行实现。音频编码数据格式必须和设备语音对讲音频编码格式一致，设备语音对讲的音频编码格式可以通过NET_ECMS_GetDevConfig(命令:NET_EHOME_GET_DEVICE_INFO)获取，对应结构体NET_EHOME_DEVICE_INFO中的参数dwAudioEncType。

示例代码

#include <stdio.h>
#include <Windows.h>
#include "HCEHomeCMS.h"

LONG lLoginID = -1;
LONG m_lVoiceTalkHandle = -1;

//////////////////////////////////////////////////////////////////////
//注册回调函数
BOOL CALLBACK RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dwOutLen, void *pInBuffer, DWORD dwInLen, void *pUser)
{
    if (ENUM_DEV_ON == dwDataType)
    {
       NET_EHOME_DEV_REG_INFO *pDevInfo = (NET_EHOME_DEV_REG_INFO *)pOutBuffer;

       if (pDevInfo != NULL)
       {
          lLoginID = lUserID;
          printf("On-line, lUserID: %d, Device ID: %s\n", lLoginID, pDevInfo->byDeviceID);
       }
       //输入参数
       NET_EHOME_SERVER_INFO *pServerInfo = (NET_EHOME_SERVER_INFO *)pInBuffer;
       pServerInfo->dwTimeOutCount = 6; //心跳超时次数
       pServerInfo->dwKeepAliveSec = 15; //心跳间隔
    }
    else if (ENUM_DEV_OFF == dwDataType)
    {
    printf("Off-line, lUserID: %d\n", lUserID);
    NET_ECMS_ForceLogout(lUserID);
    }
    else
    {
    }

    return TRUE;
}

//////////////////////////////////////////////////////////////////////
//语音数据回调函数
void CALLBACK g_fVoiceDataCallBack(LONG iVoiceComHandle, char *pRecvDataBuffer, DWORD dwBufSize, DWORD dwEncodeType, BYTE byAudioFlag, void *pUser)
{
    //获取到语音数据自行处理
}

void main(){

    ////////////////////////////////////////////////////////////////////////
    //CMS注册和预览请求

    //CMS注册模块初始化
    NET_ECMS_Init();

    //注册监听参数
    NET_EHOME_CMS_LISTEN_PARAM struCMSListenPara = {0};
    memcpy(struCMSListenPara.struAddress.szIP, "0.0.0.0", sizeof("0.0.0.0"));
    struCMSListenPara.struAddress.wPort = 7660;
    struCMSListenPara.fnCB = RegisterCallBack;

    //启动监听，接收设备注册信息
    LONG lListen = NET_ECMS_StartListen(&struCMSListenPara);
    if(lListen < -1)
    {
        printf("NET_ECMS_StartListen failed, error code: %d\n", NET_ECMS_GetLastError());
        NET_ECMS_Fini();
        return;
    }
    printf("NET_ECMS_StartListen!\n");

    while(1)
    {
        Sleep(1000);  //注册成功之后再做后续操作
        if(lLoginID >= 0)
        {
            break;
        }
    }

    //语音对讲参数
    NET_EHOME_VOICETALK_PARA struVoiceTalkPara = {0};
    struVoiceTalkPara.bNeedCBNoEncData = 0; //需要回调的语音类型：0- 编码后语音，1- 编码前语音(语音转发时不支持)
    struVoiceTalkPara.cbVoiceDataCallBack = g_fVoiceDataCallBack;
    struVoiceTalkPara.dwEncodeType = 0; //设备的语音编码类型：0- G722，1- G711U，2- G711A，3- G726，4- AAC，5- MP2L2，6- PCM
    struVoiceTalkPara.byVoiceTalk = 0; //语音对讲模式：0- 语音对讲，1- 语音转发

    DWORD dwVoiceChan = 1; //语音对讲通道号

    //开始语音对讲
    m_lVoiceTalkHandle = NET_ECMS_StartVoiceTalk(lLoginID, dwVoiceChan, &struVoiceTalkPara);
    if (m_lVoiceTalkHandle < 0)
    {
        printf("NET_ECMS_StartVoiceTalk failed, error code: %d\n", NET_ECMS_GetLastError());
        NET_ECMS_Fini();
        return;
    }

    Sleep(30000);

    //停止语音对讲
    if(!NET_ECMS_StopVoiceTalk(m_lVoiceTalkHandle))
    {
        printf("NET_ECMS_StopVoiceTalk failed, error code: %d\n", NET_ECMS_GetLastError());
        NET_ECMS_Fini();
        return;
    }

    ////////////////////////////////////////////////////////////////////////
    //退出

    //CMS停止监听
    if(!NET_ECMS_StopListen(lListen))
    {
        printf("NET_ECMS_StopListen failed, error code: %d\n", NET_ECMS_GetLastError());
    }

    //CMS库反初始化，释放资源
    NET_ECMS_Fini();

    printf("Exit!\n");
}


NET_ECMS_Init

SDK初始化。

BOOL NET_ECMS_Init(
);

Return Values

TRUE表示成功，FALSE表示失败。

Remarks

  • 如果初始化失败，请确认程序加载SDK库文件（HCEHomeCMS.dll）的路径是否正确，系统环境是否符合要求。
  • 初始化与反初始化接口，必须成对调用。

See Also

NET_ECMS_Fini


NET_ECMS_Fini

SDK反初始化，释放资源。

BOOL NET_ECMS_Fini(
);

Return Values

TRUE表示成功，FALSE表示失败。

Remarks

初始化与反初始化接口，必须成对调用。

See Also

NET_ECMS_Init


NET_ECMS_GetBuildVersion

获取CMS库版本信息。

DWORD NET_ECMS_GetBuildVersion(
);

Return Values

CMS库版本信息，2个高字节表示主版本，2个低字节表示次版本。如0x00030000：表示版本为3.0。


NET_ECMS_SetLogToFile

启用写日志文件。

BOOL NET_ECMS_SetLogToFile(
  LONG    lLogLevel,
  char    *strLogDir,
  BOOL    bAutoDel
);

Parameters

lLogLevel
[in] 日志的等级（默认为0）：0-表示关闭日志，1-表示只输出ERROR错误日志，2-输出ERROR错误信息和DEBUG调试信息，3-输出ERROR错误信息、DEBUG调试信息和INFO普通信息等所有信息
strLogDir
[in] 日志文件的路径，Windows默认值为"C:\\SdkLog\\"
bAutoDel
[in] 是否删除超出的文件数，默认值为TRUE

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

日志文件路径必须是绝对路径，且以"\\"结尾，例如"C:\\SdkLog\\"，建议用户先手动创建文件。若未指定文件路径，则采用默认路径"C:\\SdkLog\\"。 可多次调用该接口创建新的日志文件，同时最多支持创建10个文件，当设置了删除超出的文件时（即bAutoDel为TRUE），那么将会自动删除超出的文件。更改目录时到下一次写文件时才会使用新的目录写文件。


NET_ECMS_GetSDKLocalCfg

获取CMS注册模块本地配置参数。

BOOL NET_ECMS_GetSDKLocalCfg(
  NET_EHOME_LOCAL_CFG_TYPE    enumType,
  void*                       lpOutBuff
);

Parameters

enumType
[in] 要进行本地配置的类型，不同的取值对应不同的参数，详见下表
lpOutBuff
[out] 本地配置参数，不同的类型(enumType)，lpOutBuff对应不同的参数结构：
enumType | 类型值 | 含义 | lpOutBuff
ACTIVE_ACCESS_SECURITY | 0 | 设备主动接入的安全性 | NET_EHOME_LOCAL_ACCESS_SECURITY
AMS_ADDRESS | 1 | 报警服务器本地回环地址 | NET_EHOME_AMS_ADDRESS

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_ECMS_SetSDKLocalCfg


NET_ECMS_SetSDKLocalCfg

设置CMS注册模块本地配置参数。

BOOL NET_ECMS_SetSDKLocalCfg(
  NET_EHOME_LOCAL_CFG_TYPE    enumType,
  void* const                 lpInBuff
);

Parameters

enumType
[in] 要进行本地配置的类型，不同的取值对应不同的参数，详见下表
lpInBuff
[in] 本地配置参数，不同的类型(enumType)，lpInBuff对应不同的参数结构：
enumType | 类型值 | 含义 | lpInBuff
ACTIVE_ACCESS_SECURITY | 0 | 设备主动接入的安全性 | NET_EHOME_LOCAL_ACCESS_SECURITY
AMS_ADDRESS | 1 | 报警服务器本地回环地址 | NET_EHOME_AMS_ADDRESS

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_ECMS_GetSDKLocalCfg


NET_ECMS_GetLastError

返回最后操作的错误码。

DWORD NET_ECMS_GetLastError(
);

Return Values

返回值为错误码。

通用错误码

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOENOUGHPRI | 2 | 权限不足。一般和通道相关，例如有预览通道1权限，无预览通道2权限，即有预览权限但不完全，预览通道2返回此错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_CHANNEL_ERROR | 4 | 通道号错误。设备没有对应的通道号。
NET_DVR_OVER_MAXLINK | 5 | 设备总的连接数超过最大。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_NETWORK_ERRORDATA | 11 | 传送的数据有误。发送给设备或者从设备接收到的数据错误，如远程参数配置时输入设备不支持的值。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_OPERNOPERMIT | 13 | 无此权限。用户对某个功能模块的权限，例如无预览权限用户预览返回此错误。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空，或者参数格式或值不符合要求。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_DVROPRATEFAILED | 29 | 设备操作失败。
NET_DVR_DIR_ERROR | 40 | 路径错误
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_AUDIO_MODE_ERROR | 42 | 声卡模式错误。当前打开声音播放模式与实际设置的模式不符出错。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_SETSOCKET_ERROR | 45 | 设置SOCKET出错。
NET_DVR_MAX_NUM | 46 | 个数达到最大。分配的注册连接数、预览连接数超过SDK支持的最大数。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_GETLOCALIPANDMACFAIL | 53 | 获得本地PC的IP地址或物理地址失败。
NET_DVR_VOICEMONOPOLIZE | 69 | 声卡被独占。
NET_DVR_CREATEDIR_ERROR | 71 | 建立日志文件目录失败。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_USERID_ISUSING | 74 | 注销时用户ID正在进行某操作。
NET_DVR_SOCKETLISTEN_ERROR | 75 | 监听失败。
NET_DVR_CONVERT_SDK_ERROR | 85 | 加载转封装库(SystemTransform.dll)失败。
NET_DVR_FUNCTION_NOT_SUPPORT_OS | 98 | 此功能不支持该操作系统。
NET_DVR_USE_LOG_SWITCH_FILE | 103 | 正在使用日志开关文件。
NET_DVR_PACKET_TYPE_NOT_SUPPORT | 105 | 码流封装格式错误。

语音对讲库错误码

错误类型 | 错误值 | 错误信息
NET_AUDIOINTERCOM_OK | 600 | 没有错误
NET_AUDIOINTECOM_ERR_NOTSUPORT | 601 | 不支持
NET_AUDIOINTECOM_ERR_ALLOC_MEMERY | 602 | 内存申请错误
NET_AUDIOINTECOM_ERR_PARAMETER | 603 | 参数错误
NET_AUDIOINTECOM_ERR_CALL_ORDER | 604 | 调用次序错误
NET_AUDIOINTECOM_ERR_FIND_DEVICE | 605 | 未发现设备
NET_AUDIOINTECOM_ERR_OPEN_DEVICE | 606 | 不能打开设备
NET_AUDIOINTECOM_ERR_NO_CONTEXT | 607 | 设备上下文出错
NET_AUDIOINTECOM_ERR_NO_WAVFILE | 608 | WAV文件出错
NET_AUDIOINTECOM_ERR_INVALID_TYPE | 609 | 无效的WAV参数类型
NET_AUDIOINTECOM_ERR_ENCODE_FAIL | 610 | 编码失败
NET_AUDIOINTECOM_ERR_DECODE_FAIL | 611 | 解码失败
NET_AUDIOINTECOM_ERR_NO_PLAYBACK | 612 | 播放失败
NET_AUDIOINTECOM_ERR_DENOISE_FAIL | 613 | 降噪失败
NET_AUDIOINTECOM_ERR_UNKOWN | 619 | 未知错误


NET_ECMS_GetDeviceSessionKey_Ehome50

获取设备SessionKey信息。

BOOL NET_ECMS_GetDeviceSessionKey_Ehome50(
  LPNET_EHOME_DEV_SESSIONKEY_EHOME50    *deviceKey
);

Parameters

deviceKey
[in] 设备SessionKey信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

See Also

NET_ECMS_SetDeviceSessionKey_Ehome50


NET_ECMS_SetDeviceSessionKey_Ehome50

设置设备SessionKey信息。

BOOL NET_ECMS_SetDeviceSessionKey_Ehome50(
  LPNET_EHOME_DEV_SESSIONKEY_EHOME50    *deviceKey
);

Parameters

deviceKey
[in] 设备SessionKey信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

See Also

NET_ECMS_GetDeviceSessionKey_Ehome50


NET_ECMS_StartListen

启动监听，接收设备注册信息。

LONG NET_ECMS_StartListen(
  LPNET_EHOME_CMS_LISTEN_PARAM    lpCMSListenPara
);

Parameters

lpCMSListenPara
[in] 监听参数

Return Values

-1表示失败，其他值作为NET_ECMS_StopListen等接口的句柄参数。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

See Also

NET_ECMS_StopListen


NET_ECMS_StopListen

停止监听

BOOL NET_ECMS_StopListen(
 LONG    lHandle
);

Parameters

lHandle
[in] 监听句柄，NET_ECMS_StartListen的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_ECMS_StartListen


NET_ECMS_ForceLogout

强制注销

BOOL NET_ECMS_ForceLogout(
 LONG    lUserID
);

Parameters

lUserID
[in] 用户ID，由NET_ECMS_StartListen设置的回调函数中返回

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

调用该接口强制注销后，使用该lUserID标示的设备的请求报文将不再应答，一直到设备有新的注册上来的时候，再次回到由用户决定是否登录成功的逻辑。

See Also

NET_ECMS_StartListen


NET_ECMS_StartGetRealStreamV11

预览请求。

BOOL NET_ECMS_StartGetRealStreamV11(
  LONG                               lUserID,
  LPNET_EHOME_PREVIEWINFO_IN_V11    pPreviewInfoIn,
  LPNET_EHOME_PREVIEWINFO_OUT        pPreviewInfoOut
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
pPreviewInfoIn
[in] 请求预览输入参数
pPreviewInfoOut
[out] 请求预览输出参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

  • 为了保证在CMS服务器收到lSessionID之后设备再开始推流，EHOME协议版本大于等于4.0的设备，修改了实时码流推送机制，需要在预览请求之后再向设备发送开始推流的命令请求，设备接收到命令之后才开始发送实时码流。设备是否支持V4.0版本回放协议，可以通过能力集进行判断，接口：NET_ECMS_XMLConfig，对应能力集<SoftwareCapability>里面的<NewPlayBack>节点。
  • CMS服务器通过NET_ECMS_StartGetRealStreamV11向设备发送预览请求。如果对接的是支持V4.0取流协议的设备，CMS服务器还需要调用NET_ECMS_StartPushRealStream向设备发送“推送实时码流”的请求命令，设备接收到该命令之后才向预览请求里面指定的流媒体服务器推送实时码流。

See Also

NET_ECMS_StartListen NET_ECMS_StartPushRealStream NET_ECMS_StopGetRealStream

Reference Interface

该接口扩展源于

NET_ECMS_StartGetRealStream


NET_ECMS_StartPushRealStream

向设备发送命令请求开始发送实时码流。

BOOL NET_ECMS_StartPushRealStream(
  LONG                          lUserID,
  LPNET_EHOME_PUSHSTREAM_IN     pPushInfoIn,
  LPNET_EHOME_PUSHSTREAM_OUT    pPushInfoOut
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
pPushInfoIn
[in] 预览请求推流输入参数
pPushInfoOut
[out] 预览请求推流输出参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

  • 为了保证在CMS服务器收到lSessionID之后设备再开始推流，EHOME协议版本大于等于4.0的设备，修改了实时码流推送机制，需要在预览请求之后调用该接口向设备发送命令请求，设备接收到命令之后才开始发送实时码流。设备是否支持V4.0版本取流协议，可以通过能力集进行判断，接口：NET_ECMS_XMLConfig，对应能力集<SoftwareCapability>里面的<NewInviteStream>节点。
  • CMS服务器通过NET_ECMS_StartGetRealStreamV11向设备发送预览请求。如果对接的是支持V4.0取流协议的设备，CMS服务器还需要调用NET_ECMS_StartPushRealStream向设备发送“推送实时码流”的请求命令，设备接收到该命令之后才向预览请求里面指定的流媒体服务器推送实时码流。

See Also

NET_ECMS_StartGetRealStreamV11


NET_ECMS_StopGetRealStream

停止预览请求，释放资源。

BOOL NET_ECMS_StopGetRealStream(
  LONG    lUserID,
  LONG    lSessionID
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
lSessionID
[in] SessionID，由NET_ECMS_StartGetRealStream设置的取流请求回调函数返回

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_ECMS_StartGetRealStream


NET_ECMS_StartFindFile_V11

开始文件查找

LONG NET_ECMS_StartFindFile_V11(
  LONG      lUserID,
  LONG      lSearchType,
  LPVOID    pFindCond,
  DWORD     dwCondSize
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
lSearchType
[in] 查询类型，具体定义见下表：
enum tagSEARCH_TYPE{
  ENUM_SEARCH_TYPE_ERR       = -1,
  ENUM_SEARCH_RECORD_FILE    = 0,
  ENUM_SEARCH_PICTURE_FILE   = 1,
  ENUM_SEARCH_FLOW_INFO      = 2,
  ENUM_SEARCH_DEV_LOG        = 3,
  ENUM_SEARCH_ALARM_HOST_LOG = 4
}SEARCH_TYPE_ENUM
ENUM_SEARCH_TYPE_ERR
-1：错误类型
ENUM_SEARCH_RECORD_FILE
0：查找录像文件
ENUM_SEARCH_PICTURE_FILE
1：查找图片文件
ENUM_SEARCH_FLOW_INFO
2：流量查询
ENUM_SEARCH_DEV_LOG
3：设备日志查询
ENUM_SEARCH_ALARM_HOST_LOG
4：报警主机日志查询
pFindCond
[in] 查询条件缓冲区，不同的查询类型对应不同的条件参数：
查找类型(lSearchType) | 含义 | pFindCond对应结构
ENUM_SEARCH_RECORD_FILE | 查找录像文件 | NET_EHOME_REC_FILE_COND
ENUM_SEARCH_PICTURE_FILE | 查找图片文件 | NET_EHOME_PIC_FILE_COND
ENUM_SEARCH_FLOW_INFO | 流量查询 | NET_EHOME_FLOW_COND
ENUM_SEARCH_DEV_LOG | 设备日志查询 | NET_EHOME_DEV_LOG_COND
ENUM_SEARCH_ALARM_HOST_LOG | 报警主机日志查询 | NET_EHOME_ALARM_HOST_LOG_COND
dwCondSize
[in] 查询条件缓冲区大小

Return Values

-1表示失败，其它值作为NET_ECMS_FindNextFile_V11、NET_ECMS_StopFindFile等接口的句柄参数。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_ECMS_StartListen NET_ECMS_FindNextFile_V11 NET_ECMS_StopFindFile

Reference Interface

该接口扩展源于

NET_ECMS_StartFindFile


NET_ECMS_FindNextFile_V11

逐个获取查找到的文件信息。

LONG NET_ECMS_FindNextFile_V11(
  LONG      lHandle,
  LPVOID    pFindData,
  DWORD     dwDataSize
);

Parameters

lHandle
[in] 查找句柄，NET_ECMS_StartFindFile的返回值
pFindData
[out] 返回的信息数据，不同的查找功能（NET_ECMS_StartFindFile_V11接口中指定的lSearchType查找类型）对应不同的返回结果：
查找类型(lSearchType) | 含义 | pFindData对应结构
ENUM_SEARCH_RECORD_FILE | 查找录像文件 | NET_EHOME_REC_FILE
ENUM_SEARCH_PICTURE_FILE | 查找图片文件 | NET_EHOME_PIC_FILE
ENUM_SEARCH_FLOW_INFO | 流量查询 | NET_EHOME_FLOW_INFO
ENUM_SEARCH_DEV_LOG | 设备日志查询 | NET_EHOME_DEV_LOG
ENUM_SEARCH_ALARM_HOST_LOG | 报警主机日志查询 | NET_EHOME_ALARM_HOST_LOG
dwDataSize
[in] 查询结果信息数据长度

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

宏定义 | 宏定义值 | 含义
ENUM_GET_NEXT_STATUS_SUCCESS | 1000 | 成功查找到一条数据，处理完本次数据后需要再次调用FindNext获取下一条数据
ENUM_GET_NETX_STATUS_NO_FILE | 1001 | 未查找到文件
NUM_GET_NETX_STATUS_NEED_WAIT | 1002 | 正在查找请等待，等待后继续调用FindNext函数
ENUM_GET_NEXT_STATUS_FINISH | 1003 | 没有更多的文件，查找结束
ENUM_GET_NEXT_STATUS_FAILED | 1004 | 查找文件时异常
ENUM_GET_NEXT_STATUS_NOT_SUPPORT | 1005 | 设备不支持该操作，图片查找会返回这个状态，目前设备没有实现图片查找的协议

Remarks

在调用该接口获取查找之前，必须先调用NET_ECMS_StartFindFile指定查找条件并且得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取查找到的全部信息，需要循环调用此接口直到查找结束。

See Also

NET_ECMS_StartFindFile_V11

Reference Interface

该接口扩展源于

NET_ECMS_FindNextFile


NET_ECMS_StopFindFile

停止文件查找，释放资源

BOOL NET_ECMS_StopFindFile(
  LONG    lHandle
);

Parameters

lHandle
[in] 查找句柄，NET_ECMS_StartFindFile的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_ECMS_StartFindFile_V11 NET_ECMS_StartFindFile


NET_ECMS_StartPlayBack

回放请求

BOOL NET_ECMS_StartPlayBack(
  LONG                             lUserID,
  LPNET_EHOME_PLAYBACK_INFO_IN     pPlayBackInfoIn
  LPNET_EHOME_PLAYBACK_INFO_OUT    pPlayBackInfoOut
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
pPlayBackInfoIn
[in] 回放请求输入参数
pPlayBackInfoOut
[out] 回放请求输出参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

  • 为了保证在CMS服务器收到lSessionID之后设备再开始推流，EHOME协议版本大于等于4.0的设备，修改了回放码流推送机制，需要在回放请求之后再向设备发送开始推流的命令请求，设备接收到命令之后才开始发送回放码流。设备是否支持V4.0版本回放协议，可以通过能力集进行判断，接口：NET_ECMS_XMLConfig，对应能力集<SoftwareCapability>里面的<NewPlayBack>节点。
  • CMS服务器通过NET_ECMS_StartPlayBack向设备发送预览请求。如果是支持V4.0回放协议的设备会自动分配一个SessionID返回给CMS服务器，然后CMS服务器需要调用NET_ECMS_StartPushPlayBack向设备发送“推送回放码流”的请求命令，设备接收到该命令之后才向回放请求里面指定的流媒体服务器推送回放码流。

See Also

NET_ECMS_StartListen NET_ECMS_StartPushPlayBack NET_ECMS_StopPlayBack


NET_ECMS_StartPushPlayBack

向设备发送命令请求开始发送回放码流。

BOOL NET_ECMS_StartPushPlayBack(
  LONG                            lUserID,
  LPNET_EHOME_PUSHPLAYBACK_IN     pPushInfoIn,
  LPNET_EHOME_PUSHPLAYBACK_OUT    pPushInfoOut
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
pPushInfoIn
[in] 回放请求推流输入参数
pPushInfoOut
[out] 回放请求推流输出参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

  • 为了保证在CMS服务器收到lSessionID之后设备再开始推流，EHOME协议版本大于等于4.0的设备，修改了回放码流推送机制，需要在回放请求之后调用该接口向设备发送命令请求，设备接收到命令之后才开始发送回放码流。设备是否支持V4.0版本回放协议，可以通过能力集进行判断，接口：NET_ECMS_XMLConfig，对应能力集<SoftwareCapability>里面的<NewPlayBack>节点。
  • CMS服务器通过NET_ECMS_StartPlayBack向设备发送预览请求。如果是支持V4.0回放协议的设备会自动分配一个SessionID返回给CMS服务器，然后CMS服务器需要调用NET_ECMS_StartPushPlayBack向设备发送“推送回放码流”的请求命令，设备接收到该命令之后才向回放请求里面指定的流媒体服务器推送回放码流。

See Also

NET_ECMS_StartGetRealStream


NET_ECMS_StopPlayBack

停止回放请求，释放资源。

BOOL NET_ECMS_StopPlayBack(
  LONG    lUserID,
  LONG    lSessionID
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
lSessionID
[in] SessionID，由NET_ECMS_StartPlayBack接口的输出参数返回

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_ECMS_StartPlayBack


NET_ECMS_GetDevConfig

获取设备参数

BOOL NET_ECMS_GetDevConfig(
  LONG                  lUserID,
  DWORD                 dwCommand,
  LPNET_EHOME_CONFIG    lpConfig,
  DWORD                 dwConfigSize
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
dwCommand
[in] 配置命令，具体定义见“Remarks”说明
lpConfig
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明
dwConfigSize
[in] lpConfig指向的结构体大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

获取配置参数时，lpConfig结构体中的pInBuf无效，设为NULL。对于不同的配置功能（dwCommand），lpConfig中pCondBuf、pOutBuf分别对应不同的内容，具体如下表所示：

dwCommand | 含义 | pCondBuf | pOutBuf | 宏定义值
NET_EHOME_GET_DEVICE_INFO | 获取设备信息 | NULL | NET_EHOME_DEVICE_INFO | 1
NET_EHOME_GET_VERSION_INFO | 获取版本信息 | NULL | NET_EHOME_VERSION_INFO | 2
NET_EHOME_GET_DEVICE_CFG | 获取设备基本参数 | NULL | NET_EHOME_DEVICE_CFG | 3
NET_EHOME_GET_NETWORK_CFG | 获取网络参数 | NULL | NET_EHOME_NETWORK_CFG | 5
NET_EHOME_GET_COMPRESSION_CFG | 获取压缩参数 | NET_EHOME_COMPRESSION_COND | NET_EHOME_COMPRESSION_CFG | 7
NET_EHOME_GET_IMAGE_CFG | 获取图像参数 | 4字节通道号 | NET_EHOME_IMAGE_CFG | 9
NET_EHOME_GET_ALARMIN_CFG | 获取报警输入参数 | NET_EHOME_ALARMIN_COND | NET_EHOME_ALARMIN_CFG | 11
NET_EHOME_GET_ALARM_TIME_CFG | 获取报警布防时间参数 | NET_EHOME_ALARM_TIME_COND | NET_EHOME_ALARM_TIME_CFG | 13
NET_EHOME_GET_ALARMOUT_CFG | 获取报警输出参数 | 4字节报警输出号，从1开始 | NET_EHOME_ALARMOUT_CFG | 15
NET_EHOME_GET_ALARMOUT_STATUS_CFG | 获取报警输出状态参数 | 4字节报警输出号，从1开始 | NET_EHOME_ALARMOUT_STATUS_CFG | 17
NET_EHOME_GET_PIC_CFG | 获取OSD显示配置 | 4字节通道号 | NET_EHOME_PIC_CFG | 22

See Also

NET_ECMS_StartListen NET_ECMS_SetDevConfig


NET_ECMS_SetDevConfig

设备设备参数

BOOL NET_ECMS_SetDevConfig(
  LONG                  lUserID,
  DWORD                 dwCommand,
  LPNET_EHOME_CONFIG    lpConfig,
  DWORD                 dwConfigSize
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
dwCommand
[in] 配置命令，具体定义见“Remarks”说明
lpConfig
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明
dwConfigSize
[in] lpConfig指向的结构体大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

设置设备参数时，lpConfig结构体中的pOutBuf无效，设为NULL。对于不同的配置功能（dwCommand），lpConfig中pCondBuf、pInBuf分别对应不同的内容，具体如下表所示：

dwCommand | 含义 | pCondBuf | pInBuf | 宏定义值
NET_EHOME_SET_DEVICE_CFG | 设置设备基本参数 | NULL | NET_EHOME_DEVICE_CFG | 4
NET_EHOME_SET_NETWORK_CFG | 设置网络参数 | NULL | NET_EHOME_NETWORK_CFG | 6
NET_EHOME_SET_COMPRESSION_CFG | 设置压缩参数 | NET_EHOME_COMPRESSION_COND | NET_EHOME_COMPRESSION_CFG | 8
NET_EHOME_SET_IMAGE_CFG | 设置图像参数 | 4字节通道号 | NET_EHOME_IMAGE_CFG | 10
NET_EHOME_SET_ALARMIN_CFG | 设置报警输入参数 | NET_EHOME_ALARMIN_COND | NET_EHOME_ALARMIN_CFG | 12
NET_EHOME_SET_ALARM_TIME_CFG | 设置报警布防时间参数 | NET_EHOME_ALARM_TIME_COND | NET_EHOME_ALARM_TIME_CFG | 14
NET_EHOME_SET_ALARMOUT_CFG | 设置报警输出参数 | 4字节报警输出号，从1开始 | NET_EHOME_ALARMOUT_CFG | 16
NET_EHOME_SET_ALARMOUT_STATUS_CFG | 设置报警输出状态参数 | 4字节报警输出号，从1开始 | NET_EHOME_ALARMOUT_STATUS_CFG | 18
NET_EHOME_SET_PIC_CFG | 设置OSD显示配置 | 4字节通道号 | NET_EHOME_PIC_CFG | 23

See Also

NET_ECMS_StartListen NET_ECMS_GetDevConfig


NET_ECMS_RemoteControl

远程控制

BOOL NET_ECMS_RemoteControl(
  LONG                             lUserID,
  DWORD                            dwCommand,
  LPNET_EHOME_REMOTE_CTRL_PARAM    lpCtrlParam
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpCtrlParam
[in] 控制参数，不同的控制功能对应不同的参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

不同的控制功能（dwCommand）对应不同的参数（lpCtrlParam中的lpCondBuffer、lpInbuffer），具体如下表所示：

dwCommand | 含义 | lpCondBuffer | lpInbuffer | 宏定义值
NET_EHOME_MANUAL_IOOUT | 手动控制IO输出 | NULL | NET_EHOME_MANUAL_IOOUT_CTRL | 19
NET_EHOME_PTZ_CTRL | 云镜控制 | 4字节(LONG)通道号 | NET_EHOME_PTZ_PARAM | 1000
NET_EHOME_PRESET_CTRL | 预置点操作 | 4字节(LONG)通道号 | NET_EHOME_PRESET_PARAM | 1001
NET_EHOME_PZIN | 3D框选放大缩小 | 4字节(LONG)通道号 | NET_EHOME_PZIN_PARAM | 1002
NET_EHOME_PTRACK | 3D点击居中 | 4字节(LONG)通道号 | NET_EHOME_POINT | 1003

See Also

NET_ECMS_StartListen


NET_ECMS_StartVoiceWithStmServer

语音对讲请求

BOOL NET_ECMS_StartVoiceWithStmServer(
  LONG                        lUserID,
  NET_EHOME_VOICE_TALK_IN     *lpVoiceTalkIn
  NET_EHOME_VOICE_TALK_OUT    *lpVoiceTalkOut
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
lpVoiceTalkIn
[in] 语音对讲请求输入参数
lpVoiceTalkOut
[out] 语音对讲请求输出参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

  • 通过流媒体服务器转发实现语音对讲、转发或者广播，需要设备支持V4.0版本EHOME协议，设备是否支持该功能可以通过能力集进行判断，接口：NET_ECMS_XMLConfig，对应能力集<SoftwareCapability>里面的<VoiceTalkWithStmServer>节点。
  • 通过流媒体服务器转发实现语音对讲、转发或者广播的实现步骤主要有：
    1）CMS注册服务器通过NET_ECMS_StartListen启动监听，获取设备上下线信息，并且响应设备。
    2) 设备成功注册之后，CMS服务器通过调用该接口向设备发送语音对讲请求，告知流媒体服务器地址和端口，设备接收到请求之后自动分配一个SessionID返回给CMS服务器，服务器再调用NET_ECMS_StartPushVoiceStream请求设备开始发送语音数据，设备接收到该命令之后自动连接流媒体服务器并且发送语音数据。
    3) 相应的流媒体服务器（VTDU）端，需要调用NET_ESTREAM_StartListenVoiceTalk启动语音对讲连接监听，并且调用NET_ESTREAM_SetVoiceTalkDataCB设置语音数据回调函数进行数据接收。
    4) 流媒体服务器接收到音频数据之后可以自行转发给客户端进行解码播放，客户端的语音数据采集编码之后也需要转发给流媒体服务器，然后流媒体服务器调用NET_ESTREAM_SendVoiceTalkData将语音数据发送给设备。
  • 客户端声音采集和编码或者其他方式获取音频数据，接收到音频数据解码播放或者其他处理，以及CMS服务器、客户端、流媒体服务器之间的交互均需要用户自行实现。音频编码数据格式必须和设备语音对讲音频编码格式一致，设备语音对讲的音频编码格式可以通过NET_ECMS_GetDevConfig(命令:NET_EHOME_GET_DEVICE_INFO)获取，对应结构体NET_EHOME_DEVICE_INFO中的参数dwAudioEncType。

See Also

NET_ECMS_StopVoiceTalkWithStmServer


NET_ECMS_StartPushVoiceStream

向设备发送命令请求开始发送语音数据。

BOOL NET_ECMS_StartPushVoiceStream(
  LONG                         lUserID,
  LPNET_EHOME_PUSHVOICE_IN     lpPushParamIn,
  LPNET_EHOME_PUSHVOICE_OUT    lpPushParamOut
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
lpPushParamIn
[in] 语音对讲请求推流输入参数
lpPushParamOut
[out] 语音对讲请求推流输出参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

  • 设备是否支持V4.0版本语音对讲协议，可以通过能力集进行判断，接口：NET_ECMS_XMLConfig，对应能力集<SoftwareCapability>里面的<VoiceTalkWithStmServer>节点。
  • CMS服务器通过NET_ECMS_StartVoiceWithStmServer向设备发送语音对讲请求，设备分配一个SessionID返回给CMS服务器，然后CMS服务器调用该接口向设备发送“推送语音数据”的请求命令，设备接收到命令之后向语音对讲请求里面指定的流媒体服务器推送语音数据。

See Also

NET_ECMS_StartVoiceWithStmServer


NET_ECMS_StopVoiceTalkWithStmServer

停止语音对讲请求，释放资源。

BOOL NET_ECMS_StopVoiceTalkWithStmServer(
  LONG    lUserID,
  LONG    lSessionID
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
lSessionID
[in] SessionID，由NET_ECMS_StartVoiceWithStmServer接口中的输出参数返回

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_ECMS_StartVoiceWithStmServer


NET_ECMS_StartVoiceTalk

开始语音对讲或转发

LONG NET_ECMS_StartVoiceTalk(
  LONG                        lUserID,
  DWORD                       dwVoiceChan,
  NET_EHOME_VOICETALK_PARA    *pVoiceTalkPara
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
dwVoiceChan
[in] 语音对讲通道号
pVoiceTalkPara
[in] 语音对讲或转发相关参数

Return Values

-1表示失败，其它值作为NET_ECMS_StopVoiceTalk等接口的句柄参数。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

  • Windows 7操作系统下，如果不外接音频设备，该接口将返回失败。
  • 选择语音转发模式（pVoiceTalkPara中byVoiceTalk设为1）时，通过设置的回调函数（fVoiceDataCallBack）获取设备端的音频数据，然后自己进行解码播放或者其他处理。音频数据采集和编码（用户自己实现）后，通过NET_ECMS_SendVoiceTransData接口发送给设备。

See Also

NET_ECMS_SendVoiceTransData NET_ECMS_StopVoiceTalk


NET_ECMS_SendVoiceTransData

语音转发向设备发送数据

BOOL NET_ECMS_SendVoiceTransData(
  LONG     iVoiceHandle,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

iVoiceHandle
[in] 语音转发句柄，NET_ECMS_StartVoiceTalk的返回值
pSendBuf
[in] 存放语音数据的缓冲区
dwBufSize
[in] 缓冲区数据大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

  • 该接口实现将获取到的经过编码后的音频数据转发给设备，编码格式需要跟设备语音对讲的音频编码格式保存一致。设备语音对讲的音频编码格式可以通过NET_ECMS_GetDevConfig(命令:NET_EHOME_GET_DEVICE_INFO)获取，对应结构体NET_EHOME_DEVICE_INFO中的参数dwAudioEncType。
  • 当前设备语音对讲是G722音频编码类型时，每次发送的数据为80字节；当前是G711音频编码类型时，每次发送的数据为160字节。

See Also

NET_ECMS_StartVoiceTalk


NET_ECMS_StopVoiceTalk

停止语音对讲或转发

BOOL NET_ECMS_StopVoiceTalk(
  LONG    iVoiceHandle
);

Parameters

iVoiceHandle
[in] 语音对讲或语音转发句柄，NET_ECMS_StartVoiceTalk的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_ECMS_StartVoiceTalk


NET_ECMS_XMLConfig

透传接口

BOOL NET_ECMS_XMLConfig(
  LONG                   lUserID,
  LPNET_EHOME_XML_CFG    pXmlCfg,
  DWORD                  dwConfigSize
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
pXmlCfg
[in] 配置参数
dwConfigSize
[in] pXmlCfg指向的结构体大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

通过该接口可以直接透传EHOME协议命令，SDK只做发送和接收，不对数据进行修改校验。能力集获取对应输出输出参数如下表所示：

pXmlCfg->pCmdBuf | GETDEVICECONFIG
pXmlCfg->pInBuf | <Params> <ConfigCmd>GetDevAbility</ConfigCmd> <!--信令名，获取设备能力集--> <ConfigParam1>1</ConfigParam1> <!--参数1，能力集类型：1-软件能力集--> <ConfigParam2></ConfigParam2> <!--参数2，无效--> <ConfigParam3></ConfigParam3> <!--参数3，无效--> <ConfigParam4></ConfigParam4> <!--参数4，无效--> </Params>
pXmlCfg->pOutBuf | <Params> <ConfigXML> <SoftwareCapability> <PlayByTimeSupport>0</PlayByTimeSupport> <!--是否支持按时间回放录像--> <NewInviteStream> <!--新的取流协议，需要调用NET_ECMS_StartPushRealStream后，设备才开始推送码流，FALSE表示不支持4.0取流协议--> <HRUDP>TRUE</HRUDP> <!--TRUE表示支持码流可靠传输，FALSE表示不支持码流可靠传输--> </NewInviteStream> <P2PLinkNum>0</P2PLinkNum > <!--P2PLinkNum：支持P2P直连的路数，没有节点，或者值为0表示不支持P2P直连--> <VoiceTalkWithStmServer>TRUE</VoiceTalkWithStmServer> <!--TRUE表示与流媒体服务器进行对讲，FALSE表示不支持新协议--> <NewPlayBack>TRUE</NewPlayBack> <!--TRUE支持新的回放协议，需要调用NET_ECMS_StartPushPlayBack后才开始推送录像数据。FALSE表示不支持--> </SoftwareCapability> </ConfigXML> </Params>

See Also

NET_ECMS_StartListen


NET_ECMS_XMLConfig

参数配置透传

BOOL NET_ECMS_XMLConfig(
  LONG                   lUserID,
  LPNET_EHOME_XML_CFG    pXmlCfg,
  DWORD                  dwConfigSize
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
pXmlCfg
[in] 配置参数
dwConfigSize
[in] pXmlCfg指向的结构体大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

SDK只做发送和接收，不对数据进行修改校验。

See Also

NET_ECMS_StartListen


NET_ECMS_XMLRemoteControl

CMS控制信令透传

BOOL NET_ECMS_XMLRemoteControl(
  LONG                                 lUserID,
  LPNET_EHOME_XML_REMOTE_CTRL_PARAM    lpCtrlParam,
  DWORD                                dwCtrlSize
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
lpCtrlParam
[in] 控制参数
dwCtrlSize
[in] 控制参数缓冲大小，lpCtrlParam指向的结构体大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

该接口支持透传EHOME协议的控制命令（不支持获取、查询相关的命令），会解析设备返回的状态值，状态值成功才会返回成功。

See Also

NET_ECMS_StartListen


NET_ESTREAM_Init

取流库初始化。

BOOL NET_ESTREAM_Init(
);

Return Values

TRUE表示成功，FALSE表示失败。

Remarks

  • 如果初始化失败，请确认程序加载SDK库文件（HCEHomeStream.dll）的路径是否正确，系统环境是否符合要求。
  • 初始化与反初始化接口，必须成对调用。

See Also

NET_ESTREAM_Fini


NET_ESTREAM_Fini

取流库反初始化，释放资源。

BOOL NET_ESTREAM_Fini(
);

Return Values

TRUE表示成功，FALSE表示失败。

Remarks

初始化与反初始化接口，必须成对调用。

See Also

NET_ESTREAM_Init


NET_ESTREAM_GetBuildVersion

获取取流库版本信息。

DWORD NET_ESTREAM_GetBuildVersion(
);

Return Values

取流库版本信息，2个高字节表示主版本，2个低字节表示次版本。如0x00030000：表示版本为3.0。


NET_ESTREAM_SetLogToFile

取流库启用写日志文件。

BOOL NET_ESTREAM_SetLogToFile(
  LONG    lLogLevel,
  char    *strLogDir,
  BOOL    bAutoDel
);

Parameters

lLogLevel
[in] 日志的等级（默认为0）：0-表示关闭日志，1-表示只输出ERROR错误日志，2-输出ERROR错误信息和DEBUG调试信息，3-输出ERROR错误信息、DEBUG调试信息和INFO普通信息等所有信息
strLogDir
[in] 日志文件的路径，Windows默认值为"C:\\SdkLog\\"
bAutoDel
[in] 是否删除超出的文件数，默认值为TRUE

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ESTREAM_GetLastError获取错误号，通过错误号判断原因。

Remarks

日志文件路径必须是绝对路径，且以"\\"结尾，例如"C:\\SdkLog\\"，建议用户先手动创建文件。若未指定文件路径，则采用默认路径"C:\\SdkLog\\"。 可多次调用该接口创建新的日志文件，同时最多支持创建10个文件，当设置了删除超出的文件时（即bAutoDel为TRUE），那么将会自动删除超出的文件。更改目录时到下一次写文件时才会使用新的目录写文件。


NET_ESTREAM_SetSDKLocalCfg

设置取流模块本地配置参数。

BOOL NET_ESTREAM_SetSDKLocalCfg(
  NET_EHOME_LOCAL_CFG_TYPE    enumType,
  void* const                 lpInBuff
);

Parameters

enumType
[in] 要进行本地配置的类型，不同的取值对应不同的参数，详见下表
lpInBuff
[in] 本地配置参数，不同的类型(enumType)，lpInBuff对应不同的参数结构：
enumType | 类型值 | 含义 | lpInBuff
ACTIVE_ACCESS_SECURITY | 0 | 设备主动接入的安全性 | NET_EHOME_LOCAL_ACCESS_SECURITY

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ESTREAM_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_ESTREAM_GetSDKLocalCfg


NET_ESTREAM_GetSDKLocalCfg

获取取流模块本地配置参数。

BOOL NET_ESTREAM_GetSDKLocalCfg(
  NET_EHOME_LOCAL_CFG_TYPE    enumType,
  void*                       lpOutBuff
);

Parameters

enumType
[in] 要进行本地配置的类型，不同的取值对应不同的参数，详见下表
lpOutBuff
[out] 本地配置参数，不同的类型(enumType)，lpOutBuff对应不同的参数结构：
enumType | 类型值 | 含义 | lpOutBuff
ACTIVE_ACCESS_SECURITY | 0 | 设备主动接入的安全性 | NET_EHOME_LOCAL_ACCESS_SECURITY

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ESTREAM_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_ESTREAM_SetSDKLocalCfg


NET_ESTREAM_GetLastError

返回最后操作的错误码。

DWORD NET_ESTREAM_GetLastError(
);

Return Values

返回值为错误码。

通用错误码

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOENOUGHPRI | 2 | 权限不足。一般和通道相关，例如有预览通道1权限，无预览通道2权限，即有预览权限但不完全，预览通道2返回此错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_CHANNEL_ERROR | 4 | 通道号错误。设备没有对应的通道号。
NET_DVR_OVER_MAXLINK | 5 | 设备总的连接数超过最大。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_NETWORK_ERRORDATA | 11 | 传送的数据有误。发送给设备或者从设备接收到的数据错误，如远程参数配置时输入设备不支持的值。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_OPERNOPERMIT | 13 | 无此权限。用户对某个功能模块的权限，例如无预览权限用户预览返回此错误。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空，或者参数格式或值不符合要求。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_DVROPRATEFAILED | 29 | 设备操作失败。
NET_DVR_DIR_ERROR | 40 | 路径错误
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_AUDIO_MODE_ERROR | 42 | 声卡模式错误。当前打开声音播放模式与实际设置的模式不符出错。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_SETSOCKET_ERROR | 45 | 设置SOCKET出错。
NET_DVR_MAX_NUM | 46 | 个数达到最大。分配的注册连接数、预览连接数超过SDK支持的最大数。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_GETLOCALIPANDMACFAIL | 53 | 获得本地PC的IP地址或物理地址失败。
NET_DVR_VOICEMONOPOLIZE | 69 | 声卡被独占。
NET_DVR_CREATEDIR_ERROR | 71 | 建立日志文件目录失败。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_USERID_ISUSING | 74 | 注销时用户ID正在进行某操作。
NET_DVR_SOCKETLISTEN_ERROR | 75 | 监听失败。
NET_DVR_CONVERT_SDK_ERROR | 85 | 加载转封装库(SystemTransform.dll)失败。
NET_DVR_FUNCTION_NOT_SUPPORT_OS | 98 | 此功能不支持该操作系统。
NET_DVR_USE_LOG_SWITCH_FILE | 103 | 正在使用日志开关文件。
NET_DVR_PACKET_TYPE_NOT_SUPPORT | 105 | 码流封装格式错误。

语音对讲库错误码

错误类型 | 错误值 | 错误信息
NET_AUDIOINTERCOM_OK | 600 | 没有错误
NET_AUDIOINTECOM_ERR_NOTSUPORT | 601 | 不支持
NET_AUDIOINTECOM_ERR_ALLOC_MEMERY | 602 | 内存申请错误
NET_AUDIOINTECOM_ERR_PARAMETER | 603 | 参数错误
NET_AUDIOINTECOM_ERR_CALL_ORDER | 604 | 调用次序错误
NET_AUDIOINTECOM_ERR_FIND_DEVICE | 605 | 未发现设备
NET_AUDIOINTECOM_ERR_OPEN_DEVICE | 606 | 不能打开设备
NET_AUDIOINTECOM_ERR_NO_CONTEXT | 607 | 设备上下文出错
NET_AUDIOINTECOM_ERR_NO_WAVFILE | 608 | WAV文件出错
NET_AUDIOINTECOM_ERR_INVALID_TYPE | 609 | 无效的WAV参数类型
NET_AUDIOINTECOM_ERR_ENCODE_FAIL | 610 | 编码失败
NET_AUDIOINTECOM_ERR_DECODE_FAIL | 611 | 解码失败
NET_AUDIOINTECOM_ERR_NO_PLAYBACK | 612 | 播放失败
NET_AUDIOINTECOM_ERR_DENOISE_FAIL | 613 | 降噪失败
NET_AUDIOINTECOM_ERR_UNKOWN | 619 | 未知错误


NET_ESTREAM_SetExceptionCallBack

注册接收异常、重连等消息回调函数。

BOOL NET_ESTREAM_SetExceptionCallBack(
  DWORD                 dwMessage,
  HANDLE                hWnd,
  fExceptionCallBack    cbExceptionCallBack,
  void                  *pUser
);

Parameters

dwMessage
[in] 消息，保留
hWnd
[in] 接收异常信息消息的窗口句柄
cbExceptionCallBack
[in] 接收异常消息的回调函数，回调当前异常的相关信息
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fExceptionCallBack)(
  DWORD    dwType,
  LONG     lUserID,
  LONG     lHandle,
  void     *pUser
);

Callback Function Parameters

dwType
[out] 异常或重连等消息的类型，见下文的异常消息宏定义表
lUserID
[out] 用户ID
lHandle
[out] 出现异常的相应类型的句柄
pUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败，获取错误码调用NET_ESTREAM_GetLastError

Remarks

异常消息宏定义见下表：

宏定义 | 宏定义值 | 含义
EHOME_PREVIEW_EXCEPTION | 0x102 | 预览取流异常
EHOME_PLAYBACK_EXCEPTION | 0x103 | 回放取流异常
EHOME_AUDIOTALK_EXCEPTION | 0x104 | 语音对讲取流异常


NET_ESTREAM_StartListenPreview

启动预览监听，接收设备连接请求。

LONG NET_ESTREAM_StartListenPreview(
  LPNET_EHOME_LISTEN_PREVIEW_CFG    pListenParam
);

Parameters

pListenParam
[in] 预览监听输入参数

Return Values

-1表示失败，其他值作为NET_ESTREAM_StopListenPreview等接口的句柄参数。接口返回失败，请调用NET_ESTREAM_GetLastError获取错误号，通过错误号判断原因。

Remarks

See Also

NET_ESTREAM_StopListenPreview


NET_ESTREAM_SetPreviewDataCB

设置实时流回调函数。

BOOL NET_ESTREAM_SetPreviewDataCB(
  LONG                                 lHandle,
  LPNET_EHOME_PREVIEW_DATA_CB_PARAM    pStruCBParam
);

Parameters

lHandle
[in] 预览句柄，从PREVIEW_NEWLINK_CB返回出来的值
pStruCBParam
[in] 预览码流回调相关参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ESTREAM_GetLastError获取错误号，通过错误号判断原因。


NET_ESTREAM_StopPreview

停止预览

BOOL NET_ESTREAM_StopPreview(
  LONG    lPreviewHandle
);

Parameters

lPreviewHandle
[in] 预览句柄，从PREVIEW_NEWLINK_CB返回出来的值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ESTREAM_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_ESTREAM_StartListenPreview


NET_ESTREAM_StopListenPreview

停止预览监听和连接

BOOL NET_ESTREAM_StopListenPreview(
  LONG    lListenHandle
);

Parameters

lListenHandle
[in] 预览监听句柄，NET_ESTREAM_StartListenPreview的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ESTREAM_GetLastError获取错误号，通过错误号判断原因。

Remarks

停止监听端口时，停止该端口上的所有链接。例如：监听端口9000上有10路流，那么停止监听时，把这10路流的所有链接都关闭。但SDK本地资源不释放,释放预览资源，只能通过NET_ESTREAM_StopPreview接口实现

See Also

NET_ESTREAM_StartListenPreview


NET_ESTREAM_StartListenPlayBack

启动回放监听，接收设备连接请求。

LONG NET_ESTREAM_StartListenPlayBack(
  LPNET_EHOME_PLAYBACK_LISTEN_PARAM    pListenParam
);

Parameters

pListenParam
[in] 回放监听输入参数

Return Values

-1表示失败，其他值作为NET_ESTREAM_StopListenPlayBack等接口的句柄参数。接口返回失败，请调用NET_ESTREAM_GetLastError获取错误号，通过错误号判断原因。

Remarks

设备接收到回放请求后，主动连接指定的服务器，并且推送码流数据给该服务器。相应的流媒体服务器（VTDU）端，通过该接口启动回放监听，接收和响应设备连接请求，同时需要调用NET_ESTREAM_SetPlayBackDataCB设置回放数据回调函数来接收设备推送过来的文件流数据。

See Also

NET_ESTREAM_StopListenPlayBack


NET_ESTREAM_SetPlayBackDataCB

设置回放数据回调函数。

BOOL NET_ESTREAM_SetPlayBackDataCB(
  LONG                                lPlayBackLinkHandle,
  NET_EHOME_PLAYBACK_DATA_CB_PARAM    *pDataCBParam
);

Parameters

lPlayBackLinkHandle
[in] 回放句柄，从PLAYBACK_NEWLINK_CB返回出来的值
pDataCBParam
[in] 回放数据回调相关参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ESTREAM_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_ESTREAM_StartListenPlayBack


NET_ESTREAM_StopPlayBack

停止回放

BOOL NET_ESTREAM_StopPlayBack(
  LONG    lPlayBackLinkHandle
);

Parameters

lPlayBackLinkHandle
[in] 回放句柄，从PLAYBACK_NEWLINK_CB返回出来的值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ESTREAM_GetLastError获取错误号，通过错误号判断原因。

Remarks

通过该接口关闭某路连接，该端口上的其他连接不受影响。

See Also

NET_ESTREAM_StartListenPlayBack


NET_ESTREAM_StopListenPlayBack

停止回放监听

BOOL NET_ESTREAM_StopListenPlayBack(
  LONG    lPlaybackListenHandle
);

Parameters

lPlaybackListenHandle
[in] 回放监听句柄，NET_ESTREAM_StartListenPlayBack的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ESTREAM_GetLastError获取错误号，通过错误号判断原因。

Remarks

停止该端口的所有回放监听，将该端口相关资源都释放。例如：监听端口9000上有10路回放，那么停止监听时，把这10路的所有资源都释放掉。

See Also

NET_ESTREAM_StartListenPlayBack


NET_ESTREAM_StartListenVoiceTalk

开启对讲监听

LONG NET_ESTREAM_StartListenVoiceTalk(
  LPNET_EHOME_LISTEN_VOICETALK_CFG    pListenParam
);

Parameters

pListenParam
[in] 语音对讲监听参数

Return Values

-1表示失败，其它值作为NET_ESTREAM_StopListenVoiceTalk等接口的句柄参数。接口返回失败，请调用NET_ESTREAM_GetLastError获取错误号，通过错误号判断原因。

Remarks

  • 该接口为语音对讲时流媒体服务器（VTDU）端的功能，调用该接口启动语音对讲监听，接收和响应设备连接请求，并且通过NET_ESTREAM_SetVoiceTalkDataCB设置语音数据回调函数来接收设备推送过来的语音对讲音频数据。

See Also

NET_ESTREAM_SendVoiceTalkData NET_ESTREAM_StopListenVoiceTalk


NET_ESTREAM_StopListenVoiceTalk

停止语音对讲监听和连接

BOOL NET_ESTREAM_StopListenVoiceTalk(
  LONG    lListenHandle
);

Parameters

lListenHandle
[in] 语音对讲监听句柄，NET_ESTREAM_StartListenVoiceTalk接口的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ESTREAM_GetLastError获取错误号，通过错误号判断原因。

Remarks

停止监听端口时，停止该端口上的所有链接。例如：监听端口9000上有10路语音对讲，那么停止监听时，把这10路的所有链接都关闭并且释放资源。

See Also

NET_ESTREAM_StartListenVoiceTalk


NET_ESTREAM_SetVoiceTalkDataCB

设置回放数据回调函数。

BOOL NET_ESTREAM_SetVoiceTalkDataCB(
  LONG                                   lHandle,
  LPNET_EHOME_VOICETALK_DATA_CB_PARAM    pStruCBParam
);

Parameters

lHandle
[in] 语音对讲句柄，由NET_ESTREAM_StartListenVoiceTalk设置的监听回调函数（VOICETALK_NEWLINK_CB）返回
pStruCBParam
[in] 语音对讲音频数据回调参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ESTREAM_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_ESTREAM_StartListenVoiceTalk


NET_ESTREAM_SendVoiceTalkData

语音转发向设备发送数据

LONG NET_ESTREAM_SendVoiceTalkData(
  LONG                          lHandle,
  LPNET_EHOME_VOICETALK_DATA    pVoicTalkData
);

Parameters

lHandle
[in] 语音对讲句柄，由NET_ESTREAM_StartListenVoiceTalk设置的监听回调函数（VOICETALK_NEWLINK_CB）返回
pVoicTalkData
[in] 需要发送的语音对讲音频数据结构

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ESTREAM_GetLastError获取错误号，通过错误号判断原因。

Remarks

  • 该接口为语音对讲时流媒体服务器（VTDU）端的功能，将获取到的经过编码后的音频数据转发给设备，编码格式需要跟设备语音对讲的音频编码格式保存一致。设备语音对讲的音频编码格式可以通过NET_ECMS_GetDevConfig(命令:NET_EHOME_GET_DEVICE_INFO)获取，对应结构体NET_EHOME_DEVICE_INFO中的参数dwAudioEncType。
  • 当前设备语音对讲是G722音频编码类型时，每次发送的数据为80字节；当前是G711音频编码类型时，每次发送的数据为160字节。

See Also

NET_ESTREAM_StartListenVoiceTalk


NET_ESTREAM_StopVoiceTalk

停止一路语音对讲

BOOL NET_ESTREAM_StopVoiceTalk(
  LONG    lHandle
);

Parameters

lHandle
[in] 语音对讲句柄，由NET_ESTREAM_StartListenVoiceTalk设置的监听回调函数（VOICETALK_NEWLINK_CB）返回

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ESTREAM_GetLastError获取错误号，通过错误号判断原因。

Remarks

如果调用NET_ESTREAM_StopListenVoiceTalk停止语音对讲监听和连接是停止该端口上的所有语音对讲的连接并且释放资源，如果只停止一路语音对讲，则通过该接口实现。

See Also

NET_ESTREAM_StartListenVoiceTalk


NET_EALARM_Init

报警库初始化。

BOOL NET_EALARM_Init(
);

Return Values

TRUE表示成功，FALSE表示失败。

Remarks

  • 如果初始化失败，请确认程序加载SDK库文件（HCEHomeAlarm.dll）的路径是否正确，系统环境是否符合要求。
  • 初始化与反初始化接口，必须成对调用。

See Also

NET_EALARM_Fini


NET_EALARM_Fini

报警库反初始化，释放资源。

BOOL NET_EALARM_Fini(
);

Return Values

TRUE表示成功，FALSE表示失败。

Remarks

初始化与反初始化接口，必须成对调用。

See Also

NET_EALARM_Init


NET_EALARM_GetBuildVersion

获取报警库版本信息。

DWORD NET_EALARM_GetBuildVersion(
);

Return Values

报警库版本信息，2个高字节表示主版本，2个低字节表示次版本。如0x00030000：表示版本为3.0。


NET_EALARM_SetLogToFile

报警库启用写日志文件。

BOOL NET_EALARM_SetLogToFile(
  LONG    lLogLevel,
  char    *strLogDir,
  BOOL    bAutoDel
);

Parameters

lLogLevel
[in] 日志的等级（默认为0）：0-表示关闭日志，1-表示只输出ERROR错误日志，2-输出ERROR错误信息和DEBUG调试信息，3-输出ERROR错误信息、DEBUG调试信息和INFO普通信息等所有信息
strLogDir
[in] 日志文件的路径，Windows默认值为"C:\\SdkLog\\"
bAutoDel
[in] 是否删除超出的文件数，默认值为TRUE

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_EALARM_GetLastError获取错误号，通过错误号判断原因。

Remarks

日志文件路径必须是绝对路径，且以"\\"结尾，例如"C:\\SdkLog\\"，建议用户先手动创建文件。若未指定文件路径，则采用默认路径"C:\\SdkLog\\"。 可多次调用该接口创建新的日志文件，同时最多支持创建10个文件，当设置了删除超出的文件时（即bAutoDel为TRUE），那么将会自动删除超出的文件。更改目录时到下一次写文件时才会使用新的目录写文件。


NET_EALARM_GetSDKLocalCfg

获取报警模块本地配置参数。

BOOL NET_EALARM_GetSDKLocalCfg(
  NET_EHOME_LOCAL_CFG_TYPE    enumType,
  void*                       lpOutBuff
);

Parameters

enumType
[in] 要进行本地配置的类型，不同的取值对应不同的参数，详见下表
lpOutBuff
[out] 本地配置参数，不同的类型(enumType)，lpOutBuff对应不同的参数结构：
enumType | 类型值 | 含义 | lpOutBuff
ACTIVE_ACCESS_SECURITY | 0 | 设备主动接入的安全性 | NET_EHOME_LOCAL_ACCESS_SECURITY

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_EALARM_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_EALARM_SetSDKLocalCfg


NET_EALARM_SetSDKLocalCfg

设置报警模块本地配置参数。

BOOL NET_EALARM_SetSDKLocalCfg(
  NET_EHOME_LOCAL_CFG_TYPE    enumType,
  void* const                 lpInBuff
);

Parameters

enumType
[in] 要进行本地配置的类型，不同的取值对应不同的参数，详见下表
lpInBuff
[in] 本地配置参数，不同的类型(enumType)，lpInBuff对应不同的参数结构：
enumType | 类型值 | 含义 | lpInBuff
ACTIVE_ACCESS_SECURITY | 0 | 设备主动接入的安全性 | NET_EHOME_LOCAL_ACCESS_SECURITY

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_EALARM_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_EALARM_GetSDKLocalCfg


NET_EALARM_GetLastError

返回最后操作的错误码。

DWORD NET_EALARM_GetLastError(
);

Return Values

返回值为错误码。

通用错误码

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOENOUGHPRI | 2 | 权限不足。一般和通道相关，例如有预览通道1权限，无预览通道2权限，即有预览权限但不完全，预览通道2返回此错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_CHANNEL_ERROR | 4 | 通道号错误。设备没有对应的通道号。
NET_DVR_OVER_MAXLINK | 5 | 设备总的连接数超过最大。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_NETWORK_ERRORDATA | 11 | 传送的数据有误。发送给设备或者从设备接收到的数据错误，如远程参数配置时输入设备不支持的值。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_OPERNOPERMIT | 13 | 无此权限。用户对某个功能模块的权限，例如无预览权限用户预览返回此错误。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空，或者参数格式或值不符合要求。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_DVROPRATEFAILED | 29 | 设备操作失败。
NET_DVR_DIR_ERROR | 40 | 路径错误
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_AUDIO_MODE_ERROR | 42 | 声卡模式错误。当前打开声音播放模式与实际设置的模式不符出错。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_SETSOCKET_ERROR | 45 | 设置SOCKET出错。
NET_DVR_MAX_NUM | 46 | 个数达到最大。分配的注册连接数、预览连接数超过SDK支持的最大数。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_GETLOCALIPANDMACFAIL | 53 | 获得本地PC的IP地址或物理地址失败。
NET_DVR_VOICEMONOPOLIZE | 69 | 声卡被独占。
NET_DVR_CREATEDIR_ERROR | 71 | 建立日志文件目录失败。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_USERID_ISUSING | 74 | 注销时用户ID正在进行某操作。
NET_DVR_SOCKETLISTEN_ERROR | 75 | 监听失败。
NET_DVR_CONVERT_SDK_ERROR | 85 | 加载转封装库(SystemTransform.dll)失败。
NET_DVR_FUNCTION_NOT_SUPPORT_OS | 98 | 此功能不支持该操作系统。
NET_DVR_USE_LOG_SWITCH_FILE | 103 | 正在使用日志开关文件。
NET_DVR_PACKET_TYPE_NOT_SUPPORT | 105 | 码流封装格式错误。

语音对讲库错误码

错误类型 | 错误值 | 错误信息
NET_AUDIOINTERCOM_OK | 600 | 没有错误
NET_AUDIOINTECOM_ERR_NOTSUPORT | 601 | 不支持
NET_AUDIOINTECOM_ERR_ALLOC_MEMERY | 602 | 内存申请错误
NET_AUDIOINTECOM_ERR_PARAMETER | 603 | 参数错误
NET_AUDIOINTECOM_ERR_CALL_ORDER | 604 | 调用次序错误
NET_AUDIOINTECOM_ERR_FIND_DEVICE | 605 | 未发现设备
NET_AUDIOINTECOM_ERR_OPEN_DEVICE | 606 | 不能打开设备
NET_AUDIOINTECOM_ERR_NO_CONTEXT | 607 | 设备上下文出错
NET_AUDIOINTECOM_ERR_NO_WAVFILE | 608 | WAV文件出错
NET_AUDIOINTECOM_ERR_INVALID_TYPE | 609 | 无效的WAV参数类型
NET_AUDIOINTECOM_ERR_ENCODE_FAIL | 610 | 编码失败
NET_AUDIOINTECOM_ERR_DECODE_FAIL | 611 | 解码失败
NET_AUDIOINTECOM_ERR_NO_PLAYBACK | 612 | 播放失败
NET_AUDIOINTECOM_ERR_DENOISE_FAIL | 613 | 降噪失败
NET_AUDIOINTECOM_ERR_UNKOWN | 619 | 未知错误


NET_EALARM_StartListen

启动报警监听，设置报警回调接收报警信息。

LONG NET_EALARM_StartListen(
  const NET_EHOME_ALARM_LISTEN_PARAM    *pAlarmListenParam
);

Parameters

pAlarmListenParam
[in] 报警监听输入参数

Return Values

-1表示失败，其他值作为NET_EALARM_StopListen等接口的句柄参数。接口返回失败，请调用NET_EALARM_GetLastError获取错误号，通过错误号判断原因。

Remarks

启动报警监听并设置报警回调函数，回调函数里面返回设备上传的报警信息。

See Also

NET_EALARM_StopListen


NET_EALARM_StopListen

停止报警监听

BOOL NET_EALARM_StopListen(
 LONG    lListenHandle
);

Parameters

lListenHandle
[in] 报警监听句柄，NET_EALARM_StartListen的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_EALARM_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_EALARM_StartListen


常见问题

  • SDK 支持的注册、预览、回放和对讲等的连接数限制
SDK 支持的注册、预览、回放和对讲等的连接数限制参考值如下所示：

  • 服务器在局域网，通过路由器端口映射到公网，请求和监听时，IP和端口设置的注意事项
1. NET_ECMS_StartListen、NET_ESTREAM_StartListenPreview、NET_ESTREAM_StartListenPlayBack、NET_ESTREAM_StartListenVoiceTalk、NET_EALARM_StartListen等接口监听的IP地址和端口是当前使用网卡的内网IP地址和端口。
2. NET_ECMS_StartGetRealStreamV11、NET_ECMS_StartPlayBack、NET_ECMS_StartVoiceWithStmServer等请求传入的流媒体服务器地址是映射之后的公网IP地址和端口。
3. NET_ECMS_StartListen监听设置的回调函数(DEVICE_REGISTER_CB)中回传给设备的服务器信息(NET_EHOME_SERVER_INFO)的地址也是各个服务器公网的IP地址和端口。


NET_ECMS_FindNextFile

逐个获取查找到的文件信息。

LONG NET_ECMS_FindNextFile(
  LONG                    lHandle,
  LPNET_EHOME_FINDDATA    pFindData
);

Parameters

lHandle
[in] 查找句柄，NET_ECMS_StartFindFile的返回值
pFindData
[out] 返回一条文件信息

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

宏定义 | 宏定义值 | 含义
ENUM_GET_NEXT_STATUS_SUCCESS | 1000 | 成功查找到一条数据，处理完本次数据后需要再次调用FindNext获取下一条数据
ENUM_GET_NETX_STATUS_NO_FILE | 1001 | 未查找到文件
NUM_GET_NETX_STATUS_NEED_WAIT | 1002 | 正在查找请等待，等待后继续调用FindNext函数
ENUM_GET_NEXT_STATUS_FINISH | 1003 | 没有更多的文件，查找结束
ENUM_GET_NEXT_STATUS_FAILED | 1004 | 查找文件时异常
ENUM_GET_NEXT_STATUS_NOT_SUPPORT | 1005 | 设备不支持该操作，图片查找会返回这个状态，目前设备没有实现图片查找的协议

See Also

NET_ECMS_StartFindFile

Reference Interface

扩展接口可见

NET_ECMS_FindNextFile_V11


NET_ECMS_SetRequestCB

设备请求主动回调

BOOL NET_ECMS_SetRequestCB(
  LONG                         lHandle,
  NET_EHOME_CMS_LISTEN_INFO    *lpStruReg
);

Parameters

lHandle
[in] 监听端口句柄，由NET_ECMS_SartServer返回
lpStruReg
[in] 请求回调输入参数，具体见ET_EHOME_CMS_LISTEN_INFO的定义

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

设置过本回调之后，设备所有的Request的请求，除登陆以及心跳外，都将以透传的方式，返回给用户。


NET_ECMS_StartFindFile

开始文件查找

LONG NET_ECMS_StartFindFile(
  LONG                    lUserID,
  LPNET_EHOME_FINDCOND    pFindCond
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
pFindCond
[in] 文件查找条件

Return Values

-1表示失败，其它值作为NET_ECMS_StopFindFile等接口的句柄参数。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

See Also

NET_ECMS_StartListen NET_ECMS_FindNextFile NET_ECMS_StopFindFile

Reference Interface

扩展接口可见

NET_ECMS_StartFindFile_V11


NET_ECMS_StartGetRealStream

预览请求。

BOOL NET_ECMS_StartGetRealStream(
  LONG                           lUserID,
  LPNET_EHOME_PREVIEWINFO_IN     pPreviewInfoIn,
  LPNET_EHOME_PREVIEWINFO_OUT    pPreviewInfoOut
);

Parameters

lUserID
[in] SDK分配的用户ID，由NET_ECMS_StartListen监听设置的注册回调函数返回
pPreviewInfoIn
[in] 请求预览输入参数
pPreviewInfoOut
[out] 请求预览输出参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败，请调用NET_ECMS_GetLastError获取错误号，通过错误号判断原因。

Remarks

  • 为了保证在CMS服务器收到lSessionID之后设备再开始推流，EHOME协议版本大于等于4.0的设备，修改了实时码流推送机制，需要在预览请求之后再向设备发送开始推流的命令请求，设备接收到命令之后才开始发送实时码流。设备是否支持V4.0版本回放协议，可以通过能力集进行判断，接口：NET_ECMS_XMLConfig，对应能力集<SoftwareCapability>里面的<NewPlayBack>节点。
  • CMS服务器通过NET_ECMS_StartGetRealStream向设备发送预览请求。如果对接的是支持V4.0取流协议的设备，CMS服务器还需要调用NET_ECMS_StartPushRealStream向设备发送“推送实时码流”的请求命令，设备接收到该命令之后才向预览请求里面指定的流媒体服务器推送实时码流。

See Also

NET_ECMS_StartListen NET_ECMS_StartPushRealStream NET_ECMS_StopGetRealStream

Reference Interface

扩展接口可见

NET_ECMS_StartGetRealStreamV11


NET_EHOME_ALARM_HOST_LOG

报警主机日志查询结果结构体。

struct{
  NET_EHOME_TIME    struLogTime;
  DWORD             dwMajorType;
  DWORD             dwMinorType;
  DWORD             dwParamType;
  char              sUserName[NAME_LEN];
  char              sIPAddress[128];
  char              sLogContext[MAX_LOG_INFO_LEN];
  BYTE              byRes[64];
}NET_EHOME_ALARM_HOST_LOG, *LPNET_EHOME_ALARM_HOST_LOG;

Members

struLogTime
日志时间
dwMajorType
日志主类型：1- 报警，2- 异常，3- 操作，4-事件
dwMinorType
日志次类型，不同的主类型对应次类型取值不同，具体请参考“Remarks”相关说明
dwParamType
次类型参数类型，大部分表示防区号，如果没有则值为0
sUserName
用户名
sIPAddress
远端主机IP地址
sLogContext
日志内容
byRes
保留，置为0

Remarks

不同的主类型（dwMajorType）对应次类型（dwMinorType）取值不同，如下表所示。

日志主类型 | 日志次类型 | 含义
0x1-报警日志 | 0x01 | 短路报警
 | 0x02 | 断路报警
 | 0x03 | 报警复位
 | 0x04 | 报警恢复正常
 | 0x05 | 密码错误（连续次输入密码错误）
 | 0x06 | 非法感应卡ID
 | 0x07 | 键盘防拆
 | 0x08 | 键盘防拆复位
 | 0x09 | 设备防拆
 | 0x0a | 设备防拆复位
 | 0x0b | 模拟量低于报警限1
 | 0x0c | 模拟量低于报警限2
 | 0x0d | 模拟量低于报警限3
 | 0x0e | 模拟量低于报警限4
 | 0x0f | 模拟量高于报警限1
 | 0x10 | 模拟量高于报警限2
 | 0x11 | 模拟量高于报警限3
 | 0x12 | 模拟量高于报警限4
 | 0x13 | 紧急按钮按下
 | 0x14 | 紧急按钮复位
 | 0x15 | 软防区匪警
 | 0x16 | 软防区火警
 | 0x17 | 软防区紧急
 | 0x18 | 移动侦测报警开始
 | 0x19 | 移动侦测报警结束
 | 0x1a | 遮挡报警开始
 | 0x1b | 遮挡报警结束
 | 0x1c | UPS报警
 | 0x1d | 电量表报警
 | 0x1e | 开关电源报警
 | 0x1f | 气体检测系统报警
 | 0x20 | 变电器温显表报警
 | 0x21 | 温湿度传感器报警
 | 0x22 | UPS报警恢复
 | 0x23 | 电量表报警恢复
 | 0x24 | 开关电源报警恢复
 | 0x25 | 气体检测系统报警恢复
 | 0x26 | 变电器温显表报警恢复
 | 0x27 | 温湿度传感器报警恢复
 | 0x28 | 水位传感器报警
 | 0x29 | 水位传感器报警恢复
 | 0x2a | 扬尘噪声传感器报警
 | 0x2b | 扬尘噪声传感器报警恢复
 | 0x2c | 环境采集仪报警
 | 0x2d | 环境采集仪报警恢复
 | 0x2e | 探测器防拆
 | 0x2f | 探测器防拆复位
 | 0x30 | 紧急呼叫求助报警
 | 0x31 | 紧急呼叫求助报警恢复

日志主类型 | 日志次类型 | 含义
0x2-异常日志 | 0x01 | 上电
 | 0x02 | 掉电
 | 0x03 | WDT 复位
 | 0x04 | 蓄电池电压低
 | 0x05 | 交流电断电
 | 0x06 | 交流电恢复
 | 0x07 | RTC实时时钟异常
 | 0x08 | 网络连接断开
 | 0x09 | 网络连接恢复
 | 0x0a | 电话线连接断开
 | 0x0b | 电话线连接恢复
 | 0x0c | 扩展总线模块掉线
 | 0x0d | 扩展总线模块掉线恢复
 | 0x0e | 键盘总线模块掉线
 | 0x0f | 键盘总线模块掉线恢复
 | 0x10 | 模拟量传感器故障
 | 0x11 | 模拟量传感器恢复
 | 0x12 | RS485通道连接断开
 | 0x13 | RS485通道连接断恢复
 | 0x14 | 蓄电池电压恢复正常
 | 0x15 | 有线网络异常
 | 0x16 | 有线网络恢复正常
 | 0x17 | GPRS通信异常
 | 0x18 | GPRS恢复正常
 | 0x19 | 3G通信异常
 | 0x1a | 3G恢复正常
 | 0x1b | SIM卡异常
 | 0x1c | SIM卡恢复正常
 | 0x1d | 视频信号丢失
 | 0x1e | 非法访问
 | 0x1f | 硬盘满
 | 0x20 | 硬盘错误
 | 0x21 | MODEM 掉线(保留不使用)
 | 0x22 | IP地址冲突
 | 0x23 | 网络断开
 | 0x24 | 录像出错
 | 0x25 | 视频输入异常(只针对模拟通道)
 | 0x26 | 远程格式化硬盘失败
 | 0x27 | USB通信故障
 | 0x28 | USB通信故障恢复
 | 0x29 | 打印机故障
 | 0x2a | 打印机故障恢复
 | 0x2b | 子板通讯错误
 | 0x2c | IPC连接断开
 | 0x2d | IPC IP地址冲突
 | 0x2e | 视频制式不匹配

日志主类型 | 日志次类型 | 含义
0x3-操作日志 | 0x01 | 普通布防
 | 0x02 | 普通撤防
 | 0x03 | 旁路
 | 0x04 | 挟持
 | 0x05 | 本地重启
 | 0x06 | 远程重启
 | 0x07 | 本地升级
 | 0x08 | 远程升级
 | 0x09 | 恢复默认参数
 | 0x0a | 控制触发器
 | 0x0b | 控制门禁开
 | 0x0c | 控制门禁关
 | 0x0d | 控制警号开
 | 0x0e | 控制警号关
 | 0x0f | 修改防区设置
 | 0x10 | 控制触发器配置
 | 0x11 | 修改模拟量配置
 | 0x12 | 修改RS485通道配置
 | 0x13 | 修改拨号配置
 | 0x14 | 增加管理员
 | 0x15 | 修改管理员密码
 | 0x16 | 删除管理员
 | 0x17 | 增加后端操作员
 | 0x18 | 修改后端操作员密码
 | 0x19 | 删除后端操作员
 | 0x1a | 增加前端操作员
 | 0x1b | 修改前端操作员密码
 | 0x1c | 删除前端操作员
 | 0x1d | 增加键盘/读卡器用户
 | 0x1e | 删除键盘/读卡器用户
 | 0x1f | 远程用户登陆
 | 0x20 | 远程用户注销
 | 0x21 | 远程布防
 | 0x22 | 远程撤防
 | 0x23 | 修改主机配置
 | 0x24 | 旁路恢复
 | 0x25 | 触发器开启
 | 0x26 | 触发器关闭
 | 0x27 | 修改子系统参数配置
 | 0x28 | 组旁路
 | 0x29 | 组旁路恢复
 | 0x2a | 修改GPRS参数
 | 0x2b | 修改网络上报参数配置
 | 0x2c | 修改上传方式配置
 | 0x2d | 修改门禁参数配置
 | 0x2e | 远程开始录像
 | 0x2f | 远程停止录像
 | 0x30 | 开始透明传输
 | 0x31 | 停止透明传输
 | 0x32 | 开始语音对讲
 | 0x33 | 停止语音对讲
 | 0x34 | 远程按文件回放
 | 0x35 | 远程按时间回放
 | 0x36 | 远程云台控制
 | 0x37 | 远程格式化硬盘
 | 0x38 | 远程锁定文件
 | 0x39 | 远程解锁文件
 | 0x3a | 远程导出配置文件
 | 0x3b | 远程导入配置文件
 | 0x3c | 远程导出录象文件
 | 0x3d | 留守布防
 | 0x3e | 即时布防
 | 0x3f | 自动布防
 | 0x40 | 自动撤防
 | 0x41 | 钥匙布撤防防区布防
 | 0x42 | 钥匙布撤防防区撤防
 | 0x43 | 消警
 | 0x44 | 修改系统故障配置
 | 0x45 | 修改事件触发触发器配置
 | 0x46 | 搜索外接模块
 | 0x47 | 重新注册外接模块
 | 0x48 | 关闭键盘报警提示音
 | 0x49 | 修改3G参数
 | 0x4a | 修改打印机参数
 | 0x4b | SD卡格式化
 | 0x4c | 子板固件升级
 | 0x4d | 计划布撤防参数配置
 | 0x4e | 手机布防
 | 0x4f | 手机留守布防
 | 0x50 | 手机即时布防
 | 0x51 | 手机撤防
 | 0x52 | 手机消警
 | 0x53 | 白名单配置
 | 0x54 | 定时开关触发器配置
 | 0x55 | 抓图参数配置
 | 0x56 | 防区防拆参数配置
 | 0x57 | 远程打开电锁
 | 0x58 | 远程关闭电锁
 | 0x59 | 本地打开电锁
 | 0x5a | 本地关闭电锁
 | 0x5b | 打开警灯(远程)
 | 0x5c | 关闭警灯(远程)
 | 0xf0 | 本地激活设备
 | 0xf1 | 远程激活设备
 | 0xf2 | 本地回复出厂设置
 | 0xf3 | 远程恢复出厂设置

日志主类型 | 日志次类型 | 含义
0x4-事件日志 | 0x01 | B码校时
 | 0x02 | SDK校时
 | 0x03 | 定时自检校时
 | 0x04 | 子板插入
 | 0x05 | 子板拔出
 | 0x06 | 自动布防
 | 0x07 | 自动撤防
 | 0x08 | 定时开启触发器
 | 0x09 | 定时关闭触发器
 | 0x0a | 自动布防失败
 | 0x0b | 自动撤防失败
 | 0x0c | 定时开启触发器失败
 | 0x0d | 定时关闭触发器失败
 | 0x0e | 强制布防

See Also

NET_ECMS_FindNextFile_V11


NET_EHOME_ALARM_HOST_LOG_COND

报警主机日志查询条件参数结构体。

struct{
  DWORD             dwMajorType;
  DWORD             dwMinorType;
  NET_EHOME_TIME    struStartTime;
  NET_EHOME_TIME    struStopTime;
  DWORD             dwStartIndex;
  DWORD             dwMaxFileCountPer;
  BYTE              byRes[64];
}NET_EHOME_ALARM_HOST_LOG_COND, *LPNET_EHOME_ALARM_HOST_LOG_COND;

Members

dwMajorType
日志主类型：1- 报警，2- 异常，3- 操作，4-事件，0xffff- 全部
dwMinorType
日志次类型，不同的主类型对应次类型取值不同，具体请参考“Remarks”相关说明
struStartTime
开始时间
struStopTime
结束时间
dwStartIndex
查询起始位置，从0开始
dwMaxFileCountPer
单次搜索最大日志个数，需要确定实际网络环境，建议最大个数为8
byRes
保留，置为0

Remarks

不同的主类型（dwMajorType）对应次类型（dwMinorType）取值不同，如下表所示。

日志主类型 | 日志次类型 | 含义
0x1-报警日志 | 0x01 | 短路报警
 | 0x02 | 断路报警
 | 0x03 | 报警复位
 | 0x04 | 报警恢复正常
 | 0x05 | 密码错误（连续次输入密码错误）
 | 0x06 | 非法感应卡ID
 | 0x07 | 键盘防拆
 | 0x08 | 键盘防拆复位
 | 0x09 | 设备防拆
 | 0x0a | 设备防拆复位
 | 0x0b | 模拟量低于报警限1
 | 0x0c | 模拟量低于报警限2
 | 0x0d | 模拟量低于报警限3
 | 0x0e | 模拟量低于报警限4
 | 0x0f | 模拟量高于报警限1
 | 0x10 | 模拟量高于报警限2
 | 0x11 | 模拟量高于报警限3
 | 0x12 | 模拟量高于报警限4
 | 0x13 | 紧急按钮按下
 | 0x14 | 紧急按钮复位
 | 0x15 | 软防区匪警
 | 0x16 | 软防区火警
 | 0x17 | 软防区紧急
 | 0x18 | 移动侦测报警开始
 | 0x19 | 移动侦测报警结束
 | 0x1a | 遮挡报警开始
 | 0x1b | 遮挡报警结束
 | 0x1c | UPS报警
 | 0x1d | 电量表报警
 | 0x1e | 开关电源报警
 | 0x1f | 气体检测系统报警
 | 0x20 | 变电器温显表报警
 | 0x21 | 温湿度传感器报警
 | 0x22 | UPS报警恢复
 | 0x23 | 电量表报警恢复
 | 0x24 | 开关电源报警恢复
 | 0x25 | 气体检测系统报警恢复
 | 0x26 | 变电器温显表报警恢复
 | 0x27 | 温湿度传感器报警恢复
 | 0x28 | 水位传感器报警
 | 0x29 | 水位传感器报警恢复
 | 0x2a | 扬尘噪声传感器报警
 | 0x2b | 扬尘噪声传感器报警恢复
 | 0x2c | 环境采集仪报警
 | 0x2d | 环境采集仪报警恢复
 | 0x2e | 探测器防拆
 | 0x2f | 探测器防拆复位
 | 0x30 | 紧急呼叫求助报警
 | 0x31 | 紧急呼叫求助报警恢复

日志主类型 | 日志次类型 | 含义
0x2-异常日志 | 0x01 | 上电
 | 0x02 | 掉电
 | 0x03 | WDT 复位
 | 0x04 | 蓄电池电压低
 | 0x05 | 交流电断电
 | 0x06 | 交流电恢复
 | 0x07 | RTC实时时钟异常
 | 0x08 | 网络连接断开
 | 0x09 | 网络连接恢复
 | 0x0a | 电话线连接断开
 | 0x0b | 电话线连接恢复
 | 0x0c | 扩展总线模块掉线
 | 0x0d | 扩展总线模块掉线恢复
 | 0x0e | 键盘总线模块掉线
 | 0x0f | 键盘总线模块掉线恢复
 | 0x10 | 模拟量传感器故障
 | 0x11 | 模拟量传感器恢复
 | 0x12 | RS485通道连接断开
 | 0x13 | RS485通道连接断恢复
 | 0x14 | 蓄电池电压恢复正常
 | 0x15 | 有线网络异常
 | 0x16 | 有线网络恢复正常
 | 0x17 | GPRS通信异常
 | 0x18 | GPRS恢复正常
 | 0x19 | 3G通信异常
 | 0x1a | 3G恢复正常
 | 0x1b | SIM卡异常
 | 0x1c | SIM卡恢复正常
 | 0x1d | 视频信号丢失
 | 0x1e | 非法访问
 | 0x1f | 硬盘满
 | 0x20 | 硬盘错误
 | 0x21 | MODEM 掉线(保留不使用)
 | 0x22 | IP地址冲突
 | 0x23 | 网络断开
 | 0x24 | 录像出错
 | 0x25 | 视频输入异常(只针对模拟通道)
 | 0x26 | 远程格式化硬盘失败
 | 0x27 | USB通信故障
 | 0x28 | USB通信故障恢复
 | 0x29 | 打印机故障
 | 0x2a | 打印机故障恢复
 | 0x2b | 子板通讯错误
 | 0x2c | IPC连接断开
 | 0x2d | IPC IP地址冲突
 | 0x2e | 视频制式不匹配

日志主类型 | 日志次类型 | 含义
0x3-操作日志 | 0x01 | 普通布防
 | 0x02 | 普通撤防
 | 0x03 | 旁路
 | 0x04 | 挟持
 | 0x05 | 本地重启
 | 0x06 | 远程重启
 | 0x07 | 本地升级
 | 0x08 | 远程升级
 | 0x09 | 恢复默认参数
 | 0x0a | 控制触发器
 | 0x0b | 控制门禁开
 | 0x0c | 控制门禁关
 | 0x0d | 控制警号开
 | 0x0e | 控制警号关
 | 0x0f | 修改防区设置
 | 0x10 | 控制触发器配置
 | 0x11 | 修改模拟量配置
 | 0x12 | 修改RS485通道配置
 | 0x13 | 修改拨号配置
 | 0x14 | 增加管理员
 | 0x15 | 修改管理员密码
 | 0x16 | 删除管理员
 | 0x17 | 增加后端操作员
 | 0x18 | 修改后端操作员密码
 | 0x19 | 删除后端操作员
 | 0x1a | 增加前端操作员
 | 0x1b | 修改前端操作员密码
 | 0x1c | 删除前端操作员
 | 0x1d | 增加键盘/读卡器用户
 | 0x1e | 删除键盘/读卡器用户
 | 0x1f | 远程用户登陆
 | 0x20 | 远程用户注销
 | 0x21 | 远程布防
 | 0x22 | 远程撤防
 | 0x23 | 修改主机配置
 | 0x24 | 旁路恢复
 | 0x25 | 触发器开启
 | 0x26 | 触发器关闭
 | 0x27 | 修改子系统参数配置
 | 0x28 | 组旁路
 | 0x29 | 组旁路恢复
 | 0x2a | 修改GPRS参数
 | 0x2b | 修改网络上报参数配置
 | 0x2c | 修改上传方式配置
 | 0x2d | 修改门禁参数配置
 | 0x2e | 远程开始录像
 | 0x2f | 远程停止录像
 | 0x30 | 开始透明传输
 | 0x31 | 停止透明传输
 | 0x32 | 开始语音对讲
 | 0x33 | 停止语音对讲
 | 0x34 | 远程按文件回放
 | 0x35 | 远程按时间回放
 | 0x36 | 远程云台控制
 | 0x37 | 远程格式化硬盘
 | 0x38 | 远程锁定文件
 | 0x39 | 远程解锁文件
 | 0x3a | 远程导出配置文件
 | 0x3b | 远程导入配置文件
 | 0x3c | 远程导出录象文件
 | 0x3d | 留守布防
 | 0x3e | 即时布防
 | 0x3f | 自动布防
 | 0x40 | 自动撤防
 | 0x41 | 钥匙布撤防防区布防
 | 0x42 | 钥匙布撤防防区撤防
 | 0x43 | 消警
 | 0x44 | 修改系统故障配置
 | 0x45 | 修改事件触发触发器配置
 | 0x46 | 搜索外接模块
 | 0x47 | 重新注册外接模块
 | 0x48 | 关闭键盘报警提示音
 | 0x49 | 修改3G参数
 | 0x4a | 修改打印机参数
 | 0x4b | SD卡格式化
 | 0x4c | 子板固件升级
 | 0x4d | 计划布撤防参数配置
 | 0x4e | 手机布防
 | 0x4f | 手机留守布防
 | 0x50 | 手机即时布防
 | 0x51 | 手机撤防
 | 0x52 | 手机消警
 | 0x53 | 白名单配置
 | 0x54 | 定时开关触发器配置
 | 0x55 | 抓图参数配置
 | 0x56 | 防区防拆参数配置
 | 0x57 | 远程打开电锁
 | 0x58 | 远程关闭电锁
 | 0x59 | 本地打开电锁
 | 0x5a | 本地关闭电锁
 | 0x5b | 打开警灯(远程)
 | 0x5c | 关闭警灯(远程)
 | 0xf0 | 本地激活设备
 | 0xf1 | 远程激活设备
 | 0xf2 | 本地回复出厂设置
 | 0xf3 | 远程恢复出厂设置

日志主类型 | 日志次类型 | 含义
0x4-事件日志 | 0x01 | B码校时
 | 0x02 | SDK校时
 | 0x03 | 定时自检校时
 | 0x04 | 子板插入
 | 0x05 | 子板拔出
 | 0x06 | 自动布防
 | 0x07 | 自动撤防
 | 0x08 | 定时开启触发器
 | 0x09 | 定时关闭触发器
 | 0x0a | 自动布防失败
 | 0x0b | 自动撤防失败
 | 0x0c | 定时开启触发器失败
 | 0x0d | 定时关闭触发器失败
 | 0x0e | 强制布防

See Also

NET_ECMS_StartFindFile_V11


NET_EHOME_ALARM_INFO

设备基本报警信息结构体

struct{
  DWORD    dwSize;
  char     szAlarmTime[MAX_TIME_LEN];
  char     szDeviceID[MAX_DEVICE_ID_LEN];
  DWORD    dwAlarmType;
  DWORD    dwAlarmAction;
  DWORD    dwVideoChannel;
  DWORD    dwAlarmInChannel;
  DWORD    dwDiskNumber;
  BYTE     byRemark[MAX_REMARK_LEN];
  BYTE     byRetransFlag;
  BYTE     byRes[63];
}NET_EHOME_ALARM_INFO,*LPNET_EHOME_ALARM_INFO;

Members

dwSize
结构体大小
szAlarmTime
报警上传时间，格式：YYYY-MM-DD HH:MM:SS
szDeviceID
设备ID
dwAlarmType
报警类型，具体定义见“Remarks”说明
dwAlarmAction
报警动作：0- 开始，1- 停止，不同的报警类型该参数含义不同，详见“Remarks”说明
dwVideoChannel
视频通道号，不同的报警类型该参数含义不同，详见“Remarks”说明
dwAlarmInChannel
报警输入口，不同的报警类型该参数含义不同，详见“Remarks”说明
dwDiskNumber
硬盘号，不同的报警类型该参数含义不同，详见“Remarks”说明
byRemark
附加信息，不同的报警类型该参数含义不同，详见“Remarks”说明
byRetransFlag
重传标记：0- 实时包，1- 重传包
byRes
保留

Remarks

不同的报警类型（dwAlarmType），szAlarmTime、dwAlarmAction、dwVideoChannel、dwAlarmInChannel、dwDiskNumber、byRemark等参数的取值和含义不同，详见下表

dwAlarmType | 宏定义值 | 含义 | Action | Time | VideoChannel | AlarmInChannel | DiskNumber | Remark
ALARM_TYPE_DISK_FULL | 0 | 硬盘满 | 0-开始 1-结束 | 报警开始或者结束时间 | N/A | N/A | 1~MAX | N/A
ALARM_TYPE_DISK_WRERROR | 1 | 读写硬盘出错 |  |  | N/A | N/A | 1~MAX | N/A
ALARM_TYPE_VIDEO_LOST | 5 | 视频(信号)丢失 |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_EXTERNAL | 6 | 外部(信号量)报警 |  |  | N/A | 1~MAX | N/A | N/A
ALARM_TYPE_VIDEO_COVERED | 7 | 视频遮盖 |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_MOTION | 8 | 移动侦测 |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_STANDARD_NOTMATCH | 9 | 制式不匹配 |  |  | N/A | N/A | N/A | N/A
ALARM_TYPE_SPEEDLIMIT_EXCEED | 10 | 超速 |  |  | 限速值 | 当前速度值 | N/A | N/A
ALARM_TYPE_PIR | 11 | PIR报警 |  |  | 1~MAX(PIR报警器编号，默认为1) | N/A | N/A | N/A
ALARM_TYPE_WIRELESS | 12 | 无线报警 |  |  | N/A | 1~MAX(无线报警器编号) | N/A | N/A
ALARM_TYPE_CALL_HELP | 13 | 呼救报警 |  |  | 1~MAX(报警器编号，默认为1) | N/A | N/A | N/A
ALARM_TYPE_DISARM | 14 | 布撤防报警 | 0-布防 1-撤防 | 布防或者撤防时间 | N/A | N/A | N/A | N/A
ALARM_TYPE_STREAM_PRIVATE | 15 | 码流隐私状态改变通知 | 0-开启 1-关闭 | 开启或者关闭时间 | N/A | N/A | N/A | N/A
ALARM_TYPE_PIC_UPLOAD_FAIL | 16 | 设备上传图片失败 | 0-发生异常或者报警 | 异常或者报警发生时间 | 1~MAX(抓拍通道编号) | 报警联动抓拍上传失败时填写对应的报警类型 | 手动抓拍上传失败时填写手动抓拍流水号 | N/A
ALARM_TYPE_LOCAL_REC_EXCEPTION | 17 | 设备本地录像(抓图)异常 |  |  | N/A | N/A | N/A | N/A
ALARM_TYPE_UPGRADE_FAIL | 18 | 设备版本升级失败 |  |  | N/A | N/A | N/A | 当前版本号，格式：Vx.y.z buildYYMMDD
ALARM_TYPE_ILLEGAL_ACCESS | 19 | 非法访问 |  |  | N/A | N/A | N/A | N/A
ALARM_TYPE_SOUNDLIMIT_EXCEED | 80 | 声音分贝数超标 |  |  | 噪声阈值分贝*10 | 当前噪声值分贝*10 | N/A | N/A
ALARM_TYPE_TRIFFIC_VIOLATION | 90 | 违章报警 |  |  | N/A | N/A | N/A | N/A
ALARM_TYPE_ALARM_CONTROL | 91 | 布控报警 |  |  | N/A | N/A | N/A | N/A
ALARM_TYPE_FACE_DETECTION | 97 | 人脸侦测 | 0-报警发生 1-报警停止 | 报警产生或者停止时间 | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_DEFOUSE_DETECTION | 98 | 虚焦侦测 |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_AUDIO_EXCEPTION | 99 | 音频异常侦测 |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_SCENE_CHANGE | 100 | 场景变更报警 |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_TRAVERSE_PLANE | 101 | 穿越警戒面(越界侦测) |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_ENTER_AREA | 102 | 目标进入区域 |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_LEAVE_AREA | 103 | 目标离开区域 |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_INTRUSION | 104 | 周界入侵(区域入侵) |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_LOITER | 105 | 徘徊 |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_LEFT_TAKE | 106 | 物品遗留拿取 |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_CAR_STOP | 107 | 停车 |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_MOVE_FAST | 108 | 快速运动 |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_HIGH_DENSITY | 109 | 人员聚集 |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_LEFT | 112 | 物品遗留 |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_TAKE | 113 | 物品拿取 |  |  | 1~MAX | N/A | N/A | N/A
ALARM_TYPE_PDC_BY_TIME | 110 | 客流量按时间段统计上报 | 0- 开始 | 统计开始时间 | 1~MAX | 进入人数 | 离开人数 | 统计结束时间:YYYY-MM-DD HHMISS
ALARM_TYPE_PDC_BY_FRAME | 111 | 客流量单帧统计上报 |  | 统计当前帧时间 | 1~MAX | 进入人数 | 离开人数 |
ALARM_TYPE_ENV_LIMIT | 8800 | 动环环境量超限报警 |  | 报警发生时间 | 点号,默认:104 | N/A | N/A | 报警、异常描述信息，不超过256字节
ALARM_TYPE_ENV_REAL_TIME | 8801 | 动环环境量实时数据上报 |  | 上报时间 | 点号,默认:104 | N/A | N/A | 动环相关量实时数值,double类型,比如11.20
ALARM_TYPE_ENV_EXCEPTION | 8802 | 动环异常上报 |  | 异常发生时间 | N/A | N/A | N/A | 报警、异常描述信息，不超过256字节
ALARM_TYPE_HIGH_TEMP | 40961 | 设备温度过高报警 |  | 报警发生时间 | N/A | N/A | N/A | N/A
ALARM_TYPE_ACC_EXCEPTION | 40962 | 设备加速度异常报警 |  | 报警发生时间 | N/A | N/A | N/A | N/A

See Also

NET_EHOME_ALARM_MSG


NET_EHOME_ALARM_LISTEN_PARAM

报警监听参数结构体

struct{
  NET_EHOME_IPADDRESS    struIPAdress;
  MSGCallBack            fnMsgCb;
  void                   *pUserData;
  BYTE                   byProtocolType;
  BYTE                   byUseCmsPort;
  BYTE                   byRes[30];
}NET_EHOME_ALARM_LISTEN_PARAM, *LPNET_EHOME_ALARM_LISTEN_PARAM;

Members

struIPAdress
[in] 本地监听信息，IP为0.0.0.0的情况下，默认为本地地址，多个网卡的情况下，默认为从操作系统获取到的第一个
fnMsgCb
[in] 报警监听回调函数
pUserData
[in] 用户数据
byProtocolType
[in] 协议类型：0- TCP，1- UDP
byUseCmsPort
[in] 是否复用CMS端口：0- 不复用，非0- 复用，如果复用cms端口，协议类型字段无效，此时AMS的本地监听信息struAddress填本地回环地址，本地回环地址通过NET_ECMS_GetSDKLocalCfg、NET_ECMS_SetSDKLocalCfg获取和设置）
byRes
[in] 保留，置为0

Callback Function

typedef BOOL (CALLBACK *MSGCallBack)(
  LONG                   lHandle,
  NET_EHOME_ALARM_MSG    *pAlarmMsg,
  void                   *pUserData
);

Callback Function Parameters

lHandle
[out] 报警监听句柄
pAlarmMsg
[out] 报警信息参数
pUserData
[out] 用户参数

See Also

NET_EALARM_StartListen


NET_EHOME_ALARM_MSG

报警信息结构体

struct{
  DWORD    dwAlarmType;
  void     *pAlarmInfo;
  DWORD    dwAlarmInfoLen;
  void     *pXmlBuf;
  DWORD    dwXmlBufLen;
  char     sSerialNumber[NET_EHOME_SERIAL_LEN];
  BYTE     byRes[20];
}NET_EHOME_ALARM_MSG, *LPNET_EHOME_ALARM_MSG;

Members

dwAlarmType
报警类型，具体定义见“Remarks”说明
pAlarmInfo
报警信息内容
dwAlarmInfoLen
输入参数缓冲区大小
pXmlBuf
报警内容（XML）
dwXmlBufLen
输出参数
sSerialNumber
设备序列号，数字序列号
byRes
保留，置为0

Remarks

不同的报警类型（dwAlarmType），pAlarmInfo对应不同的报警信息类型，如下表所示：

dwAlarmType | 宏定义值 | 含义 | pAlarmInfo
EHOME_ALARM_UNKNOWN | 0 | 未知报警 | 未知
EHOME_ALARM | 1 | Ehome基本报警 | NET_EHOME_ALARM_INFO
EHOME_ALARM_HEATMAP_REPORT | 2 | 热度图报告上传 | NET_EHOME_HEATMAP_REPORT
EHOME_ALARM_FACESNAP_REPORT | 3 | 人脸抓拍报告上传 | NET_EHOME_FACESNAP_REPORT
EHOME_ALARM_GPS | 4 | GPS信息上传 | NET_EHOME_GPS_INFO
EHOME_ALARM_CID_REPORT | 5 | 报警主机CID告警上传 | NET_EHOME_CID_INFO
EHOME_ALARM_NOTICE_PICURL | 6 | 图片URL上报 | NET_EHOME_NOTICE_PICURL
EHOME_ALARM_NOTIFY_FAIL | 7 | 异步失败通知 | NET_EHOME_NOTIFY_FAIL_INFO

See Also

NET_EHOME_ALARM_LISTEN_PARAM


NET_EHOME_ALARM_TIME_CFG

报警布防时间配置结构体

struct{
  DWORD                  dwSize;
  NET_EHOME_SCHEDTIME    struSchedTime[MAX_TIME_SEGMENT];
  BYTE                   bySchedTimeCount;
  BYTE                   byRes[43];
}NET_EHOME_ALARM_TIME_CFG,*LPNET_EHOME_ALARM_TIME_CFG;

Members

dwSize
结构体大小
struSchedTime
布防时间段，最大8个时间段，目前EHOME SDK仅支持4个时间段
bySchedTimeCount
布防时间段数（只读）
byRes
保留

See Also

NET_ECMS_GetDevConfig NET_ECMS_SetDevConfig


NET_EHOME_ALARM_TIME_COND

报警布防时间参数配置条件结构体

struct{
  DWORD    dwSize;
  DWORD    byAlarmType;
  DWORD    byWeekday;
  BYTE     byRes1[2];
  BYTE     dwChannel;
  BYTE     byRes2[20];
}NET_EHOME_ALARM_TIME_COND,*LPNET_EHOME_ALARM_TIME_COND;

Members

dwSize
结构体大小
byAlarmType
报警类型：0- 移动侦测，1- 视频丢失，2- 遮挡报警，3- 报警输入，4- 报警输出，9- 客流量
byWeekday
星期：0- Mon，1- Tues，2- Wed，3- Thur，4- Fri，5- Sat，6- Sun
byRes1
保留，置为0
dwChannel
通道号，从1开始
byRes2
保留，置为0

See Also

NET_ECMS_GetDevConfig NET_ECMS_SetDevConfig


NET_EHOME_ALARMIN_CFG

报警参数配置结构体

struct{
  DWORD                             dwSize;
  BYTE                              sAlarmInName[NAME_LEN];
  BYTE                              byAlarmInType;
  BYTE                              byUseAlarmIn;
  BYTE                              byRes1[2];
  NET_EHOME_ALARMIN_LINKAGE_TYPE    struLinkageType;
  NET_EHOME_RECORD_CHAN             struRecordChan;
  BYTE                              byRes2[128];
}NET_EHOME_ALARMIN_CFG,*LPNET_EHOME_ALARMIN_CFG;

Members

dwSize
结构体大小
sAlarmInName
报警输入名称
byAlarmInType
报警器类型：0- 常开，1- 常闭
byUseAlarmIn
是否处理：0- 禁用，1- 启用
byRes1
保留，置为0
struLinkageType
联动模式
struRecordChan
关联录像通道
byRes1
保留，置为0

See Also

NET_ECMS_GetDevConfig NET_ECMS_SetDevConfig


NET_EHOME_ALARMIN_COND

报警输入参数配置条件结构体

struct{
  DWORD    dwSize;
  DWORD    dwAlarmInNum;
  DWORD    dwPTZChan;
  BYTE     byRes[20];
}NET_EHOME_ALARMIN_COND,*LPNET_EHOME_ALARMIN_COND;

Members

dwSize
结构体大小
dwAlarmInNum
报警编号，从1开始
dwPTZChan
PTZ联动视频通道编号，从1开始
byRes
保留，置为0

See Also

NET_ECMS_GetDevConfig NET_ECMS_SetDevConfig


NET_EHOME_ALARMIN_LINKAGE_TYPE

联动模式参数结构体

struct{
  BYTE                          byMonitorAlarm;
  BYTE                          bySoundAlarm;
  BYTE                          byUpload;
  BYTE                          byAlarmout;
  BYTE                          byEmail;
  BYTE                          byRes1[3];
  NET_EHOME_LINKAGE_PTZ         struPTZLinkage;
  NET_EHOME_LINKAGE_ALARMOUT    struAlarmOut;
  BYTE                          byRes[128];
}NET_EHOME_ALARMIN_LINKAGE_TYPE,*LPNET_EHOME_ALARMIN_LINKAGE_TYPE;

Members

byMonitorAlarm
监视器上警告：0- 禁用，1- 启用
bySoundAlarm
声音报警：0- 禁用，1- 启用
byUpload
上传中心：0- 禁用，1- 启用
byAlarmout
触发报警输出：0- 禁用，1- 启用
byEmail
邮件联动：0- 禁用，1- 启用
byRes1
保留，置为0
struPTZLinkage
PTZ联动
struAlarmOut
报警输出联动
byRes
保留，置为0

See Also

NET_EHOME_ALARMIN_CFG


NET_EHOME_ALARMOUT_CFG

报警输出参数配套结构体

struct{
  DWORD    dwSize;
  BYTE     sAlarmOutName[NAME_LEN];
  WORD     wAlarmOutDelay;
  BYTE     byRes[26];
}NET_EHOME_ALARMOUT_CFG,*LPNET_EHOME_ALARMOUT_CFG;

Members

dwSize
结构体大小
sAlarmOutName
报警输出名称
byAlarmInType
输出延时：0- 5秒，1- 10秒，2- 30秒，3- 1分，4- 2分，5- 5分，6- 10分，7- 最大
byRes
保留，置为0

See Also

NET_ECMS_GetDevConfig NET_ECMS_SetDevConfig


NET_EHOME_ALARMOUT_STATUS_CFG

报警输出状态配置结构体

struct{
  DWORD    dwSize;
  BYTE     byAlarmOutStatus;
  BYTE     byRes[11];
}NET_EHOME_ALARMOUT_STATUS_CFG,*LPNET_EHOME_ALARMOUT_STATUS_CFG;

Members

dwSize
结构体大小
byAlarmOutStatus
报警输出状态：1- 开启报警输出，0- 关闭报警输出
byRes
保留

See Also

NET_ECMS_GetDevConfig NET_ECMS_SetDevConfig


NET_EHOME_AMS_ADDRESS

报警服务器本地回环地址配置结构体。

struct{
  DWORD                  dwSize;
  BYTE                   byEnable;
  BYTE                   byRes1[3];
  NET_EHOME_IPADDRESS    struAddress;
  BYTE                   byRes2[32];
}NET_EHOME_AMS_ADDRESS, *LPNET_EHOME_AMS_ADDRESS;

Members

dwSize
结构体大小
byEnable
是否启用：0-关闭CMS接收报警功能，1-开启CMS接收报警功能
byRes1
保留，置为0
struAddress
AMS(报警服务器)本地回环地址(IP地址和端口)
byRes2
保留，置为0

Remarks

报警服务器本地回环地址配置前，需要先调用NET_EALARM_Init、NET_EALARM_StartListen启动报警监听。

See Also

NET_ECMS_GetSDKLocalCfg NET_ECMS_SetSDKLocalCfg


NET_EHOME_BLACKLIST_SEVER

黑名单服务器参数结构体

struct{
  NET_EHOME_IPADDRESS    struAdd;
  BYTE                   byServerName[32];
  BYTE                   byUserName[32];
  BYTE                   byPassWord[32];
  BYTE                   byRes[64];
}NET_EHOME_BLACKLIST_SEVER, *LPNET_EHOME_BLACKLIST_SEVER;

Members

struAdd
服务器地址
byServerName
服务器名称
byUserName
用户名
byPassWord
密码

See Also

NET_EHOME_SERVER_INFO


NET_EHOME_CID_INFO

报警主机CID报警信息结构体

struct{
  DWORD                  dwSize;
  char                   byDeviceID[MAX_DEVICE_ID_LEN];
  DWORD                  dwCIDCode;
  DWORD                  dwCIDType;
  DWORD                  dwSubSysNo;
  char                   byCIDDescribe[CID_DES_LEN];
  char                   byTriggerTime[MAX_TIME_LEN];
  char                   byUploadTime[MAX_TIME_LEN];
  NET_EHOME_CID_PARAM    struCIDParam;
  BYTE                   byRes[64];
}NET_EHOME_CID_INFO,*LPNET_EHOME_CID_INFO;

Members

dwSize
结构体大小
byDeviceID
设备注册ID
dwCIDCode
CID报告代码
dwCIDType
CID报警类型
dwSubSysNo
产生报告的子系统号，0为全局报告，子系统范围：0~32
byCIDDescribe
CID报警描述
byTriggerTime
CID报警发生时间，格式：YYYY-MM-DD HH:MM:SS
byUploadTime
CID报告上传时间，格式：YYYY-MM-DD HH:MM:SS
struCIDParam
CID报警参数
byRes
保留

See Also

NET_EHOME_ALARM_MSG


NET_EHOME_CID_PARAM

报警主机CID报警参数结构体

struct{
  DWORD    dwUserType;
  LONG     lUserNo;
  LONG     lZoneNo;
  LONG     lKeyboardNo;
  LONG     lVideoChanNo;
  LONG     lDiskNo;
  LONG     lModuleAddr;
  char     byUserName[NAME_LEN];
  BYTE     byRes[32];
}NET_EHOME_CID_PARAM,*LPNET_EHOME_CID_PARAM;

Members

dwUserType
用户类型：1- 键盘用户，2- 网络用户，其他值表示无效
lZoneNo
用户类型，-1表示无效
lKeyboardNo
键盘号
lVideoChanNo
视频通道号
lDiskNo
硬盘号
lModuleAddr
模块地址
byUserName
用户名
byRes
保留

See Also

NET_EHOME_CID_INFO


NET_EHOME_CMS_LISTEN_PARAM

监听参数结构体

struct{
  NET_EHOME_IPADDRESS    struAddress;
  DEVICE_REGISTER_CB     fnCB;
  void                   *pUser;
  BYTE                   byRes[32];
}NET_EHOME_CMS_LISTEN_PARAM, *LPNET_EHOME_CMS_LISTEN_PARAM;

Members

struAddress
[in] 本地监听信息，IP为0.0.0.0的情况下，默认为本地地址，多个网卡的情况下，默认为从操作系统获取到的第一个
fnCB
[in] 设备注册回调函数
pUserData
[in] 用户数据
byRes
[in] 保留，置为0

Callback Function

typedef BOOL (CALLBACK *DEVICE_REGISTER_CB)(
  LONG     lUserID,
  DWORD    dwDataType,
  void     *pOutBuffer,
  DWORD    dwOutLen,
  void     *pInBuffer,
  DWORD    dwInLen,
  void     *pUser
);

Callback Function Parameters

lUserID
[out] 用户ID，SDK分配给设备的标示符
dwDataType
[out] 回调数据类型，具体定义如下：
enum _NET_EHOME_REGISTER_TYPE_{
  ENUM_UNKNOWN  = -1,
  ENUM_DEV_ON   = 0,
  ENUM_DEV_OFF,
  ENUM_DEV_ADDRESS_CHANGED,
  ENUM_EHOME50_DEV_AUTH,
  ENUM_EHOME50_DEV_SESSIONKEY,
  ENUM_EHOME50_DEV_DAS_REQ
}NET_EHOME_REGISTER_TYPE
ENUM_UNKNOWN
未知
ENUM_DEV_ON
设备上线回调
ENUM_DEV_OFF
设备下线回调
ENUM_DEV_ADDRESS_CHANGED
设备地址发生变化
pOutBuffer
[out] 输出参数缓冲区，对应结构体NET_EHOME_DEV_REG_INFO
dwOutLen
[out] 输出参数缓冲区大小
pInBuffer
[in] 输入参数缓冲区，对应结构体NET_EHOME_SERVER_INFO
dwInLen
[in] 输入参数缓冲区大小
pUser
[out] 用户参数

Remarks

监听获取到设备下线回调（ENUM_DEV_OFF）时需要调用NET_ECMS_ForceLogout注销登录。

See Also

NET_ECMS_StartListen


NET_EHOME_COMPRESSION_CFG

压缩参数配置结构体

struct{
  DWORD    dwSize;
  BYTE     byStreamType;
  BYTE     byPicQuality;
  BYTE     byBitRateType;
  BYTE     byRes1;
  DWORD    dwResolution;
  DWORD    dwVideoBitRate;
  DWORD    dwMaxBitRate;
  DWORD    dwVideoFrameRate;
  WORD     wIntervalFrameI;
  BYTE     byIntervalBPFrame;
  BYTE     byRes[41];
}NET_EHOME_COMPRESSION_CFG,*LPNET_EHOME_COMPRESSION_CFG;

Members

dwSize
结构体大小
byStreamType
码流类型：0-视频流，1-复合流
byPicQuality
图像质量：0- 最高，1- 较高，2- 中等，3- 低，4- 较低，5- 最低
byBitRateType
码率类型：0- 变码率，1- 定码率
byRes1
保留，置为0
dwResolution
分辨率：0- DCIF，1- CIF，2- QCIF，3- 4CIF，4- 2CIF，6- QVGA（320x240），16- VGA，17- UXGA，18- SVGA，19- HD720p，20- HD900，21- XVGA，22- SXGAp(1360*1024)，27- 1080P(1920*1080)，28- 2560x1920(500W)，29- 1600x304，30- 2048x1536(300W)，31- 2448x2048(500W)，32- 2448x1200，33- 2448x800，34- XGA(1024*768)，35- SXGA1280*1024)，36- WD1(960*576/960*480)，37- HD1080I，38- WXGA(1440*900)，39- HD_F(1920*1080/1280*720)，40- HD_H(1920*540/1280*360)，41- HD_Q(960*540/630*360)，42- 2336*1744，43- 1920*1456，44- 2592*2048，45- 3296*2472，46- 1376*768，47- 1366*768，48- 1360*768，49- WSXGA+，50- 720*720，51- 1280*1280，52- 2048*768，53- 2048*2048，54- 2560x2048，55- 3072x2048，56- 2304*1296，57- WXGA(1280*800)，58- 1600*600，59- 2592*1944，60- 2752*2208，61- 384*288，62- 4000*3000，63- 4096*2160，64- 3840*2160，65- 4000*2250，66- 3072*1728
dwVideoBitRate
视频码率：0-32K，1-48k，2-64K，3-80K，4-96K，5-128K，6-160k，7-192K，8-224K，9-256K，10-320K，11-384K，12-448K，13-512K，14-640K，15-768K，16-896K，17-1024K，18-1280K，19-1536K，20-1792K，21-2048K，22-自定义
dwMaxBitRate
自定义码率，dwVideoBitRate为22时有效
dwVideoFrameRate
视频帧率：0- 全帧率，1- 1/16，2- 1/8，3- 1/4，4- 1/2，5- 1，6- 2，7- 4，8- 6，9- 8，10- 10，11- 12，12- 16，13- 20，14- 15，15- 18，16- 22
wIntervalFrameI
I帧间隔，取值范围：1~400
byIntervalBPFrame
帧类型：0- BBP，1- BP，2- P
byRes
保留，置为0

See Also

NET_ECMS_GetDevConfig NET_ECMS_SetDevConfig


NET_EHOME_COMPRESSION_COND

压缩参数配置条件参数结构体

struct{
  DWORD    dwSize;
  DWORD    dwChannelNum;
  BYTE     byCompressionType;
  BYTE     byRes[23];
}NET_EHOME_COMPRESSION_COND, *LPNET_EHOME_COMPRESSION_COND;

Members

dwSize
结构体大小
dwChannelNum
通道号，从1开始
byCompressionType
码流类型：1- 主码流，2- 子码流，3- 三码流
byRes
保留，置为0

See Also

NET_ECMS_GetDevConfig NET_ECMS_SetDevConfig


NET_EHOME_CONFIG

配置参数结构体

struct{
  void     *pCondBuf;
  DWORD    dwCondSize;
  void     *pInBuf;
  DWORD    dwInSize;
  void     *pOutBuf;
  DWORD    dwOutSize;
  BYTE     byRes[40];
}NET_EHOME_CONFIG, *LPNET_EHOME_CONFIG;

Members

pCondBuf
[in] 条件参数(结构体格式)，例如通道号等，可以为NULL
dwCondSize
[in] 条件参数缓冲区大小
pInBuf
[in] 输入参数(结构体格式)，获取时为NULL，设置时不为NULL
dwInSize
[in] 输入参数缓冲区大小
pOutBuf
[out] 输出参数(结构体格式)，获取时不为NULL，设置时为NULL
dwOutSize
[in] 输出参数缓冲区大小
byRes
[in] 保留，置为0

Remarks

  • 获取配置参数时，pInBuf无效，设为NULL。对于不同的配置功能（NET_ECMS_GetDevConfig中的配置命令dwCommand），pCondBuf、pOutBuf分别对应不同的内容，详见NET_ECMS_GetDevConfig接口中"Remarks"说明。
  • 设置设备参数时，pOutBuf无效，设为NULL。对于不同的配置功能（NET_ECMS_GetDevConfig中的配置命令dwCommand），pCondBuf、pInBuf分别对应不同的内容，详见NET_ECMS_SetDevConfig接口中"Remarks"说明。

See Also

NET_ECMS_GetDevConfig NET_ECMS_SetDevConfig


NET_EHOME_DEV_LOG

设备日志查询结果结构体。

struct{
  NET_EHOME_TIME    struLogTime;
  DWORD             dwMajorType;
  DWORD             dwMinorType;
  DWORD             dwParamType;
  char              sLocalUser[NAME_LEN];
  char              sRemoteUser[NAME_LEN];
  char              sIPAddress[128];
  DWORD             dwChannelNo;
  DWORD             dwHardDiskNo;
  DWORD             dwAlarmInputChanNo;
  DWORD             dwAlarmOutputChanNo;
  char              sLogContext[MAX_LOG_INFO_LEN];
  BYTE              byRes[64];
}NET_EHOME_DEV_LOG, *LPNET_EHOME_DEV_LOG;

Members

struLogTime
日志时间
dwMajorType
日志主类型：1- 报警，2- 异常，3- 操作
dwMinorType
日志次类型，不同的主类型对应不同的次类型，具体请参考“Remarks”相关说明
dwParamType
次类型参数类型，不同的次类型对应不同的参数类型，具体请参考“Remarks”相关说明
sLocalUser
本地用户
sRemoteUser
远程用户
sIPAddress
远端主机IP地址
dwChannelNo
通道号
dwHardDiskNo
硬盘号
dwAlarmInputChanNo
报警输入通道号
dwAlarmOutputChanNo
报警输出通道号
sLogContext
日志内容
byRes
保留，置为0

Remarks

不同的主类型（dwMajorType）对应次类型（dwMinorType）取值不同，不同的次类型（dwMinorType）对应的次类型参数类型（dwParamType）也不同，如下表所示。

日志主类型 | 日志次类型 | 含义
0x1-报警日志 | 0x1 | 报警输入
 | 0x2 | 报警输出
 | 0x3 | 移动侦测报警开始
 | 0x4 | 移动侦测报警结束
 | 0x5 | 遮挡报警开始
 | 0x6 | 遮挡报警结束
 | 0x7 | 智能报警开始
 | 0x8 | 智能报警结束
 | 0x09 | 交通事件报警开始
 | 0x0a | 交通事件报警结束
 | 0x0b | 网络报警开始
 | 0x0c | 网络报警结束
 | 0x0d | 网络报警恢复
 | 0x0e | 无线报警开始
 | 0x0f | 无线报警结束
 | 0x10 | 人体感应报警开始
 | 0x11 | 人体感应报警结束
 | 0x12 | 呼救报警开始
 | 0x13 | 呼救报警结束
 | 0x16 | 人脸侦测报警开始
 | 0x17 | 人脸侦测报警结束
 | 0x1a | 场景侦测报警
 | 0x1b | 离开区域侦测开始
 | 0x1c | 离开区域侦测结束
 | 0x1d | 徘徊侦测开始
 | 0x1e | 徘徊侦测结束
 | 0x20 | 越界侦测开始
 | 0x21 | 越界侦测结束
 | 0x22 | 区域入侵侦测开始
 | 0x23 | 区域入侵侦测结束
 | 0x24 | 音频丢失侦测
 | 0x25 | 音频异常侦测
 | 0x26 | 虚焦侦测开始
 | 0x27 | 虚焦侦测结束
 | 0x29 | 人脸侦测开始
 | 0x2a | 进入区域侦测开始
 | 0x2b | 进入区域侦测结束
 | 0x2c | 人员聚集侦测开始
 | 0x2d | 人员聚集侦测结束
 | 0x2e | 快速运动侦测开始
 | 0x2f | 快速运动侦测结束
 | 0x30 | 人脸侦测结束
 | 0x31 | 场景变更侦测开始
 | 0x32 | 场景变更侦测结束
 | 0x33 | 音频丢失侦测开始
 | 0x34 | 音频丢失侦测结束
 | 0x35 | 声强突变侦测开始
 | 0x36 | 声强突变侦测结束
 | 0x39 | 声强陡降侦测
 | 0x3c | 停车侦测开始
 | 0x3d | 停车侦测结束
 | 0x3e | 物品遗留侦测开始
 | 0x3f | 物品遗留侦测结束
 | 0x40 | 物品拿取侦测开始
 | 0x41 | 物品拿取侦测结
 | 0x46 | 车牌检测开始
 | 0x47 | 车牌检测结束
 | 0x48 | 热成像火点检测侦测开始
 | 0x49 | 热成像火点检测侦测结束
 | 0x50 | 防破坏检测开始
 | 0x51 | 防破坏检测结束
 | 0x5a | 热成像船只检测侦测
 | 0x5b | 热成像测温预警开始
 | 0x5c | 热成像测温预警结束
 | 0x5d | 热成像测温报警开始
 | 0x5e | 热成像测温报警结束
 | 0x5f | 热成像温差报警开始
 | 0x60 | 热成像温差报警结束
 | 0x400 | 防区短路报警
 | 0x401 | 防区断路报警
 | 0x402 | 防区异常报警
 | 0x403 | 防区报警恢复
 | 0x404 | 防区防拆报警
 | 0x405 | 防区防拆恢复
 | 0x406 | 读卡器防拆报警
 | 0x407 | 读卡器防拆恢复
 | 0x408 | 事件输入报警
 | 0x409 | 事件输入恢复
 | 0x40a | 胁迫报警
 | 0x40b | 离线事件满90%报警
 | 0x40c | 卡号认证失败超次报警
 | 0x411 | POS开启
 | 0x412 | POS结束

日志主类型 | 日志次类型 | 含义
0x2-异常日志 | 0x20 | 阵列异常
 | 0x21 | 视频信号丢失
 | 0x22 | 非法访问
 | 0x23 | 硬盘满
 | 0x24 | 网络硬盘错误，录像异常
 | 0x25 | MODEM 掉线(保留)
 | 0x26 | IP地址冲突
 | 0x27 | 网络断开
 | 0x28 | 录像出错
 | 0x29 | IPC连接异常
 | 0x2a | 视频输入异常(只针对模拟通道)
 | 0x2b | IPC的IP地址冲突
 | 0x2c | 场景异常
 | 0x2d | 抓图出错,获取图片文件失败
 | 0x2e | 视频制式不匹配
 | 0x2f | 编码分辨率和前端分辨率不匹配
 | 0x3a | RS485连接状态异常
 | 0x3b | RS485连接状态异常恢复
 | 0x3c | 子板异常启动
 | 0x3d | 子板插入
 | 0x3e | 子板拔出
 | 0x3f | 温度异常
 | 0x41 | 缓冲区溢出
 | 0x42 | DSP异常
 | 0x43 | ANR录像失败
 | 0x44 | 热备设备工作机异常
 | 0x45 | 开启IPC MAS失败
 | 0x46 | IPCM异常重启
 | 0x47 | POE供电异常
 | 0x48 | 云存储数据上传失败
 | 0x49 | 拨号异常
 | 0x50 | 设备异常下线
 | 0x51 | 远程升级设备失败
 | 0x52 | 音频信号丢失
 | 0x53 | 同步IPC密码异常
 | 0x54 | 萤石下线异常
 | 0x57 | 配件板异常
 | 0x400 | 设备上电启动
 | 0x401 | 设备掉电关闭
 | 0x402 | 看门狗复位
 | 0x403 | 蓄电池电压低
 | 0x404 | 蓄电池电压恢复正常
 | 0x405 | 交流电断电
 | 0x406 | 交流电恢复
 | 0x407 | 网络恢复
 | 0x408 | FLASH读写异常
 | 0x409 | 读卡器掉线
 | 0x40a | 读卡器掉线恢复
 | 0x4000 | 子板IP冲突
 | 0x4001 | 子板断网
 | 0x4002 | 风扇异常
 | 0x4003 | 背板温度异常
 | 0x4004 | SD卡不健康
 | 0x4005 | SD卡损坏

日志主类型 | 日志次类型 | 含义
0x3-操作日志 | 0x41 | 开机
 | 0x42 | 关机
 | 0x43 | 异常关机
 | 0x44 | 本地重启设备
 | 0x50 | 本地登陆
 | 0x51 | 本地注销登陆
 | 0x52 | 本地配置参数
 | 0x53 | 本地按文件回放或下载
 | 0x54 | 本地按时间回放或下载
 | 0x55 | 本地开始录像
 | 0x56 | 本地停止录像
 | 0x57 | 本地云台控制
 | 0x58 | 本地预览(保留不使用)
 | 0x59 | 本地修改时间(保留不使用)
 | 0x5a | 本地升级
 | 0x5b | 本地备份录象文件
 | 0x5c | 本地初始化硬盘
 | 0x5d | 导出本地配置文件
 | 0x5e | 导入本地配置文件
 | 0x5f | 本地备份文件
 | 0x60 | 本地锁定录像文件
 | 0x61 | 本地解锁录像文件
 | 0x62 | 本地手动清除和触发报警
 | 0x63 | 本地添加IPC
 | 0x64 | 本地删除IPC
 | 0x65 | 本地设置IPC
 | 0x66 | 本地开始备份
 | 0x67 | 本地停止备份
 | 0x68 | 本地备份开始时间
 | 0x69 | 本地备份结束时间
 | 0x6a | 本地添加网络硬盘
 | 0x6b | 本地删除NAS盘
 | 0x6c | 本地设置NAS盘
 | 0x70 | 远程登录
 | 0x71 | 远程注销登陆
 | 0x72 | 远程开始录像
 | 0x73 | 远程停止录像
 | 0x74 | 开始透明传输
 | 0x75 | 停止透明传输
 | 0x76 | 远程获取参数
 | 0x77 | 远程配置参数
 | 0x78 | 远程获取状态
 | 0x79 | 远程布防
 | 0x7a | 远程撤防
 | 0x7b | 远程重启
 | 0x7c | 开始语音对讲
 | 0x7d | 停止语音对讲
 | 0x7e | 远程升级
 | 0x7f | 远程按文件回放
 | 0x80 | 远程按时间回放
 | 0x81 | 远程云台控制
 | 0x82 | 远程格式化硬盘
 | 0x83 | 远程关机
 | 0x84 | 远程锁定文件
 | 0x85 | 远程解锁文件
 | 0x86 | 远程导出配置文件
 | 0x87 | 远程导入配置文件
 | 0x88 | 远程导出录象文件
 | 0x89 | 远程手动清除和触发报警
 | 0x8a | 远程添加IPC
 | 0x8b | 远程删除IPC
 | 0x8c | 远程设置IPC
 | 0x8d | 重启智能库
 | 0x8e | 远程添加NAS盘
 | 0x8f | 远程删除NAS盘
 | 0x90 | 远程设置NAS盘
 | 0x91 | 本地开始刻录
 | 0x92 | 本地停止刻录
 | 0x93 | 远程开始刻录
 | 0x94 | 远程停止刻录
 | 0x95 | 本地备份图片文件
 | 0x96 | 远程备份图片文件
 | 0x97 | 本地恢复审讯事件
 | 0x98 | 远程恢复审讯事件
 | 0x99 | 本地导入文件
 | 0x9a | 远程删除异常不存在的硬盘
 | 0x9b | 远程加载硬盘
 | 0x9c | 远程卸载硬盘
 | 0x9d | 本地操作锁定
 | 0x9e | 本地操作解除锁定
 | 0x9f | 本地删除审讯文件
 | 0xd0 | 远程旁路
 | 0xd1 | 远程旁路恢复
 | 0xd2 | 远程设置报警输入参数
 | 0xd3 | 远程获取报警输入参数
 | 0xd4 | 远程设置报警输出参数
 | 0xd5 | 远程获取报警输出参数
 | 0xd6 | 远程手动开启报警输出
 | 0xd7 | 远程手动关闭报警输出
 | 0xd8 | 远程设置报警主机的RS485串口使能状态
 | 0xd9 | 导出数据库记录
 | 0xda | 导入数据库记录
 | 0xdb | 级联切换
 | 0xdc | 级联PTZ控制
 | 0x101 | 本地配置自动重建
 | 0x102 | 本地配置热备
 | 0x103 | 本地创建阵列
 | 0x104 | 本地删除阵列
 | 0x105 | 本地迁移阵列
 | 0x106 | 本地手动重建阵列
 | 0x107 | 本地一键配置
 | 0x108 | 本地创建虚拟磁盘
 | 0x109 | 本地删除虚拟磁盘
 | 0x10a | 本地修复虚拟磁盘
 | 0x10b | 本地扩展虚拟磁盘扩容
 | 0x10c | 本地raid卡升级
 | 0x10d | 本地暂停RAID操作(即安全拔盘)
 | 0x111 | 远程配置自动重建
 | 0x112 | 远程配置热备
 | 0x113 | 远程创建阵列
 | 0x114 | 远程删除阵列
 | 0x115 | 远程迁移阵列
 | 0x116 | 远程手动重建阵列
 | 0x117 | 远程一键配置
 | 0x118 | 远程创建虚拟磁盘
 | 0x119 | 远程删除虚拟磁盘
 | 0x11a | 远程修复虚拟磁盘
 | 0x11b | 远程虚拟磁盘扩容
 | 0x11c | 远程raid卡升级
 | 0x11d | 远程暂停RAID操作(即安全拔盘)
 | 0x121 | 本地开始抓图
 | 0x122 | 本地停止抓图
 | 0x125 | 本地配置SNMP
 | 0x126 | 本地标签操作
 | 0x131 | 远程开始抓图
 | 0x132 | 远程停止抓图
 | 0x135 | 远程配置SNMP
 | 0x136 | 远程标签操作
 | 0x140 | 本地输出口切换操作
 | 0x141 | 码流压缩性能选项配置操作
 | 0x142 | 本地N+1热备相关操作
 | 0x143 | 远程N+1热备相关操作
 | 0x144 | 本地导出ipc配置文件
 | 0x145 | 本地导入ipc配置文件
 | 0x146 | 本地升级IPC
 | 0x147 | 远程导出ipc配置文件
 | 0x148 | 远程导入ipc配置文件
 | 0x149 | 远程升级IPC
 | 0x201 | 设置大屏主屏
 | 0x202 | 设置大屏子屏
 | 0x203 | 取消大屏主屏
 | 0x204 | 取消大屏子屏
 | 0x251 | 修改输入源
 | 0x252 | 修改输出通道
 | 0x253 | 修改虚拟LED
 | 0x254 | 修改LOGO
 | 0x255 | 设置场景
 | 0x256 | 回显操作
 | 0x257 | 获取虚拟LED
 | 0x258 | 获取场景
 | 0x259 | 场景控制
 | 0x260 | 获取所有有效窗口
 | 0x261 | 获取单个窗口信息
 | 0x262 | 窗口控制
 | 0x263 | 获取场景列表
 | 0x264 | 场景控制
 | 0x265 | 设置单个场景
 | 0x266 | 获取输入信号源列表
 | 0x267 | 获取预案列表
 | 0x268 | 修改预案
 | 0x269 | 控制预案
 | 0x270 | 屏幕控制
 | 0x271 | 添加信号源
 | 0x272 | 修改信号源
 | 0x273 | 设置解码板参数
 | 0x274 | 获取解码板参数
 | 0x275 | 获取设备信息
 | 0x276 | 底图上传
 | 0x277 | 设置用户密码
 | 0x278 | 添加场景
 | 0x279 | 删除场景
 | 0x280 | 删除信号源
 | 0x281 | 添加预案
 | 0x282 | 删除预案
 | 0x283 | 获取外接矩阵配置
 | 0x284 | 设置外接矩阵配置
 | 0x285 | 获取用户配置
 | 0x286 | 设置用户配置
 | 0x287 | 获取显示墙连接配置
 | 0x288 | 设置显示墙连接配置
 | 0x289 | 获取电视墙场景
 | 0x28a | 设置电视墙场景
 | 0x28b | 获取当前使用场景
 | 0x28c | 场景切换
 | 0x300 | 本地加载硬盘
 | 0x301 | 本地删除异常不存在的硬盘
 | 0x400 | 远程开门
 | 0x401 | 远程关门
 | 0x402 | 远程常开
 | 0x403 | 远程常关
 | 0x404 | 远程手动校时
 | 0x405 | NTP自动校时
 | 0x406 | 远程清空卡号
 | 0x407 | 远程恢复默认参数
 | 0x408 | 防区布防
 | 0x409 | 防区撤防
 | 0x40a | 本地恢复默认参数
 | 0x1001 | 设置触发模式参数
 | 0x1002 | 获取触发模式参数
 | 0x1003 | 设置IO输出参数
 | 0x1004 | 获取IO输出参数
 | 0x1005 | 获取触发模式推荐参数
 | 0x1006 | 获取状态检测参数
 | 0x1007 | 设置状态检测参数
 | 0x1008 | 获取状态检测参数
 | 0x1009 | 获取视频电警模式参数
 | 0x100a | 设置视频电警模式参数
 | 0x2001 | 本地添加车辆信息
 | 0x2002 | 本地修改车辆信息
 | 0x2003 | 本地删除车辆信息
 | 0x2004 | 本地查找车辆信息
 | 0x2005 | 本地添加布控信息
 | 0x2006 | 本地修改布控信息
 | 0x2007 | 本地删除布控信息
 | 0x2008 | 本地查询布控信息
 | 0x2009 | 本地查询正常通行信息
 | 0x200a | 本地查询异常通行信息
 | 0x200b | 本地查询正常通行信息
 | 0x200c | 本地图片预览
 | 0x200d | 设置本地配置出入口参数
 | 0x200e | 获取本地配置出入口参数
 | 0x200f | 设置本地配置数据上传参数
 | 0x2010 | 获取本地配置数据上传参数
 | 0x2011 | 本地设备控制(本地开关闸)
 | 0x2012 | 本地添加外接设备信息
 | 0x2013 | 本地修改外接设备信息
 | 0x2014 | 本地删除外接设备信息
 | 0x2015 | 本地查询外接设备信息
 | 0x2016 | 本地添加收费规则
 | 0x2017 | 本地修改收费规则
 | 0x2018 | 本地删除收费规则
 | 0x2019 | 本地查询收费规则
 | 0x2020 | 本地统计正常通行信息
 | 0x2021 | 本地导出正常通行信息统计报表
 | 0x2022 | 本地统计异常通行信息
 | 0x2023 | 本地导出异常通行信息统计报表
 | 0x2024 | 本地统计行人通行信息
 | 0x2025 | 本地导出行人通行信息统计报表
 | 0x2026 | 本地查询过车收费信息
 | 0x2027 | 本地统计过车收费信息
 | 0x2028 | 本地导出过车收费信息统计报表
 | 0x2029 | 本地查询交接班信息
 | 0x2030 | 本地查询卡片信息
 | 0x2031 | 本地添加减免规则
 | 0x2032 | 本地修改减免规则
 | 0x2033 | 本地删除减免规则
 | 0x2034 | 本地查询减免规则
 | 0x2035 | 本地获取出入口控制机离线检测配置
 | 0x2036 | 本地设置出入口控制机离线检测配置
 | 0x2037 | 本地设置出入口控制机下发卡片信息
 | 0x2038 | 本地清空出入口控制机下发卡片信息
 | 0x2101 | 远程设备控制
 | 0x2102 | 设置远程配置出入口参数
 | 0x2103 | 获取远程配置出入口参数
 | 0x2104 | 设置远程配置数据上传参数
 | 0x2105 | 获取远程配置数据上传参数
 | 0x2106 | 远程获取终端基本信息
 | 0x2107 | 远程获取字符叠加参数配置
 | 0x2108 | 远程设置字符叠加参数配置
 | 0x2109 | 远程获取路口信息
 | 0x210a | 远程建立同步数据服务器
 | 0x210b | 远程获取出入口终端工作状态
 | 0x210c | 远程获取出入口终端通道状态
 | 0x210d | 远程添加外接设备信息
 | 0x210e | 远程修改外接设备信息
 | 0x210f | 远程获取出入口控制机离线检测配置
 | 0x2110 | 远程设置出入口控制机离线检测配置
 | 0x2111 | 远程设置出入口控制机下发卡片信息
 | 0x2112 | 远程清空出入口控制机下发卡片信息
 | 0x2115 | 开启远程控制车位指示灯
 | 0x2116 | 关闭远程控制车位指示灯
 | 0x2117 | 设置音量大小
 | 0x2118 | 设置音量录音
 | 0x2119 | 智能配置
 | 0x211a | 本地设置raid速度
 | 0x211b | 远程设置raid速度
 | 0x211c | 远程添加存储池
 | 0x211d | 远程删除存储池
 | 0x2120 | 远程删除图片数据
 | 0x2121 | 远程删除录像数据
 | 0x2123 | 远程设置云存储启用
 | 0x2124 | 远程设置云存储禁用
 | 0x2125 | 远程修改云存储池参数
 | 0x2126 | 远程修改云存储池容量
 | 0x2200 | 远程创建/修改视图库空间
 | 0x2201 | 远程删除视图库文件
 | 0x2202 | 远程下载视图库文件
 | 0x2203 | 远程上传视图库文件
 | 0x2204 | 本地创建/修改视图库空间
 | 0x2501 | MCU会议配置
 | 0x2502 | MCU终端配置
 | 0x2503 | MCU分组配置
 | 0x2504 | MCU会议控制
 | 0x2505 | MCU终端控制

日志主类型（dwMajorType） | 日志次类型（dwMinorType） | 参数类型(dwParamType) | 含义
0x3-操作日志 | 0x7c-开始语音对讲 0x7d-停止语音对讲 | 4字节数值 | 语音对讲端口号
 | 0x52-本地配置参数 0x76-远程获得参数 0x77-远程配置参数 | 0x1 | 视频输出结构配置
 |  | 0x2 | 图像参数结构配置
 |  | 0x4 | 压缩参数结构配置
 |  | 0x8 | 网络参数结构配置
 |  | 0x10 | 报警参数结构配置
 |  | 0x20 | 异常参数结构配置
 |  | 0x40 | 解码器参数结构配置
 |  | 0x80 | RS232参数结构配置
 |  | 0x100 | 本地预览参数结构配置
 |  | 0x200 | 用户权限参数结构配置
 |  | 0x400 | 本地系统配置
 |  | 0x800 | 帧信息参数结构配置
 |  | 0x1000 | 侦测配置(根据日志内容信息区分区域入侵和越界侦测)

See Also

NET_ECMS_FindNextFile_V11


NET_EHOME_DEV_LOG_COND

设备日志查询条件参数结构体。

struct{
  DWORD             dwMajorType;
  DWORD             dwMinorType;
  NET_EHOME_TIME    struStartTime;
  NET_EHOME_TIME    struStopTime;
  DWORD             dwStartIndex;
  DWORD             dwMaxFileCountPer;
  BYTE              byRes[64];
}NET_EHOME_DEV_LOG_COND, *LPNET_EHOME_DEV_LOG_COND;

Members

dwMajorType
日志主类型：1- 报警，2- 异常，3- 操作，0xffff- 全部
dwMinorType
日志次类型，不同的主类型对应次类型取值不同，具体请参考“Remarks”相关说明
struStartTime
开始时间
struStopTime
结束时间
dwStartIndex
查询起始位置，从0开始
dwMaxFileCountPer
单次搜索最大日志个数，需要确定实际网络环境，建议最大个数为8
byRes
保留，置为0

Remarks

不同的主类型（dwMajorType）对应次类型（dwMinorType）取值不同，如下表所示。

日志主类型 | 日志次类型 | 含义
0x1-报警日志 | 0x1 | 报警输入
 | 0x2 | 报警输出
 | 0x3 | 移动侦测报警开始
 | 0x4 | 移动侦测报警结束
 | 0x5 | 遮挡报警开始
 | 0x6 | 遮挡报警结束
 | 0x7 | 智能报警开始
 | 0x8 | 智能报警结束
 | 0x09 | 交通事件报警开始
 | 0x0a | 交通事件报警结束
 | 0x0b | 网络报警开始
 | 0x0c | 网络报警结束
 | 0x0d | 网络报警恢复
 | 0x0e | 无线报警开始
 | 0x0f | 无线报警结束
 | 0x10 | 人体感应报警开始
 | 0x11 | 人体感应报警结束
 | 0x12 | 呼救报警开始
 | 0x13 | 呼救报警结束
 | 0x16 | 人脸侦测报警开始
 | 0x17 | 人脸侦测报警结束
 | 0x1a | 场景侦测报警
 | 0x1b | 离开区域侦测开始
 | 0x1c | 离开区域侦测结束
 | 0x1d | 徘徊侦测开始
 | 0x1e | 徘徊侦测结束
 | 0x20 | 越界侦测开始
 | 0x21 | 越界侦测结束
 | 0x22 | 区域入侵侦测开始
 | 0x23 | 区域入侵侦测结束
 | 0x24 | 音频丢失侦测
 | 0x25 | 音频异常侦测
 | 0x26 | 虚焦侦测开始
 | 0x27 | 虚焦侦测结束
 | 0x29 | 人脸侦测开始
 | 0x2a | 进入区域侦测开始
 | 0x2b | 进入区域侦测结束
 | 0x2c | 人员聚集侦测开始
 | 0x2d | 人员聚集侦测结束
 | 0x2e | 快速运动侦测开始
 | 0x2f | 快速运动侦测结束
 | 0x30 | 人脸侦测结束
 | 0x31 | 场景变更侦测开始
 | 0x32 | 场景变更侦测结束
 | 0x33 | 音频丢失侦测开始
 | 0x34 | 音频丢失侦测结束
 | 0x35 | 声强突变侦测开始
 | 0x36 | 声强突变侦测结束
 | 0x39 | 声强陡降侦测
 | 0x3c | 停车侦测开始
 | 0x3d | 停车侦测结束
 | 0x3e | 物品遗留侦测开始
 | 0x3f | 物品遗留侦测结束
 | 0x40 | 物品拿取侦测开始
 | 0x41 | 物品拿取侦测结
 | 0x46 | 车牌检测开始
 | 0x47 | 车牌检测结束
 | 0x48 | 热成像火点检测侦测开始
 | 0x49 | 热成像火点检测侦测结束
 | 0x50 | 防破坏检测开始
 | 0x51 | 防破坏检测结束
 | 0x5a | 热成像船只检测侦测
 | 0x5b | 热成像测温预警开始
 | 0x5c | 热成像测温预警结束
 | 0x5d | 热成像测温报警开始
 | 0x5e | 热成像测温报警结束
 | 0x5f | 热成像温差报警开始
 | 0x60 | 热成像温差报警结束
 | 0x400 | 防区短路报警
 | 0x401 | 防区断路报警
 | 0x402 | 防区异常报警
 | 0x403 | 防区报警恢复
 | 0x404 | 防区防拆报警
 | 0x405 | 防区防拆恢复
 | 0x406 | 读卡器防拆报警
 | 0x407 | 读卡器防拆恢复
 | 0x408 | 事件输入报警
 | 0x409 | 事件输入恢复
 | 0x40a | 胁迫报警
 | 0x40b | 离线事件满90%报警
 | 0x40c | 卡号认证失败超次报警
 | 0x411 | POS开启
 | 0x412 | POS结束

日志主类型 | 日志次类型 | 含义
0x2-异常日志 | 0x20 | 阵列异常
 | 0x21 | 视频信号丢失
 | 0x22 | 非法访问
 | 0x23 | 硬盘满
 | 0x24 | 网络硬盘错误，录像异常
 | 0x25 | MODEM 掉线(保留)
 | 0x26 | IP地址冲突
 | 0x27 | 网络断开
 | 0x28 | 录像出错
 | 0x29 | IPC连接异常
 | 0x2a | 视频输入异常(只针对模拟通道)
 | 0x2b | IPC的IP地址冲突
 | 0x2c | 场景异常
 | 0x2d | 抓图出错,获取图片文件失败
 | 0x2e | 视频制式不匹配
 | 0x2f | 编码分辨率和前端分辨率不匹配
 | 0x3a | RS485连接状态异常
 | 0x3b | RS485连接状态异常恢复
 | 0x3c | 子板异常启动
 | 0x3d | 子板插入
 | 0x3e | 子板拔出
 | 0x3f | 温度异常
 | 0x41 | 缓冲区溢出
 | 0x42 | DSP异常
 | 0x43 | ANR录像失败
 | 0x44 | 热备设备工作机异常
 | 0x45 | 开启IPC MAS失败
 | 0x46 | IPCM异常重启
 | 0x47 | POE供电异常
 | 0x48 | 云存储数据上传失败
 | 0x49 | 拨号异常
 | 0x50 | 设备异常下线
 | 0x51 | 远程升级设备失败
 | 0x52 | 音频信号丢失
 | 0x53 | 同步IPC密码异常
 | 0x54 | 萤石下线异常
 | 0x57 | 配件板异常
 | 0x400 | 设备上电启动
 | 0x401 | 设备掉电关闭
 | 0x402 | 看门狗复位
 | 0x403 | 蓄电池电压低
 | 0x404 | 蓄电池电压恢复正常
 | 0x405 | 交流电断电
 | 0x406 | 交流电恢复
 | 0x407 | 网络恢复
 | 0x408 | FLASH读写异常
 | 0x409 | 读卡器掉线
 | 0x40a | 读卡器掉线恢复
 | 0x4000 | 子板IP冲突
 | 0x4001 | 子板断网
 | 0x4002 | 风扇异常
 | 0x4003 | 背板温度异常
 | 0x4004 | SD卡不健康
 | 0x4005 | SD卡损坏

日志主类型 | 日志次类型 | 含义
0x3-操作日志 | 0x41 | 开机
 | 0x42 | 关机
 | 0x43 | 异常关机
 | 0x44 | 本地重启设备
 | 0x50 | 本地登陆
 | 0x51 | 本地注销登陆
 | 0x52 | 本地配置参数
 | 0x53 | 本地按文件回放或下载
 | 0x54 | 本地按时间回放或下载
 | 0x55 | 本地开始录像
 | 0x56 | 本地停止录像
 | 0x57 | 本地云台控制
 | 0x58 | 本地预览(保留不使用)
 | 0x59 | 本地修改时间(保留不使用)
 | 0x5a | 本地升级
 | 0x5b | 本地备份录象文件
 | 0x5c | 本地初始化硬盘
 | 0x5d | 导出本地配置文件
 | 0x5e | 导入本地配置文件
 | 0x5f | 本地备份文件
 | 0x60 | 本地锁定录像文件
 | 0x61 | 本地解锁录像文件
 | 0x62 | 本地手动清除和触发报警
 | 0x63 | 本地添加IPC
 | 0x64 | 本地删除IPC
 | 0x65 | 本地设置IPC
 | 0x66 | 本地开始备份
 | 0x67 | 本地停止备份
 | 0x68 | 本地备份开始时间
 | 0x69 | 本地备份结束时间
 | 0x6a | 本地添加网络硬盘
 | 0x6b | 本地删除NAS盘
 | 0x6c | 本地设置NAS盘
 | 0x70 | 远程登录
 | 0x71 | 远程注销登陆
 | 0x72 | 远程开始录像
 | 0x73 | 远程停止录像
 | 0x74 | 开始透明传输
 | 0x75 | 停止透明传输
 | 0x76 | 远程获取参数
 | 0x77 | 远程配置参数
 | 0x78 | 远程获取状态
 | 0x79 | 远程布防
 | 0x7a | 远程撤防
 | 0x7b | 远程重启
 | 0x7c | 开始语音对讲
 | 0x7d | 停止语音对讲
 | 0x7e | 远程升级
 | 0x7f | 远程按文件回放
 | 0x80 | 远程按时间回放
 | 0x81 | 远程云台控制
 | 0x82 | 远程格式化硬盘
 | 0x83 | 远程关机
 | 0x84 | 远程锁定文件
 | 0x85 | 远程解锁文件
 | 0x86 | 远程导出配置文件
 | 0x87 | 远程导入配置文件
 | 0x88 | 远程导出录象文件
 | 0x89 | 远程手动清除和触发报警
 | 0x8a | 远程添加IPC
 | 0x8b | 远程删除IPC
 | 0x8c | 远程设置IPC
 | 0x8d | 重启智能库
 | 0x8e | 远程添加NAS盘
 | 0x8f | 远程删除NAS盘
 | 0x90 | 远程设置NAS盘
 | 0x91 | 本地开始刻录
 | 0x92 | 本地停止刻录
 | 0x93 | 远程开始刻录
 | 0x94 | 远程停止刻录
 | 0x95 | 本地备份图片文件
 | 0x96 | 远程备份图片文件
 | 0x97 | 本地恢复审讯事件
 | 0x98 | 远程恢复审讯事件
 | 0x99 | 本地导入文件
 | 0x9a | 远程删除异常不存在的硬盘
 | 0x9b | 远程加载硬盘
 | 0x9c | 远程卸载硬盘
 | 0x9d | 本地操作锁定
 | 0x9e | 本地操作解除锁定
 | 0x9f | 本地删除审讯文件
 | 0xd0 | 远程旁路
 | 0xd1 | 远程旁路恢复
 | 0xd2 | 远程设置报警输入参数
 | 0xd3 | 远程获取报警输入参数
 | 0xd4 | 远程设置报警输出参数
 | 0xd5 | 远程获取报警输出参数
 | 0xd6 | 远程手动开启报警输出
 | 0xd7 | 远程手动关闭报警输出
 | 0xd8 | 远程设置报警主机的RS485串口使能状态
 | 0xd9 | 导出数据库记录
 | 0xda | 导入数据库记录
 | 0xdb | 级联切换
 | 0xdc | 级联PTZ控制
 | 0x101 | 本地配置自动重建
 | 0x102 | 本地配置热备
 | 0x103 | 本地创建阵列
 | 0x104 | 本地删除阵列
 | 0x105 | 本地迁移阵列
 | 0x106 | 本地手动重建阵列
 | 0x107 | 本地一键配置
 | 0x108 | 本地创建虚拟磁盘
 | 0x109 | 本地删除虚拟磁盘
 | 0x10a | 本地修复虚拟磁盘
 | 0x10b | 本地扩展虚拟磁盘扩容
 | 0x10c | 本地raid卡升级
 | 0x10d | 本地暂停RAID操作(即安全拔盘)
 | 0x111 | 远程配置自动重建
 | 0x112 | 远程配置热备
 | 0x113 | 远程创建阵列
 | 0x114 | 远程删除阵列
 | 0x115 | 远程迁移阵列
 | 0x116 | 远程手动重建阵列
 | 0x117 | 远程一键配置
 | 0x118 | 远程创建虚拟磁盘
 | 0x119 | 远程删除虚拟磁盘
 | 0x11a | 远程修复虚拟磁盘
 | 0x11b | 远程虚拟磁盘扩容
 | 0x11c | 远程raid卡升级
 | 0x11d | 远程暂停RAID操作(即安全拔盘)
 | 0x121 | 本地开始抓图
 | 0x122 | 本地停止抓图
 | 0x125 | 本地配置SNMP
 | 0x126 | 本地标签操作
 | 0x131 | 远程开始抓图
 | 0x132 | 远程停止抓图
 | 0x135 | 远程配置SNMP
 | 0x136 | 远程标签操作
 | 0x140 | 本地输出口切换操作
 | 0x141 | 码流压缩性能选项配置操作
 | 0x142 | 本地N+1热备相关操作
 | 0x143 | 远程N+1热备相关操作
 | 0x144 | 本地导出ipc配置文件
 | 0x145 | 本地导入ipc配置文件
 | 0x146 | 本地升级IPC
 | 0x147 | 远程导出ipc配置文件
 | 0x148 | 远程导入ipc配置文件
 | 0x149 | 远程升级IPC
 | 0x201 | 设置大屏主屏
 | 0x202 | 设置大屏子屏
 | 0x203 | 取消大屏主屏
 | 0x204 | 取消大屏子屏
 | 0x251 | 修改输入源
 | 0x252 | 修改输出通道
 | 0x253 | 修改虚拟LED
 | 0x254 | 修改LOGO
 | 0x255 | 设置场景
 | 0x256 | 回显操作
 | 0x257 | 获取虚拟LED
 | 0x258 | 获取场景
 | 0x259 | 场景控制
 | 0x260 | 获取所有有效窗口
 | 0x261 | 获取单个窗口信息
 | 0x262 | 窗口控制
 | 0x263 | 获取场景列表
 | 0x264 | 场景控制
 | 0x265 | 设置单个场景
 | 0x266 | 获取输入信号源列表
 | 0x267 | 获取预案列表
 | 0x268 | 修改预案
 | 0x269 | 控制预案
 | 0x270 | 屏幕控制
 | 0x271 | 添加信号源
 | 0x272 | 修改信号源
 | 0x273 | 设置解码板参数
 | 0x274 | 获取解码板参数
 | 0x275 | 获取设备信息
 | 0x276 | 底图上传
 | 0x277 | 设置用户密码
 | 0x278 | 添加场景
 | 0x279 | 删除场景
 | 0x280 | 删除信号源
 | 0x281 | 添加预案
 | 0x282 | 删除预案
 | 0x283 | 获取外接矩阵配置
 | 0x284 | 设置外接矩阵配置
 | 0x285 | 获取用户配置
 | 0x286 | 设置用户配置
 | 0x287 | 获取显示墙连接配置
 | 0x288 | 设置显示墙连接配置
 | 0x289 | 获取电视墙场景
 | 0x28a | 设置电视墙场景
 | 0x28b | 获取当前使用场景
 | 0x28c | 场景切换
 | 0x300 | 本地加载硬盘
 | 0x301 | 本地删除异常不存在的硬盘
 | 0x400 | 远程开门
 | 0x401 | 远程关门
 | 0x402 | 远程常开
 | 0x403 | 远程常关
 | 0x404 | 远程手动校时
 | 0x405 | NTP自动校时
 | 0x406 | 远程清空卡号
 | 0x407 | 远程恢复默认参数
 | 0x408 | 防区布防
 | 0x409 | 防区撤防
 | 0x40a | 本地恢复默认参数
 | 0x1001 | 设置触发模式参数
 | 0x1002 | 获取触发模式参数
 | 0x1003 | 设置IO输出参数
 | 0x1004 | 获取IO输出参数
 | 0x1005 | 获取触发模式推荐参数
 | 0x1006 | 获取状态检测参数
 | 0x1007 | 设置状态检测参数
 | 0x1008 | 获取状态检测参数
 | 0x1009 | 获取视频电警模式参数
 | 0x100a | 设置视频电警模式参数
 | 0x2001 | 本地添加车辆信息
 | 0x2002 | 本地修改车辆信息
 | 0x2003 | 本地删除车辆信息
 | 0x2004 | 本地查找车辆信息
 | 0x2005 | 本地添加布控信息
 | 0x2006 | 本地修改布控信息
 | 0x2007 | 本地删除布控信息
 | 0x2008 | 本地查询布控信息
 | 0x2009 | 本地查询正常通行信息
 | 0x200a | 本地查询异常通行信息
 | 0x200b | 本地查询正常通行信息
 | 0x200c | 本地图片预览
 | 0x200d | 设置本地配置出入口参数
 | 0x200e | 获取本地配置出入口参数
 | 0x200f | 设置本地配置数据上传参数
 | 0x2010 | 获取本地配置数据上传参数
 | 0x2011 | 本地设备控制(本地开关闸)
 | 0x2012 | 本地添加外接设备信息
 | 0x2013 | 本地修改外接设备信息
 | 0x2014 | 本地删除外接设备信息
 | 0x2015 | 本地查询外接设备信息
 | 0x2016 | 本地添加收费规则
 | 0x2017 | 本地修改收费规则
 | 0x2018 | 本地删除收费规则
 | 0x2019 | 本地查询收费规则
 | 0x2020 | 本地统计正常通行信息
 | 0x2021 | 本地导出正常通行信息统计报表
 | 0x2022 | 本地统计异常通行信息
 | 0x2023 | 本地导出异常通行信息统计报表
 | 0x2024 | 本地统计行人通行信息
 | 0x2025 | 本地导出行人通行信息统计报表
 | 0x2026 | 本地查询过车收费信息
 | 0x2027 | 本地统计过车收费信息
 | 0x2028 | 本地导出过车收费信息统计报表
 | 0x2029 | 本地查询交接班信息
 | 0x2030 | 本地查询卡片信息
 | 0x2031 | 本地添加减免规则
 | 0x2032 | 本地修改减免规则
 | 0x2033 | 本地删除减免规则
 | 0x2034 | 本地查询减免规则
 | 0x2035 | 本地获取出入口控制机离线检测配置
 | 0x2036 | 本地设置出入口控制机离线检测配置
 | 0x2037 | 本地设置出入口控制机下发卡片信息
 | 0x2038 | 本地清空出入口控制机下发卡片信息
 | 0x2101 | 远程设备控制
 | 0x2102 | 设置远程配置出入口参数
 | 0x2103 | 获取远程配置出入口参数
 | 0x2104 | 设置远程配置数据上传参数
 | 0x2105 | 获取远程配置数据上传参数
 | 0x2106 | 远程获取终端基本信息
 | 0x2107 | 远程获取字符叠加参数配置
 | 0x2108 | 远程设置字符叠加参数配置
 | 0x2109 | 远程获取路口信息
 | 0x210a | 远程建立同步数据服务器
 | 0x210b | 远程获取出入口终端工作状态
 | 0x210c | 远程获取出入口终端通道状态
 | 0x210d | 远程添加外接设备信息
 | 0x210e | 远程修改外接设备信息
 | 0x210f | 远程获取出入口控制机离线检测配置
 | 0x2110 | 远程设置出入口控制机离线检测配置
 | 0x2111 | 远程设置出入口控制机下发卡片信息
 | 0x2112 | 远程清空出入口控制机下发卡片信息
 | 0x2115 | 开启远程控制车位指示灯
 | 0x2116 | 关闭远程控制车位指示灯
 | 0x2117 | 设置音量大小
 | 0x2118 | 设置音量录音
 | 0x2119 | 智能配置
 | 0x211a | 本地设置raid速度
 | 0x211b | 远程设置raid速度
 | 0x211c | 远程添加存储池
 | 0x211d | 远程删除存储池
 | 0x2120 | 远程删除图片数据
 | 0x2121 | 远程删除录像数据
 | 0x2123 | 远程设置云存储启用
 | 0x2124 | 远程设置云存储禁用
 | 0x2125 | 远程修改云存储池参数
 | 0x2126 | 远程修改云存储池容量
 | 0x2200 | 远程创建/修改视图库空间
 | 0x2201 | 远程删除视图库文件
 | 0x2202 | 远程下载视图库文件
 | 0x2203 | 远程上传视图库文件
 | 0x2204 | 本地创建/修改视图库空间
 | 0x2501 | MCU会议配置
 | 0x2502 | MCU终端配置
 | 0x2503 | MCU分组配置
 | 0x2504 | MCU会议控制
 | 0x2505 | MCU终端控制

See Also

NET_ECMS_StartFindFile_V11


NET_EHOME_DEV_REG_INFO

设备注册信息结构体

struct{
  DWORD                  dwSize;
  DWORD                  dwNetUnitType;
  BYTE                   byDeviceID[MAX_DEVICE_ID_LEN];
  BYTE                   byFirmwareVersion[24];
  NET_EHOME_IPADDRESS    struDevAdd;
  DWORD                  dwDevType;
  DWORD                  dwManufacture;
  BYTE                   byPassWord[32];
  BYTE                   sDeviceSerial[NET_EHOME_SERIAL_LEN];
  BYTE                   bySessionKey[MAX_EHOME50_MASTER_KEY_LEN];
  BYTE                   sDevName[MAX_DEVNAME_LEN];
  BYTE                   byRes[4];
}NET_EHOME_DEV_REG_INFO, *LPNET_EHOME_DEV_REG_INFO;

Members

dwSize
结构体大小
dwNetUnitType
预留，无效
byDeviceID
设备注册ID
byFirmwareVersion
固件版本
struDevAdd
设备注册时，设备的本地地址
dwDevType
设备类型
dwManufacture
设备厂家代码
byPassWord
设备登陆CMS的密码，由用户自行根据需求进行验证
sDeviceSerial
设备序列号，数字序列号
bySessionKey
Ehome5.0设备SessionKey
sDevName
设备名称
byRes
保留，置为0

See Also

NET_EHOME_CMS_LISTEN_PARAM


NET_EHOME_DEV_SESSIONKEY_EHOME50

Ehome5.0协议设备EhomeKey信息结构体

struct{
  BYTE                   sDeviceID[MAX_DEVICE_ID_LEN];
  BYTE                   sSessionKey[MAX_EHOME50_MASTER_KEY_LEN];
}NET_EHOME_DEV_SESSIONKEY_EHOME50, *LPNET_EHOME_DEV_SESSIONKEY_EHOME50;

Members

sDeviceID
设备ID
sSessionKey
设备Sessionkey

See Also

NET_ECMS_GetDeviceSessionKey_Ehome50 NET_ECMS_SetDeviceSessionKey_Ehome50


NET_EHOME_DEVICE_CFG

设备基本参数配置结构体

struct{
  DWORD    dwSize;
  BYTE     sServerName[MAX_DEVICE_NAME_LEN];
  DWORD    dwServerID;
  DWORD    dwRecycleRecord;
  DWORD    dwServerType;
  DWORD    dwChannelNum;
  DWORD    dwHardDiskNum;
  DWORD    dwAlarmInNum;
  DWORD    dwAlarmOutNum;
  DWORD    dwRS232Num;
  DWORD    dwRS485Num;
  DWORD    dwNetworkPortNum;
  DWORD    dwAuxoutNum;
  DWORD    dwAudioNum;
  BYTE     sSerialNumber[MAX_SERIALNO_LEN];
  DWORD    dwMajorScale;
  DWORD    dwMinorScale;
  BYTE     byRes[292];
}NET_EHOME_DEVICE_CFG,*LPNET_EHOME_DEVICE_CFG;

Members

dwSize
结构体大小
sServerName
设备名称
dwServerID
设备号（遥控器编号：0~255）
dwRecycleRecord
是否循环录像：0- 不循环，1- 循环
dwServerType
设备类型，本协议中只使用通用型号：1- DVR，3- DVS，30- IPC，40- IPDOME
dwChannelNum
通道个数，包括模拟+IP通道（只读）
dwHardDiskNum
硬盘个数（只读）
dwAlarmInNum
报警输入个数（模拟通道）（只读）
dwAlarmOutNum
报警输出个数（模拟通道）（只读）
dwRS232Num
RS232串口个数（只读）
dwRS485Num
RS485串口个数（只读）
dwNetworkPortNum
网络口个数（只读）
dwAuxoutNum
辅口个数（只读）
dwAudioNum
语音口个数（只读）
sSerialNumber
设备序列号（只读）
dwMajorScale
主口缩放：0- 不缩放，1- 缩放
dwMinorScale
辅口缩放：0- 不缩放，1- 缩放
byRes
保留

See Also

NET_ECMS_GetDevConfig NET_ECMS_SetDevConfig


NET_EHOME_DEVICE_INFO

设备信息结构体

struct{
  DWORD    dwSize;
  DWORD    dwChannelNumber;
  DWORD    dwChannelAmount;
  DWORD    dwDevType;
  DWORD    dwDiskNumber;
  BYTE     sSerialNumber[MAX_SERIALNO_LEN];
  DWORD    dwAlarmInPortNum;
  DWORD    dwAlarmInAmount;
  DWORD    dwAlarmOutPortNum;
  DWORD    dwAlarmOutAmount;
  DWORD    dwStartChannel;
  DWORD    dwAudioChanNum;
  DWORD    dwMaxDigitChannelNum;
  DWORD    dwAudioEncType;
  BYTE     sSIMCardSN[MAX_SERIALNO_LEN];
  BYTE     sSIMCardPhoneNum[MAX_PHOMENUM_LEN];
  DWORD    dwSupportZeroChan;
  DWORD    dwStartZeroChan;
  DWORD    dwSmartType;
  BYTE     byRes[160];
}NET_EHOME_DEVICE_INFO,*LPNET_EHOME_DEVICE_INFO;

Members

dwSize
结构体大小
dwChannelNumber
模拟视频通道个数
dwChannelAmount
总视频通道数（模拟+IP）
dwDevType
设备类型：1- DVR，3- DVS，30- IPC，40- IPDOME
dwDiskNumber
设备当前硬盘个数
sSerialNumber
设备序列号
dwAlarmInPortNum
模拟通道报警输入个数
dwAlarmInAmount
设备总报警输入个数
dwAlarmOutPortNum
模拟通道报警输出个数
dwAlarmOutAmount
设备总报警输出个数
dwStartChannel
视频起始通道号
dwAudioChanNum
语音对讲通道个数
dwMaxDigitChannelNum
设备支持的最大数字通道路数
dwAudioEncType
语音对讲音频格式：0- G722，1- G711U，2- G711A，3- G726，4- AAC，5- MP2L2
sSIMCardSN
车载设备扩展：SIM卡序列号
sSIMCardPhoneNum
车载扩展：SIM卡手机号码
dwSupportZeroChan
支持零通道的个数：0- 不支持，1- 支持1路，2- 支持2路，以此类推
dwStartZeroChan
零通道起始编号，默认10000
dwSmartType
智能类型：0- Smart（默认），1- 专业智能
byRes
保留

See Also

NET_ECMS_GetDevConfig


NET_EHOME_ETHERNET

网络参数

struct{
  NET_EHOME_IPADDR    struDevIP;
  NET_EHOME_IPADDR    struDevIPMask;
  DWORD               dwNetInterface;
  WORD                wDevPort;
  WORD                wMTU;
  BYTE                byMACAddr[MACADDR_LEN];
  BYTE                byRes[2];
}NET_EHOME_ETHERNET,*LPNET_EHOME_ETHERNET;

Members

struDevIP
设备IP地址
struDevIPMask
设备掩码地址
dwNetInterface
网卡类型：1- 10M半双工，2- 10M全双工，3- 100M半双工，4- 100M全双工，6- 1000M全双工，5- 10M/100M/1000M自适应
wDevPort
设备SDK端口号，默认：8000
wMTU
MTU参数
byMACAddr
设备MAC地址

See Also

NET_EHOME_NETWORK_CFG


NET_EHOME_FACESNAP_REPORT

人脸抓拍信息结构体

struct{
  DWORD                      dwSize;
  char                       byDeviceID[MAX_DEVICE_ID_LEN];
  DWORD                      dwVideoChannel;
  char                       byAlarmTime[MAX_TIME_LEN];
  DWORD                      dwFacePicID;
  DWORD                      dwFaceScore;
  DWORD                      dwTargetID;
  NET_EHOME_ZONE             struTarketZone;
  NET_EHOME_ZONE             struFacePicZone;
  NET_EHOME_HUMAN_FEATURE    struHumanFeature;
  DWORD                      dwStayDuration;
  DWORD                      dwFacePicLen;
  BYTE                       byFacePicUrl[MAX_URL_LEN];
  DWORD                      dwBackgroudPicLen;
  BYTE                       byBackgroudPicUrl[MAX_URL_LEN];
  BYTE                       byRetransFlag;
  BYTE                       byRes[63];
}NET_EHOME_FACESNAP_REPORT,*LPNET_EHOME_FACESNAP_REPORT;

Members

dwSize
结构体大小
byDeviceID
设备注册ID
dwVideoChannel
视频通道号
byAlarmTime
报警时间，格式：YYYY-MM-DD HH:MM:SS
dwFacePicID
人脸图ID
dwFaceScore
人脸评分，取值范围：0~100
dwTargetID
目标ID
struTarketZone
目标区域，归一化坐标：数值为当前画面的百分比大小*1000，精度为小数点后三位
struFacePicZone
人脸子图区域，归一化坐标：数值为当前画面的百分比大小*1000，精度为小数点后三位
struHumanFeature
人体属性
dwStayDuration
停留画面中时间
dwFacePicLen
人脸图长度，单位：字节
byFacePicUrl
人脸子图数据索引
dwBackgroudPicLen
背景图片长度，单位：字节
byBackgroudPicUrl
背景图片数据索引
byRetransFlag
重传标记：0-实时包，1-重传包
byRes
保留

See Also

NET_EHOME_ALARM_MSG


NET_EHOME_FINDCOND

查找条件参数结构体

struct{
  DWORD               dwSize;
  LONG                iChannel;
  DWORD               dwMaxFileCountPer;
  NET_EHOME_TIME      struStartTime;
  NET_EHOME_TIME      struStopTime;
  SEARCH_TYPE_ENUM    enumSearchType;
  union{
       BYTE           byLen[64];
       struct{
         DWORD        dwFileType;
       }struRecordFileParam;
       struct{
         DWORD        dwFileType;
       }struPicFileParam;
       struct{
         BYTE         bySearchMode;
       }struFlowParam;
  }unionSearchParam;
  BYTE                byStartIndex;
  BYTE                byRes1;
  DWORD               dwStartIndexEx;
  BYTE                byRes[122];
}NET_EHOME_FINDCOND, *LPNET_EHOME_FINDCOND;

Members

dwSize
结构体大小
iChannel
通道号，从1开始
dwMaxFileCountPer
单次搜索最大文件个数，最大个数需要考虑实际网络环境，建议最大为8
struStartTime
开始时间
struStopTime
结束时间
enumSearchType
查找类型，具体定义见下表：
enum _SEARCH_TYPE_ENUM_{
  ENUM_SEARCH_TYPE_ERR      = -1,
  ENUM_SEARCH_RECORD_FILE   = 0,
  ENUM_SEARCH_PICTURE_FILE  = 1,
  ENUM_SEARCH_FLOW_INFO     = 2
}SEARCH_TYPE_ENUM
ENUM_SEARCH_TYPE_ERR
错误类型
ENUM_SEARCH_RECORD_FILE
查找录像文件，联合体中struRecordFileParam结构体参数有效
ENUM_SEARCH_PICTURE_FILE
查找图片文件，联合体中struPicFileParam结构体参数有效
ENUM_SEARCH_FLOW_INFO
流量查询，联合体中struFlowParam结构体参数有效
unionSearchParam为文件查找类型联合体
byLen
联合体大小，64个字节
struRecordFileParam为录像文件查找参数结构体
dwFileType
查找的录像文件类型：
0xff- 全部类型录像（不包含图片类型），0- 定时录像，1- 移动报警，2- 报警触发，3- 报警|动测，
4- 报警&动测，5- 命令触发，6- 手动录像，7- 震动报警，8- 环境报警，9- 智能报警（或者取证录像），
10(0x0a)- PIR报警，11(0x0b)- 无线报警，12(0x0c)- 呼救报警，13(0x0d)- 全部报警
struPicFileParam为图片文件查找参数结构体
dwFileType
查找的图片文件类型：255(0xff)- 全部类型，0(0x00)- 定时抓图，1(0x01)- 移动侦测抓图，2(0x02)- 报警抓图，
3(0x03)- 报警|移动侦测抓图，4(0x04)- 报警&移动侦测抓图，5(0x05)- 命令触发抓图，6(0x06)- 手动抓图，
7(0x07)- 震动报警抓图，8(0x08)- 环境报警触发抓图，9(0x09)- 智能报警图片，10(0x0a)- PIR报警图片，
11(0x0b)- 无线报警图片，12(0x0c)- 呼救报警图片，13(0x0d)- 人脸侦测图片，14(0x0e)- 越界侦测图片，
15(0x0f)- 入侵区域侦测图片，16(0x10)- 场景变更侦测图片，17(0x11)- 设备本地回放时截图，
18(0x12)- 智能侦测图片，19(0x13)- 进入区域侦测图片，20(0x14)- 离开区域侦测图片，21(0x15)- 徘徊侦测图片，
22(0x16)- 人员聚集侦测图片，23(0x17)- 快速运动侦测图片，24(0x18)- 停车侦测图片，25(0x19)- 物品遗留侦测图片，
26(0x1a)- 物品拿取侦测图片，27(0x1b)- 车牌侦测图片，28(0x1c)- 客户端上传图片
struFlowParam为流量查询参数结构体
struFlowParam
查询模式：0- 无效，1- 按年查询，2- 按月查询，3- 按天查询
byStartIndex
查询起始位置，兼容老版本SDK，新版本SDK建议使用dwStartIndexEx
byRes
保留，置为0
dwStartIndexEx
扩展后的查询起始位置，增加对记录条数过大的支持，兼容byStartIndex
byRes
保留，置为0

See Also

NET_ECMS_StartFindFile


NET_EHOME_FINDDATA

文件查找结果结构体

struct{
  DWORD             dwSize;
  char              szFileName[MAX_FILE_NAME_LEN];
  NET_EHOME_TIME    struStartTime;
  NET_EHOME_TIME    struStopTime;
  DWORD             dwFileSize;
  DWORD             dwFileMainType;
  DWORD             dwFileSubType;
  DWORD             dwFileIndex;
  BYTE              byRes[128];
}NET_EHOME_FINDDATA, *LPNET_EHOME_FINDDATA;

Members

dwSize
结构体大小
szFileName
文件名
struStartTime
文件的开始时间
struStopTime
文件的结束时间
dwFileSize
文件的大小
dwFileMainType
文件主类型，具体定义请参考NET_EHOME_FINDCOND中dwFileType
dwFileSubType
文件次类型
dwFileIndex
录象文件索引
byRes
保留，置为0

See Also

NET_ECMS_FindNextFile


NET_EHOME_FLOW_COND

流量查询条件参数结构体。

struct{
  BYTE              bySearchMode;
  BYTE              byRes[3];
  NET_EHOME_TIME    struStartTime;
  NET_EHOME_TIME    struStopTime;
  DWORD             dwStartIndex;
  DWORD             dwMaxFileCountPer;
  BYTE              byRes1[64];
}NET_EHOME_FLOW_COND, *LPNET_EHOME_FLOW_COND;

Members

bySearchMode
查询模式：1-按year查询，2-按month查询，3-按day查询
byRes
保留，置为0
struStartTime
开始时间
struStopTime
结束时间
dwStartIndex
查询起始位置，从0开始
dwMaxFileCountPer
单次搜索最大个数，需要确定实际网络环境，建议最大个数为8
byRes1
保留，置为0

See Also

NET_ECMS_StartFindFile_V11


NET_EHOME_FLOW_INFO

网络流量信息结构体

struct{
  DWORD    dwSize;
  DWORD    dwFlowValue;
  DWORD    dwFlowIndex;
  BYTE     byRes[128];
}NET_EHOME_FLOW_INFO,*LPNET_EHOME_FLOW_INFO;

Members

dwSize
结构体大小
dwFlowValue
流量值，单位：KB
dwFlowIndex
流量索引，从0开始
byRes
保留，置为0

See Also

NET_ECMS_FindNextFile_V11


NET_EHOME_GPS_DATA

GPS数据信息结构体

struct{
  DWORD    dwSize;
  char     byDeviceID[MAX_DEVICE_ID_LEN];
  char     byTime[MAX_TIME_LEN];
  BYTE     bySvsNum;
  BYTE     byLocateMode;
  WORD     wPrecision;
  DWORD    dwHeight;
  int      iLatitude;
  int      iLongitude;
  DWORD    dwVehicleSpeed;
  DWORD    dwVehicleDirection;
  BYTE     byRetransFlag;
  BYTE     byRes1[3];
  DWORD    dwMileage;
  BYTE     byRes2[4];
}NET_EHOME_GPS_DATA,*LPNET_EHOME_GPS_DATA;

Members

dwSize
结构体大小
byDeviceID
设备注册ID
byTime
GPS时间（UTC时间），格式：YYYY-MM-DD HH:MM:SS
bySvsNum
卫星个数
byLocateMode
定位模式(初值0)，仅NMEA0183 3.00版本输出，值：0-自主定位，1- 差分，2- 估算，3- 数据无效
wPrecision
水平精度因子，该值为实际值*100
dwHeight
高度，单位厘米
iLatitude
纬度，转换公式为：latitude = 实际度*3600*100+实际分*60*100+实际秒*100，正数表示北纬，负数表示南纬
iLongitude
经度，转换公式为：longitude = 实际度*3600*100+实际分*60*100+实际秒*100，正数表示东经，负数表示西经
dwVehicleSpeed
速度，实际速度*1000*100，单位：厘米每小时
dwVehicleDirection
速度方向角，实际方向(正北为0)*100
byRetransFlag
重传标志位：0- 实时包，1- 重传包
byRes1
保留
dwMileage
设备里程数统计，单位为米，整型，每天第一次开机或者00:00:00时清零，后续累加当天里程数上报到中心
byRes2
保留

See Also

NET_EHOME_ALARM_MSG


NET_EHOME_GPS_INFO

GPS报警信息结构体

struct{
  DWORD    dwSize;
  char     bySampleTime[MAX_TIME_LEN];
  char     byDeviceID[MAX_DEVICE_ID_LEN];
  char     byDivision[2];
  BYTE     bySatelites;
  BYTE     byPrecision;
  DWORD    dwLongitude;
  DWORD    dwLatitude;
  DWORD    dwDirection;
  DWORD    dwSpeed;
  DWORD    dwHeight;
  BYTE     byRetransFlag;
  BYTE     byLocateMode;
  BYTE     byRes1[2];
  DWORD    dwMileage;
  BYTE     byRes[56];
}NET_EHOME_GPS_INFO,*LPNET_EHOME_GPS_INFO;

Members

dwSize
结构体大小
bySampleTime
GPS采样时间，格式：YYYY-MM-DD HH:MM:SS
byDeviceID
设备注册ID
byDivision
division[0]:'E'or'W'(东经/西经)，division[1]:'N'or'S'(北纬/南纬)
bySatelites
卫星数量
byPrecision
精度因子，原始值*100
dwLongitude
经度，取值范围为（0~180*3600*100），转换公式为：longitude = 实际度*3600*100+实际分*60*100+实际秒*100
dwLatitude
纬度，取值范围为（0~90*3600*100），转换公式为：latitude = 实际度*3600*100+实际分*60*100+实际秒*100
dwDirection
方向，取值范围为（0~359.9*100），正北方向为0，转换公式为：direction= 实际方向*100
dwSpeed
速度，取值范围为（0~999.9*100000），转换公式为：speed =实际速度*100000，相当于cm/小时
dwHeight
高度，单位：cm
byRetransFlag
重传标记：0-实时包，1-重传包
byLocateMode
定位模式(初值0)，仅NMEA0183 3.00版本输出，值：0- 自主定位，1- 差分，2- 估算，3- 数据无效
byRes1
保留
dwMileage
设备里程数统计，单位为米，整型，每天第一次开机或者00:00:00时清零，后续累加当天里程数上报到中心
byRes
保留

See Also

NET_EHOME_ALARM_MSG


NET_EHOME_HEATMAP_REPORT

热度图报警信息结构体

struct{
  DWORD                         dwSize;
  char                          byDeviceID[MAX_DEVICE_ID_LEN];
  DWORD                         dwVideoChannel;
  char                          byStartTime[MAX_TIME_LEN];
  char                          byStopTime[MAX_TIME_LEN];
  NET_EHOME_HEATMAP_VALUE       struHeatmapValue;
  NET_EHOME_PIXEL_ARRAY_SIZE    struPixelArraySize;
  BYTE                          byPixelArrayData[MAX_URL_LEN];
  BYTE                          byRetransFlag;
  BYTE                          byRes[63];
}NET_EHOME_HEATMAP_REPORT,*LPNET_EHOME_HEATMAP_REPORT;

Members

dwSize
结构体大小
byDeviceID
设备注册ID
dwVideoChannel
视频通道号
byStartTime
开始时间，格式：YYYY-MM-DD HH:MM:SS
byStopTime
结束时间，格式：YYYY-MM-DD HH:MM:SS
struHeatmapValue
热度值参数
struPixelArraySize
热度图大小参数
byPixelArrayData
热度图数据索引
byRetransFlag
重传标记：0- 实时包，1- 重传包
byRes
保留

See Also

NET_EHOME_ALARM_MSG


NET_EHOME_HEATMAP_VALUE

热度值信息结构体

struct{
  DWORD    dwMaxHeatMapValue;
  DWORD    dwMinHeatMapValue;
  DWORD    dwTimeHeatMapValue;
}NET_EHOME_HEATMAP_VALUE, *LPNET_EHOME_HEATMAP_VALUE;

Members

dwMaxHeatMapValue
最大热度值
dwMinHeatMapValue
最小热度值
dwTimeHeatMapValue
平均热度值

See Also

NET_EHOME_HEATMAP_REPORT


NET_EHOME_HUMAN_FEATURE

人体属性信息结构体

struct{
  BYTE    byAgeGroup;
  BYTE    bySex;
  BYTE    byEyeGlass;
  BYTE    byRes[13];
}NET_EHOME_HUMAN_FEATURE, *LPNET_EHOME_HUMAN_FEATURE;

Members

byAgeGroup
年龄属性：1-婴幼儿，2-儿童，3-少年，4-青少年，5-青年，6-壮年，7-中年，8-中老年，9-老年
bySex
性别属性：1-男，2-女
byEyeGlass
是否戴眼睛：1-不戴，2-戴
byRes
保留

See Also

NET_EHOME_FACESNAP_REPORT


NET_EHOME_IMAGE_CFG

图像质量参数结构体

struct{
  DWORD    dwSize;
  BYTE     byHue;
  BYTE     byContrast;
  BYTE     byBright;
  BYTE     bySaturation;
  BYTE     byRes[24];
}NET_EHOME_IMAGE_CFG,*LPNET_EHOME_IMAGE_CFG;

Members

dwSize
结构体大小
byHue
色调，取值范围：0~255
byContrast
对比度，取值范围：0~255
byBright
亮度，取值范围：0~255
bySaturation
饱和度，取值范围：0~255
byRes
保留

See Also

NET_ECMS_GetDevConfig NET_ECMS_SetDevConfig


NET_EHOME_IPADDR

IP地址结构体

struct{
  char    sIpV4[16];
  char    sIpV6[128];
}NET_EHOME_IPADDR, *LPNET_EHOME_IPADDR;

Members

sIpV4
设备IPv4地址
sIpV6
设备IPv6地址


NET_EHOME_IPADDRESS

IP地址结构体

struct{
  char    szIP[128];
  WORD    wPort;
  BYTE    byRes[2];
}NET_EHOME_IPADDRESS, *LPNET_EHOME_IPADDRESS;

Members

szIP
IP地址
wPort
端口号
byRes
保留，置为0


NET_EHOME_LINKAGE_ALARMOUT

报警输出联动参数结构体

struct{
  DWORD    dwAnalogAlarmOutNum;
  BYTE     byAnalogAlarmOut[MAX_ANALOG_ALARMOUT];
  BYTE     byRes[5000];
}NET_EHOME_LINKAGE_ALARMOUT,*LPNET_EHOME_LINKAGE_ALARMOUT;

Members

dwAnalogAlarmOutNum
模拟报警数量（只读）
byAnalogAlarmOut
模拟报警输出，数组下标表示报警输出口，数组值：0- 不使用，1- 使用
byRes
保留，置为0

See Also

NET_EHOME_ALARMIN_LINKAGE_TYPE


NET_EHOME_LINKAGE_PTZ

PTZ联动参数结构体

struct{
  BYTE    byUsePreset;
  BYTE    byUseCurise;
  BYTE    byUseTrack;
  BYTE    byRes1;
  WORD    wPresetNo;
  WORD    wCuriseNo;
  WORD    wTrackNo;
  BYTE    byRes2[6];
}NET_EHOME_LINKAGE_PTZ,*LPNET_EHOME_LINKAGE_PTZ;

Members

byUsePreset
是否调用预置点：0- 不使用，1- 使用
byUseCurise
是否调用巡航：0- 不使用，1- 使用
byUseTrack
是否调用轨迹：0- 不使用，1- 使用
byRes1
保留
wPresetNo
预置点号，取值范围：1~256，协议中规定是1～256，实际已有设备支持300
wCuriseNo
巡航路径号，范围：1~16
wTrackNo
轨迹号，范围：1~16
byRes2
保留

See Also

NET_EHOME_ALARMIN_LINKAGE_TYPE


NET_EHOME_LISTEN_PREVIEW_CFG

预览监听参数结构体

struct{
  NET_EHOME_IPADDRESS    struIPAdress;
  PREVIEW_NEWLINK_CB     fnNewLinkCB;
  void                   *pUser;
  BYTE                   byLinkMode;
  BYTE                   byRes[127];
}NET_EHOME_LISTEN_PREVIEW_CFG, *LPNET_EHOME_LISTEN_PREVIEW_CFG;

Members

struIPAdress
[in] 本地监听信息，IP为0.0.0.0的情况下，默认为本地地址，多个网卡的情况下，默认为从操作系统获取到的第一个
fnNewLinkCB
[in] 预览请求回应回调函数，当收到预览连接请求后，SDK会回调该回调函数
pUser
[in] 用户数据
byLinkMode
[in] 监听的请求连接模式：0- TCP，1- UDP
byRes
[in] 保留，置为0

Callback Function

typedef BOOL (CALLBACK *PREVIEW_NEWLINK_CB)(
  LONG                        lLinkHandle,
  NET_EHOME_NEWLINK_CB_MSG    *pNewLinkCBMsg,
  void                        *pUser
);

Callback Function Parameters

lLinkHandle
[out] 预览连接句柄，由SDK内部分配，停止取流时需要调用NET_ESTREAM_StopPreview接口释放相关资源
pNewLinkCBMsg
[out] 预览请求参数
pUserData
[out] 用户参数

Remarks

  • 回调函数(PREVIEW_NEWLINK_CB)返回TRUE表示用户接受这路预览；回调函数返回FALSE表示用户不接受这路预览，SDK自动释放相关资源。

See Also

NET_ESTREAM_StartListenPreview NET_ESTREAM_StopPreview


NET_EHOME_LISTEN_VOICETALK_CFG

语音对讲监听参数结构体

struct{
  NET_EHOME_IPADDRESS     struIPAdress;
  VOICETALK_NEWLINK_CB    fnNewLinkCB;
  void                    *pUser;
  BYTE                    byRes[128];
}NET_EHOME_LISTEN_VOICETALK_CFG, *LPNET_EHOME_LISTEN_VOICETALK_CFG;

Members

struIPAdress
[in] 本地监听信息，IP为0.0.0.0的情况下，默认为本地地址，多个网卡的情况下默认为从操作系统获取到的第一个网卡
fnNewLinkCB
[in] 语音对讲请求回应回调函数，当SDK收到设备发送的对讲连接请求后回调该函数
pUserData
[in] 用户数据
byRes
[in] 保留，置为0

Callback Function

typedef BOOL (CALLBACK *VOICETALK_NEWLINK_CB)(
  LONG                                   lHandle,
  NET_EHOME_VOICETALK_NEWLINK_CB_INFO    *pNewLinkCBInfo,
  void                                   *pUser
);

Callback Function Parameters

lHandle
[out] 语音对讲句柄，由SDK内部分配，停止语音对讲时需要调用NET_ESTREAM_StopVoiceTalk接口释放相关资源
pNewLinkCBInfo
[out] 语音对讲数据回调参数
pUser
[out] 用户参数

Remarks

  • 回调函数(VOICETALK_NEWLINK_CB)返回TRUE表示用户接受这路语音对讲；回调函数返回FALSE表示用户不接受这路语音对讲，SDK自动释放相关资源。

See Also

NET_ESTREAM_StartListenVoiceTalk


NET_EHOME_LOCAL_ACCESS_SECURITY

设备主动接入安全性配置结构体

struct{
  DWORD    dwSize;
  BYTE     byAccessSecurity;
  BYTE     byRes[127];
}NET_EHOME_LOCAL_ACCESS_SECURITY,*LPNET_EHOME_LOCAL_ACCESS_SECURITY;

Members

dwSize
结构体大小
byAccessSecurity
0- 兼容模式（允许任意版本的协议接入），1- 普通模式（只支持4.0以下版本，不支持协议安全的版本接入），2- 安全模式（只允许4.0以上版本，支持协议安全的版本接入）
byRes
保留，置为0

See Also

NET_ECMS_GetSDKLocalCfg NET_ECMS_SetSDKLocalCfg

NET_ESTREAM_GetSDKLocalCfg NET_ESTREAM_SetSDKLocalCfg

NET_EALARM_GetSDKLocalCfg NET_EALARM_SetSDKLocalCfg


NET_EHOME_MANUAL_IOOUT_CTRL

IO输出手动控制参数

struct{
  DWORD    dwSize;
  DWORD    dwChan;
  DWORD    dwDelayTime;
  BYTE     byAction;
  BYTE     byRes[19];
}NET_EHOME_MANUAL_IOOUT_CTRL,*LPNET_EHOME_MANUAL_IOOUT_CTRL;

Members

dwSize
结构体大小
dwChan
IO输出编号，从1开始
dwDelayTime
报警输出持续时间（秒），值为0表示一直输出，否则按指定时间长度进行输出
byAction
控制类型：0- 关闭报警输出，1- 开启报警输出
byRes
保留，置为0

See Also

NET_ECMS_RemoteControl


NET_EHOME_NETWORK_CFG

网络参数结构体

struct{
  DWORD                 dwSize;
  NET_EHOME_ETHERNET    struEtherNet;
  NET_EHOME_IPADDR      struGateWayIP;
  NET_EHOME_IPADDR      struMultiCastIP;
  NET_EHOME_IPADDR      struDDNSServer1IP;
  NET_EHOME_IPADDR      struDDNSServer2IP;
  NET_EHOME_IPADDR      struAlarmHostIP;
  WORD                  wAlarmHostPort;
  WORD                  wIPResolverPort;
  NET_EHOME_IPADDR      struIPResolver;
  NET_EHOME_PPPOECFG    struPPPoE;
  WORD                  wHTTPPort;
  BYTE                  byRes[674];
}NET_EHOME_NETWORK_CFG,*LPNET_EHOME_NETWORK_CFG;

Members

dwSize
结构体大小
struEtherNet
以太网口
struGateWayIP
网关地址
struMultiCastIP
多播地址
struDDNSServer1IP
DDNS1服务器IP地址
struDDNSServer2IP
DDNS2服务器IP地址
struAlarmHostIP
报警主机IP地址
wAlarmHostPort
报警主机端口号
wIPResolverPort
解析服务器端口
struIPResolver
解析服务器地址
struPPPoE
PPPoE参数
wHTTPPort
HTTP端口
byRes
保留

See Also

NET_ECMS_GetDevConfig NET_ECMS_SetDevConfig


NET_EHOME_NEWLINK_CB_MSG

预览连接请求消息结构体

struct{
  BYTE     szDeviceID[MAX_DEVICE_ID_LEN];
  LONG     lSessionID;
  DWORD    dwChannelNo;
  BYTE     byStreamType;
  BYTE     byRes1[3];
  char     sDeviceSerial[NET_EHOME_SERIAL_LEN];
  BYTE     byRes[112];
}NET_EHOME_NEWLINK_CB_MSG,*LPNET_EHOME_NEWLINK_CB_MSG;

Members

szDeviceID
设备ID，设备标示符
lSessionID
设备分配给该取流会话的ID
dwChannelNo
设备通道号
byStreamType
码流类型：0- 主码流，1- 子码流
byRes1
保留，置为0
sDeviceSerial
设备序列号，数字序列号
byRes
保留，置为0

See Also

NET_EHOME_LISTEN_PREVIEW_CFG


NET_EHOME_NOTICE_PICURL

图片URL信息结构体

struct{
  DWORD    dwSize;
  char     byDeviceID[MAX_DEVICE_ID_LEN];
  WORD     wPicType;
  WORD     wAlarmType;
  DWORD    dwAlarmChan;
  char     byAlarmTime[MAX_TIME_LEN];
  DWORD    dwCaptureChan;
  char     byPicTime[MAX_TIME_LEN];
  char     byPicUrl[MAX_URL_LEN];
  DWORD    dwManualSnapSeq;
  BYTE     byRetransFlag;
  BYTE     byTimeType;
  BYTE     byRes[30];
}NET_EHOME_NOTICE_PICURL,*LPNET_EHOME_NOTICE_PICURL;

Members

dwSize
结构体大小
byDeviceID
设备注册ID
wPicType
图片业务类型：0- PU定时抓图上传中心，1- PU报警抓图上传中心(此时AlarmType、AlarmChan、AlarmTime三个节点有效)，2- CU手动抓图上传中心，3- CU下载图片，4- 外部触发PU抓图上传中心（比如DVR通过串口接收到POS机刷卡触发抓图请求）
wAlarmType
报警类型（wPicType为1时有效）：6- 报警输入，7- 视频遮挡，8- 移动侦测，11- PIR报警，12- 门磁报警，13- 呼救报警
dwAlarmChan
报警通道编号（wPicType为1时有效）
byAlarmTime
报警产生时间（wPicType为1时有效），格式：YYYY-MM-DD HH:MM:SS
dwCaptureChan
图片抓拍通道编号
byPicTime
图片时间，格式：YYYY-MM-DD HH:MM:SS
byPicUrl
图片数据索引
dwManualSnapSeq
请求流水号（字节整数），PicType值为2、3时有效
byRetransFlag
重传标志位：0- 实时包，1- 重传包
byTimeType
时间类型：0- 设备本地时间，2- UTC时间
byRes
保留

See Also

NET_EHOME_ALARM_MSG


NET_EHOME_NOTIFY_FAIL_INFO

异步失败通知信息结构体

struct{
  DWORD    dwSize;
  char     byDeviceID[MAX_DEVICE_ID_LEN];
  WORD     wFailedCommand;
  WORD     wPicType;
  DWORD    dwManualSnapSeq;
  BYTE     byRetransFlag;
  BYTE     byRes[31];
}NET_EHOME_NOTIFY_FAIL_INFO,*LPNET_EHOME_NOTIFY_FAIL_INFO;

Members

dwSize
结构体大小
byDeviceID
设备注册ID
wFailedCommand
失败的命令：1- 抓图失败
wPicType
图片业务类型（wFailedCommand为1时有效）：0- PU定时抓图上传中心，1- PU报警抓图上传中心，2- CU手动抓图上传中心，3- CU下载图片，4- 外部触发PU抓图上传中心（比如DVR通过串口接收到POS机刷卡触发抓图请求）
dwManualSnapSeq
请求流水号（字节整数），PicType值为2、3时有效
byRetransFlag
重传标志位：0- 实时包，1- 重传包
byRes
保留

See Also

NET_EHOME_ALARM_MSG


NET_EHOME_PIC_CFG

OSD显示配置结构体

struct{
  DWORD    dwSize;
  BYTE     byChannelName[NAME_LEN];
  BYTE     bIsShowChanName;
  WORD     wChanNameXPos;
  WORD     wChanNameYPos;
  BYTE     bIsShowOSD;
  WORD     wOSDXPos;
  WORD     wOSDYPos;
  BYTE     byOSDType;
  BYTE     byOSDAtrib;
  BYTE     byRes1[2];
  BYTE     bIsShowWeek;
  BYTE     byRes2[64];
}NET_EHOME_PIC_CFG, *LPNET_EHOME_PIC_CFG;

Members

dwSize
结构体大小
byChannelName
通道名称，长度不超过31字节
bIsShowChanName
是否显示通道名称：0- 不显示，1- 显示
wChanNameXPos
通道名称显示X坐标，按照704x576来配置
wChanNameYPos
通道名称显示Y坐标，按照704x576来配置，坐标值需要为16的倍数
bIsShowOSD
是否显示OSD：0- 不显示，1- 显示
wOSDXPos
OSD显示X坐标，按照704x576来配置
wOSDYPos
OSD显示Y坐标，按照704x576来配置，坐标值需要为16的倍数
byOSDType
OSD类型(年月日格式)：
0- XXXX-XX-XX(年月日)
1- XX-XX-XXXX(月日年)
2- XXXX年XX月XX日
3- XX月XX日XXXX年
4- XX-XX-XXXX(日月年)
5- XX日XX月XXXX年
byRes1
保留，置为0
bIsShowWeek
是否显示星期：0- 不显示，1- 显示
byRes
保留，置为0

See Also

NET_ECMS_GetDevConfig NET_ECMS_SetDevConfig


NET_EHOME_PIC_FILE

图片文件查询结果结构体。

struct{
  DWORD             dwSize;
  char              sFileName[MAX_FILE_NAME_LEN];
  NET_EHOME_TIME    struPicTime;
  DWORD             dwFileSize;
  DWORD             dwFileMainType;
  DWORD             dwFileIndex;
  BYTE              byRes[128];
}NET_EHOME_PIC_FILE, *LPNET_EHOME_PIC_FILE;

Members

dwSize
结构体大小
szFileName
图片文件名
struPicTime
图片生成时间
dwFileSize
图片文件的大小
dwFileMainType
文件类型：0（0x00）-定时抓图，1（0x01）-移动侦测抓图，2（0x02）-报警抓图，3（0x03）-报警|移动侦测抓图，4（0x04）-报警&移动侦测抓图，5（0x05）-命令触发抓图，
6（0x06）-手动抓图，7（0x07）-震动报警抓图，8（0x08）-环境报警触发抓图，9（0x09）-智能报警图片，10（0x0a）-PIR报警图片，
11（0x0b）-无线报警图片，12（0x0c）-呼救报警图片，13（0x0d）-人脸侦测图片，14（0x0e）-越界侦测图片，15（0x0f）-入侵区域侦测图片，
16（0x10）-场景变更侦测图片，17（0x11）-设备本地回放时截图，18（0x12）-智能侦测图片，19（0x13）-进入区域侦测图片，20（0x14）-离开区域侦测图片，
21（0x15）-徘徊侦测图片，22（0x16）-人员聚集侦测图片，23（0x17）-快速运动侦测图片，24（0x18）-停车侦测图片，25（0x19）-物品遗留侦测图片，
26（0x1a）-物品拿取侦测图片，27（0x1b）-车牌侦测图片，28（0x1c）-客户端上传图片
dwFileIndex
图片文件索引，从0开始
byRes
保留，置为0

See Also

NET_ECMS_FindNextFile_V11


NET_EHOME_PIC_FILE_COND

图片文件查询条件参数结构体。

struct{
  DWORD             dwChannel;
  DWORD             dwPicType;
  NET_EHOME_TIME    struStartTime;
  NET_EHOME_TIME    struStopTime;
  DWORD             dwStartIndex;
  DWORD             dwMaxFileCountPer;
  BYTE              byRes[64];
}NET_EHOME_PIC_FILE_COND, *LPNET_EHOME_PIC_FILE_COND;

Members

dwChannel
通道号
dwPicType
图片类型：0xff-全部类型，0（0x00）-定时抓图，1（0x01）-移动侦测抓图，2（0x02）-报警抓图，3（0x03）-报警|移动侦测抓图，4（0x04）-报警&移动侦测抓图，5（0x05）-命令触发抓图，
6（0x06）-手动抓图，7（0x07）-震动报警抓图，8（0x08）-环境报警触发抓图，9（0x09）-智能报警图片，10（0x0a）-PIR报警图片，
11（0x0b）-无线报警图片，12（0x0c）-呼救报警图片，13（0x0d）-人脸侦测图片，14（0x0e）-越界侦测图片，15（0x0f）-入侵区域侦测图片，
16（0x10）-场景变更侦测图片，17（0x11）-设备本地回放时截图，18（0x12）-智能侦测图片，19（0x13）-进入区域侦测图片，20（0x14）-离开区域侦测图片，
21（0x15）-徘徊侦测图片，22（0x16）-人员聚集侦测图片，23（0x17）-快速运动侦测图片，24（0x18）-停车侦测图片，25（0x19）-物品遗留侦测图片，
26（0x1a）-物品拿取侦测图片，27（0x1b）-车牌侦测图片，28（0x1c）-客户端上传图片
struStartTime
开始时间
struStopTime
结束时间
dwStartIndex
查询起始位置，从0开始
dwMaxFileCountPer
单次搜索最大文件个数，最大文件个数，需要确定实际网络环境，建议最大个数为8
byRes
保留，置为0

See Also

NET_ECMS_StartFindFile_V11


NET_EHOME_PIXEL_ARRAY_SIZE

热度图大小信息结构体

struct{
  DWORD    dwLineValue;
  DWORD    dwColumnValue;
}NET_EHOME_PIXEL_ARRAY_SIZE, *LPNET_EHOME_PIXEL_ARRAY_SIZE;

Members

dwLineValue
像素点行值
dwColumnValue
像素点列值

See Also

NET_EHOME_HEATMAP_REPORT


NET_EHOME_PLAYBACK_DATA_CB_INFO

回放数据信息结构体

struct{
  DWORD    dwType;
  BYTE     *pData;
  DWORD    dwDataLen;
  BYTE     byRes[128];
}NET_EHOME_PLAYBACK_DATA_CB_INFO,*LPNET_EHOME_PLAYBACK_DATA_CB_INFO;

Members

dwType
数据类型：0- 码流头，1- 码流数据
pData
数据缓冲区，存放码流头或者数据
dwDataLen
数据长度
byRes
保留

See Also

NET_EHOME_PLAYBACK_DATA_CB_PARAM


NET_EHOME_PLAYBACK_DATA_CB_PARAM

回放数据回调参数结构体

struct{
  PLAYBACK_DATA_CB    fnPlayBackDataCB;
  void                *pUserData;
  BYTE                byStreamFormat;
  BYTE                byRes[127];
}NET_EHOME_PLAYBACK_DATA_CB_PARAM, *LPNET_EHOME_PLAYBACK_DATA_CB_PARAM;

Members

fnPlayBackDataCB
[in] 回放数据回调函数
pUserData
[in] 用户数据
byStreamFormat
[in] 封装格式：0- PS
byRes
[in] 保留，置为0

Callback Function

typedef BOOL (CALLBACK *PLAYBACK_DATA_CB)(
  LONG                               lPlayBackLinkHandle,
  NET_EHOME_PLAYBACK_DATA_CB_INFO    *pDataCBInfo,
  void                               *pUserData
);

Callback Function Parameters

lPlayBackLinkHandle
[out] 回放句柄，从PLAYBACK_NEWLINK_CB返回出来的值
*pDataCBInfo
[out] 回放数据信息
pUserData
[out] 用户参数

Remarks

  • 回调函数(PLAYBACK_DATA_CB)返回TRUE表示用户接受这路回放；回调函数返回FALSE表示用户不接受这路回放，SDK自动释放相关资源。

See Also

NET_ESTREAM_SetPlayBackDataCB


NET_EHOME_PLAYBACK_INFO_IN

回放请求输入参数结构体。

struct{
  DWORD                  dwSize;
  DWORD                  dwChannel;
  BYTE                   byPlayBackMode;
  BYTE                   byRes[3];
  union{
     BYTE                byLen[512];
     struct{
       char              szFileName[MAX_FILE_NAME_LEN];
       DWORD             dwSeekType;
       DWORD             dwFileOffset;
       DWORD             dwFileSpan;
     }struPlayBackbyName;
     struct{
       NET_EHOME_TIME    struStartTime;
       NET_EHOME_TIME    struStopTime;
     }struPlayBackbyTime;
  }unionPlayBackMode;
  NET_EHOME_IPADDRESS    struStreamSever;
}NET_EHOME_PLAYBACK_INFO_IN, *LPNET_EHOME_PLAYBACK_INFO_IN;

Members

dwSize
结构体大小
dwChannel
回放的通道号
byPlayBackMode
回放下载模式：0- 按文件名回放，1- 按时间回放（保留，暂不支持）
byRes
保留
unionPlayBackMode为回放下载模式参数联合体
byLen
联合体大小，512个字节
struPlayBackbyName为按文件名回放参数结构体
szFileName
回放的文件名
dwSeekType
计算类型：0-按字节长度计算，1-按秒数计算
dwFileOffset
文件偏移量，从哪个位置开始回放或下载：dwSeekType为0时，偏移量以字节计算；dwSeekType为1时，偏移量以秒数计算
dwFileSpan
下载的文件大小，值为0表示下载直到该文件结束为止，其他大于0的值：dwSeekType为0时，大小以字节计算，dwSeekType为1时，大小以秒数计算
struPlayBackbyTime为按时间回放参数结构体
struStartTime
按时间回放的开始时间
struStopTime
按时间回放的结束时间
struStreamSever
流媒体服务器地址

Remarks

目前通过EHOME SDK（或协议），设备只支持按文件回放，不支持按时间回放。

See Also

NET_ECMS_StartPlayBack


NET_EHOME_PLAYBACK_INFO_OUT

回放请求输出参数结构体。

struct{
  LONG    lSessionID;
  BYTE    byRes[128];
}NET_EHOME_PLAYBACK_INFO_OUT, *LPNET_EHOME_PLAYBACK_INFO_OUT;

Members

lSessionID
SessionID，回放请求会话ID，由设备返回，0表示无效
byRes
保留，置为0

See Also

NET_ECMS_StartPlayBack MV_XML_RegisterUpdateCallBack


NET_EHOME_PLAYBACK_LISTEN_PARAM

回放监听参数结构体

struct{
  NET_EHOME_IPADDRESS    struIPAdress;
  PLAYBACK_NEWLINK_CB    fnNewLinkCB;
  void                   *pUserData;
  BYTE                   byLinkMode;
  BYTE                   byRes[127];
}NET_EHOME_PLAYBACK_LISTEN_PARAM, *LPNET_EHOME_PLAYBACK_LISTEN_PARAM;

Members

struIPAdress
[in] 本地监听信息，IP为0.0.0.0的情况下，默认为本地地址，多个网卡的情况下，默认为从操作系统获取到的第一个
fnNewLinkCB
[in] 回放请求回调函数，当收到回放连接请求后，SDK会回调该回调函数
pUserData
[in] 用户数据
byLinkMode
[in] 监听的请求连接模式：0- TCP，1- UDP(UDP保留)
byRes
[in] 保留，置为0

Callback Function

typedef BOOL (CALLBACK *PLAYBACK_NEWLINK_CB)(
  LONG                                  lPlayBackLinkHandle,
  NET_EHOME_PLAYBACK_NEWLINK_CB_INFO    *pNewLinkCBInfo,
  void                                  *pUserData
);

Callback Function Parameters

lPlayBackLinkHandle
[out] 回放连接句柄，由SDK内部分配，停止回放时需要调用NET_ESTREAM_StopPlayBack释放相关资源
pNewLinkCBInfo
[out] 回放请求回调参数
pUserData
[out] 用户参数

Remarks

  • 回调函数(PLAYBACK_NEWLINK_CB)返回TRUE表示用户接受这路回放；回调函数返回FALSE表示用户不接受这路回放，SDK自动释放相关资源。
  • 设备不支持V4.0新的回放协议时，lSessionID为0（无效），则不同设备或者不同通道同时回放时，可以使用不同的端口和回调函数进行监听，以便区分回放连接的设备和通道。

See Also

NET_ESTREAM_StartListenPlayBack NET_ESTREAM_StopPlayBack


NET_EHOME_PLAYBACK_NEWLINK_CB_INFO

设备回放连接请求消息结构体

struct{
  char     szDeviceID[NET_EHOME_DEVICEID_LEN];
  LONG     lSessionID;
  DWORD    dwChannelNo;
  char     sDeviceSerial[NET_EHOME_SERIAL_LEN];
  BYTE     byRes[108];
}NET_EHOME_PLAYBACK_NEWLINK_CB_INFO,*LPNET_EHOME_PLAYBACK_NEWLINK_CB_INFO;

Members

szDeviceID
设备ID，设备标示符
lSessionID
SessionID，回放请求会话ID，由NET_ECMS_StartPlayBack接口的输出参数返回，0表示无效
dwChannelNo
设备通道号，0表示无效
sDeviceSerial
设备序列号，数字序列号
byRes
保留，置为0

See Also

NET_EHOME_PLAYBACK_LISTEN_PARAM


NET_EHOME_POINT

点参数结构体

struct{
  DWORD    dwX;
  DWORD    dwY;
  BYTE     byRes[4];
}NET_EHOME_POINT, *LPNET_EHOME_POINT;

Members

dwX
X轴坐标
dwY
Y轴坐标
byRes
保留，置为0

See Also

NET_ECMS_RemoteControl


NET_EHOME_PPPOECFG

网络参数PPP0E

struct{
  DWORD               dwPPPoE;
  char                sPPPoEUser[NAME_LEN];
  char                sPPPoEPassword[PASSWD_LEN];
  NET_EHOME_IPADDR    struPPPoEIP;
}NET_EHOME_PPPOECFG,*LPNET_EHOME_PPPOECFG;

Members

dwPPPoE
是否启用PPPOE：1- 启用，0- 禁用
sPPPoEUser
PPPoE用户名
sPPPoEPassword
PPPoE密码
struPPPoEIP
PPPoE IP地址

See Also

NET_EHOME_NETWORK_CFG


NET_EHOME_PRESET_PARAM

云台预置点参数结构体

struct{
  DWORD    dwSize;
  BYTE     byPresetCmd;
  BYTE     byRes1[3];
  DWORD    dwPresetIndex;
  BYTE     byRes2[32];
}NET_EHOME_PRESET_PARAM, *LPNET_EHOME_PRESET_PARAM;

Members

dwSize
结构体大小
byPresetCmd
预置点控制命令：1- 设置预置点，2- 清除预置点，3- 转到预置点
byRes1
保留，置为0
dwPresetIndex
预置点编号
byRes2
保留，置为0

See Also

NET_ECMS_RemoteControl


NET_EHOME_PREVIEW_CB_MSG

预览数据参数结构体

struct{
  BYTE     byDataType;
  BYTE     byRes1[3];
  void     *pRecvdata;
  DWORD    dwDataLen;
  BYTE     byRes2[128];
}NET_EHOME_PREVIEW_CB_MSG,*LPNET_EHOME_PREVIEW_CB_MSG;

Members

byDataType
数据类型：NET_DVR_SYSHEAD(1)- 码流头，NET_DVR_STREAMDATA(2)- 码流数据
byRes1
保留
pRecvdata
数据缓冲区，存放码流头或者数据
dwDataLen
数据长度
byRes2
保留

See Also

NET_EHOME_PREVIEW_DATA_CB_PARAM


NET_EHOME_PREVIEW_DATA_CB_PARAM

预览数据回调参数结构体

struct{
  PREVIEW_DATA_CB    fnPreviewDataCB;
  void               *pUserData;
  BYTE               byStreamFormat;
  BYTE               byRes[127];
}NET_EHOME_PREVIEW_DATA_CB_PARAM, *LPNET_EHOME_PREVIEW_DATA_CB_PARAM;

Members

fnPreviewDataCB
[in] 预览数据回调函数
pUserData
[in] 用户数据
byStreamFormat
[in] 封装格式：0- PS
byRes
[in] 保留，置为0

Callback Function

typedef void (CALLBACK *PREVIEW_DATA_CB)(
  LONG                        lPreviewHandle,
  NET_EHOME_PREVIEW_CB_MSG    *pPreviewCBMsg,
  void                        *pUserData
);

Callback Function Parameters

lPreviewHandle
[out] 预览句柄，从PREVIEW_NEWLINK_CB返回出来的值
*pPreviewCBMsg
[out] 预览码流数据回调参数
pUserData
[out] 用户参数

See Also

NET_ESTREAM_SetPreviewDataCB


NET_EHOME_PREVIEWINFO_IN

预览请求输入参数结构体。

struct{
  int                    iChannel;
  DWORD                  dwStreamType;
  DWORD                  dwLinkMode;
  NET_EHOME_IPADDRESS    struStreamSever;
}NET_EHOME_PREVIEWINFO_IN, *LPNET_EHOME_PREVIEWINFO_IN;

Members

iChannel
通道号
dwStreamType
码流类型：0- 主码流，1- 子码流, 2- 第三码流
dwLinkMode
连接模式：0- TCP方式，1- UDP方式，2- HRUDP方式（可靠传输）
struStreamSever
流媒体服务器地址（IP地址和端口）

See Also

NET_ECMS_StartGetRealStream


NET_EHOME_PREVIEWINFO_IN_V11

预览请求输入参数结构体。

struct{
  int                    iChannel;
  DWORD                  dwStreamType;
  DWORD                  dwLinkMode;
  NET_EHOME_IPADDRESS    struStreamSever;
  BYTE                   byDelayPreview;
  BYTE                   byRes[31];
}NET_EHOME_PREVIEWINFO_IN_V11, *LPNET_EHOME_PREVIEWINFO_IN_V11;

Members

iChannel
通道号，视频起始通道号、零通道起始编号等通过NET_ECMS_GetDevConfig(命令:NET_EHOME_GET_DEVICE_INFO)获取
dwStreamType
码流类型：0- 主码流，1- 子码流, 2- 第三码流
dwLinkMode
连接模式：0- TCP方式，1- UDP方式，2- HRUDP方式（可靠传输）
struStreamSever
流媒体服务器地址（IP地址和端口）
byDelayPreview
预览延时模式：0- 实时取流，1- 延时取流
byRes
保留，置为0

See Also

NET_ECMS_StartGetRealStreamV11


NET_EHOME_PREVIEWINFO_OUT

预览请求输出参数结构体。

struct{
  LONG    lSessionID;
  BYTE    byRes[128];
}NET_EHOME_PREVIEWINFO_OUT, *LPNET_EHOME_PREVIEWINFO_OUT;

Members

lSessionID
SessionID，预览请求会话ID
byRes
保留，置为0

See Also

NET_ECMS_StartGetRealStream


NET_EHOME_PTZ_PARAM

PTZ控制参数结构体

struct{
  DWORD    dwSize;
  BYTE     byPTZCmd;
  BYTE     byAction;
  BYTE     bySpeed;
  BYTE     byRes[29];
}NET_EHOME_PTZ_PARAM, *LPNET_EHOME_PTZ_PARAM;

Members

dwSize
结构体大小
byPTZCmd
云台命令
宏定义 | 宏定义值 | 含义
PTZ_UP | 0 | 向上
PTZ_DOWN | 1 | 向下
PTZ_LEFT | 2 | 向左
PTZ_RIGHT | 3 | 向右
PTZ_UPLEFT | 4 | 向左上
PTZ_DOWNLEFT | 5 | 向左下
PTZ_UPRIGHT | 6 | 向右上
PTZ_DOWNRIGHT | 7 | 向右下
PTZ_ZOOMIN | 8 | 变焦－
PTZ_ZOOMOUT | 9 | 变焦＋
PTZ_FOCUSNEAR | 10 | 聚焦－
PTZ_FOCUSFAR | 11 | 聚焦＋
PTZ_IRISSTARTUP | 12 | 光圈变大
PTZ_IRISSTOPDOWN | 13 | 光圈变小
PTZ_LIGHT | 14 | 补光灯
PTZ_WIPER | 15 | 雨刷
PTZ_AUTO | 16 | 自动
byAction
云台动作：0- 开始云台动作，1- 停止云台动作
bySpeed
云台速度，取值范围：0~7，数值越大速度越快
byRes
保留

See Also

NET_ECMS_RemoteControl


NET_EHOME_PUSHPLAYBACK_IN

回放请求推流输入参数结构体

struct{
  DWORD    dwSize;
  LONG     lSessionID;
  BYTE     byRes[128];
}NET_EHOME_PUSHPLAYBACK_IN,*LPNET_EHOME_PUSHPLAYBACK_IN;

Members

dwSize
结构体大小
lSessionID
SessionID，回放请求会话ID，由NET_ECMS_StartPlayBack设置的回放请求回调函数返回
byRes
保留，置为0

Remarks

CMS服务器通过NET_ECMS_StartPlayBack向设备发送预览请求，设备分配一个SessionID返回给CMS服务器，然后CMS服务器调用NET_ECMS_StartPushPlayBack向设备发送“推送回放码流”的请求命令，设备接收到该命令之后向回放请求里面指定的流媒体服务器推送回放码流。

See Also

NET_ECMS_StartPushPlayBack


NET_EHOME_PUSHPLAYBACK_OUT

回放请求推流输出参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byRes[128];
}NET_EHOME_PUSHPLAYBACK_OUT, *LPNET_EHOME_PUSHPLAYBACK_OUT;

Members

dwSize
结构体大小
byRes
保留，置为0

See Also

NET_ECMS_StartPushPlayBack


NET_EHOME_PUSHSTREAM_IN

预览请求推流输入参数结构体

struct{
  DWORD    dwSize;
  LONG     lSessionID;
  BYTE     byRes[128];
}NET_EHOME_PUSHSTREAM_IN,*LPNET_EHOME_PUSHSTREAM_IN;

Members

dwSize
结构体大小
lSessionID
SessionID，预览请求会话ID，由NET_ECMS_StartGetRealStream设置的取流请求回调函数返回
byRes
保留，置为0

Remarks

CMS服务器通过NET_ECMS_StartGetRealStream向设备发送预览请求，设备分配一个SessionID返回给CMS服务器，然后CMS服务器调用NET_ECMS_StartPushRealStream向设备发送“推送实时码流”的请求命令，设备接收到该命令之后向预览请求里面指定的流媒体服务器推送实时码流。

See Also

NET_ECMS_StartPushRealStream


NET_EHOME_PUSHSTREAM_OUT

预览请求推流输出参数结构体

struct{
  DWORD    dwSize;
  BYTE     byRes[128];
}NET_EHOME_PUSHSTREAM_OUT,*LPNET_EHOME_PUSHSTREAM_OUT;

Members

dwSize
结构体大小
byRes
保留，置为0

See Also

NET_ECMS_StartPushRealStream


NET_EHOME_PUSHVOICE_IN

语音对讲请求推流输入参数结构体

struct{
  DWORD    dwSize;
  LONG     lSessionID;
  BYTE     byRes[128];
}NET_EHOME_PUSHVOICE_IN,*LPNET_EHOME_PUSHVOICE_IN;

Members

dwSize
结构体大小
lSessionID
SessionID，语音对讲会话ID，由NET_ECMS_StartVoiceWithStmServer接口的输出参数返回
byRes
保留，置为0

Remarks

CMS服务器通过NET_ECMS_StartVoiceWithStmServer向设备发送语音对讲请求，设备分配一个SessionID返回给CMS服务器，然后CMS服务器调用NET_ECMS_StartPushVoiceStream向设备发送“推送语音数据”的请求命令，设备接收到该命令之后向语音对讲请求里面指定的流媒体服务器推送语音数据。

See Also

NET_ECMS_StartPushVoiceStream


NET_EHOME_PUSHVOICE_OUT

语音对讲请求推流输出参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byRes[128];
}NET_EHOME_PUSHVOICE_OUT, *LPNET_EHOME_PUSHVOICE_OUT;

Members

dwSize
结构体大小
byRes
保留，置为0

See Also

NET_ECMS_StartPushVoiceStream


NET_EHOME_PZIN_PARAM

3D框选放大缩小参数结构体

struct{
  DWORD             dwSize;
  BYTE              byAction;
  BYTE              byRes1[3];
  NET_EHOME_ZONE    struArea;
  BYTE              byRes2[32];
}NET_EHOME_PZIN_PARAM, *LPNET_EHOME_PZIN_PARAM;

Members

dwSize
结构体大小
byAction
动作：0- 缩小（右上->左下，右下->左上），1- 放大（左上->右下，左下->右上）
byRes1
保留，置为0
struArea
框选范围
byRes2
保留，置为0

See Also

NET_ECMS_RemoteControl


NET_EHOME_REC_FILE

录像文件查询结果结构体。

struct{
  DWORD             dwSize;
  char              sFileName[MAX_FILE_NAME_LEN];
  NET_EHOME_TIME    struStartTime;
  NET_EHOME_TIME    struStopTime;
  DWORD             dwFileSize;
  DWORD             dwFileMainType;
  DWORD             dwFileSubType;
  DWORD             dwFileIndex;
  BYTE              byRes[128];
}NET_EHOME_REC_FILE, *LPNET_EHOME_REC_FILE;

Members

dwSize
结构体大小
szFileName
录像文件名
struStartTime
文件的开始时间
struStopTime
文件的结束时间
dwFileSize
文件的大小
dwFileMainType
文件主类型：0xff-全部类型，0-定时录像，1-移动报警，2-报警触发，3-报警|动测，4-报警&动测，5-命令触发，6-手动录像，7-震动报警，8-环境报警，9-智能报警（或者取证录像），10（0x0a）-PIR报警，11（0x0b）-无线报警，12（0x0c）-呼救报警，13（0x0d）-全部报警
dwFileSubType
文件次类型：0-不是取证录像类型，1-超车，2-占道，3-停车，4-逆行，5-倒车，6-掉头，7-变道，8-压线，9-其他，主类型（dwFileMainType）为9并且为取证录像时有效
dwFileIndex
录象文件索引，从0开始
byRes
保留，置为0

See Also

NET_ECMS_FindNextFile_V11


NET_EHOME_REC_FILE_COND

录像文件查询条件参数结构体。

struct{
  DWORD             dwChannel;
  DWORD             dwRecType;
  NET_EHOME_TIME    struStartTime;
  NET_EHOME_TIME    struStopTime;
  DWORD             dwStartIndex;
  DWORD             dwMaxFileCountPer;
  BYTE              byRes[64];
}NET_EHOME_REC_FILE_COND, *LPNET_EHOME_REC_FILE_COND;

Members

dwChannel
通道号
dwRecType
录像类型：0xff-全部类型，0-定时录像，1-移动报警，2-报警触发，3-报警|动测，4-报警&动测，5-命令触发，6-手动录像，7-震动报警，8-环境报警，9-智能报警（或者取证录像），10（0x0a）-PIR报警，11（0x0b）-无线报警，12（0x0c）-呼救报警，13（0x0d）-全部报警
struStartTime
开始时间
struStopTime
结束时间
dwStartIndex
查询起始位置，从0开始
dwMaxFileCountPer
单次搜索最大文件个数，最大文件个数，需要确定实际网络环境，建议最大个数为8
byRes
保留，置为0

See Also

NET_ECMS_StartFindFile_V11


NET_EHOME_RECORD_CHAN

关联录像通道参数结构体

struct{
  BYTE    byAnalogChanNum;
  BYTE    byAnalogChan[MAX_ANALOG_CHANNUM];
  BYTE    byRes1[3];
  WORD    wDigitChanNum;
  BYTE    byDigitChan[MAX_DIGIT_CHANNUM];
  BYTE    byRes2[62];
}NET_EHOME_RECORD_CHAN,*LPNET_EHOME_RECORD_CHAN;

Members

byAnalogChanNum
模拟通道数（只读）
byAnalogChan
模拟通道，数组下标表示通道，数组取值：0- 不使用，1- 使用
byRes1
保留，置为0
wDigitChanNum
数字通道个数（只读）
byDigitChan
数字通道，数组下标表示通道，数组取值：0- 不使用，1- 使用
byRes2
保留，置为0

See Also

NET_EHOME_ALARMIN_CFG


NET_EHOME_REMOTE_CTRL_PARAM

远程控制参数结构体

struct{
  DWORD    dwSize;
  void     *lpCondBuffer;
  DWORD    dwCondBufferSize;
  void     *lpInbuffer;
  DWORD    dwInBufferSize;
  BYTE     byRes[32];
}NET_EHOME_REMOTE_CTRL_PARAM, *LPNET_EHOME_REMOTE_CTRL_PARAM;

Members

dwSize
结构体大小
lpCondBuffer
条件参数缓冲区
dwCondBufferSize
条件参数缓冲区长度
lpInbuffer
控制参数缓冲区
dwInBufferSize
控制参数缓冲区长度
byRes
保留，置为0

Remarks

对于不同的控制功能（NET_ECMS_RemoteControl中的配置命令dwCommand），lpCondBuffer、lpInbuffer分别对应不同的内容，详见NET_ECMS_RemoteControl接口中"Remarks"说明。

See Also

NET_ECMS_RemoteControl


NET_EHOME_SCHEDTIME

时间参数结构体

struct{
  BYTE    byStartHour;
  BYTE    byStartMin;
  BYTE    byStopHour;
  BYTE    byStopMin;
}NET_EHOME_ALARM_TIME_COND,*LPNET_EHOME_ALARM_TIME_COND;

Members

byStartHour
开始时间：时
byStartMin
开始时间：分
byStopHour
结束时间：时
byStopMin
结束时间：分

See Also

NET_EHOME_ALARM_TIME_CFG


NET_EHOME_SERVER_INFO

服务器信息结构体

struct{
  DWORD                        dwSize;
  DWORD                        dwKeepAliveSec;
  DWORD                        dwTimeOutCount;
  NET_EHOME_IPADDRESS          struTCPAlarmSever;
  NET_EHOME_IPADDRESS          struUDPAlarmSever;
  DWORD                        dwAlarmServerType;
  NET_EHOME_IPADDRESS          struNTPSever;
  DWORD                        dwNTPInterval;
  NET_EHOME_IPADDRESS          struPictureSever;
  DWORD                        dwPicServerType;
  NET_EHOME_BLACKLIST_SEVER    struBlackListServer;
  BYTE                         byRes[128];
}NET_EHOME_SERVER_INFO, *LPNET_EHOME_SERVER_INFO;

Members

dwSize
结构体大小
dwKeepAliveSec
心跳间隔，单位：秒，默认：15秒
dwTimeOutCount
心跳超时次数，0表示默认（6次）
struTCPAlarmSever
报警服务器地址（TCP协议）
struUDPAlarmSever
报警服务器地址（UDP协议）
dwAlarmServerType
报警服务器类型：0- 只支持UDP协议上报，1- 支持UDP、TCP两种协议上报
struNTPSever
NTP服务器地址
dwNTPInterval
NTP校时间隔，单位：秒
struPictureSever
图片服务器地址
dwPicServerType
图片服务器类型：1- VRB图片服务器，0- Tomcat图片服务器
struBlackListServer
黑名单服务器
byRes
保留，置为0

See Also

NET_EHOME_CMS_LISTEN_PARAM


NET_EHOME_TIME

时间参数结构体。

struct{
  WORD    wYear;
  BYTE    byMonth;
  BYTE    byDay;
  BYTE    byHour;
  BYTE    byMinute;
  BYTE    bySecond;
  BYTE    byRes1;
  WORD    wMSecond;
  BYTE    byRes2[2];
}NET_EHOME_TIME, *LPNET_EHOME_TIME;

Members

wYear
年
byMonth
月
byDay
日
byHour
时
byMinute
分
bySecond
秒
byRes1
保留
wMSecond
毫秒
byRes2[2]
保留


NET_EHOME_VERSION_INFO

版本信息结构体

struct{
  DWORD    dwSize;
  BYTE     sSoftwareVersion[MAX_VERSION_LEN];
  BYTE     sDSPSoftwareVersion[MAX_VERSION_LEN];
  BYTE     sPanelVersion[MAX_VERSION_LEN];
  BYTE     sHardwareVersion[MAX_VERSION_LEN];
  BYTE     byRes[124];
}NET_EHOME_VERSION_INFO,*LPNET_EHOME_VERSION_INFO;

Members

dwSize
结构体大小
sSoftwareVersion
主控版本
sDSPSoftwareVersion
编码版本
sPanelVersion
面板版本
sHardwareVersion
硬件版本

See Also

NET_ECMS_GetDevConfig


NET_EHOME_VOICE_TALK_IN

语音对讲请求输入参数结构体

struct{
  DWORD                  dwVoiceChan;
  NET_EHOME_IPADDRESS    struStreamSever;
  BYTE                   byRes[128];
}NET_EHOME_VOICE_TALK_IN,*LPNET_EHOME_VOICE_TALK_IN;

Members

dwVoiceChan
语音对讲通道号
struStreamSever
流媒体服务器地址
byRes
保留，置为0

See Also

NET_ECMS_StartVoiceWithStmServer


NET_EHOME_VOICE_TALK_OUT

语音对讲请求输出参数结构体。

struct{
  LONG    lSessionID;
  BYTE    byRes[128];
}NET_EHOME_VOICE_TALK_OUT, *LPNET_EHOME_VOICE_TALK_OUT;

Members

lSessionID
SessionID，语音对讲请求会话ID，由设备返回
byRes
保留，置为0

See Also

NET_ECMS_StartVoiceWithStmServer


NET_EHOME_VOICETALK_DATA

语音对讲数据参数结构体。

struct{
  BYTE     *pSendBuf;
  DWORD    dwDataLen;
  BYTE     byRes[128];
}NET_EHOME_VOICETALK_DATA, *LPNET_EHOME_VOICETALK_DATA;

Members

pSendBuf
音频数据缓冲区
dwDataLen
音频数据长度
byRes
保留，置为0

See Also

NET_ESTREAM_SendVoiceTalkData


NET_EHOME_VOICETALK_DATA_CB_INFO

语音数据信息结构体

struct{
  BYTE     *pData;
  DWORD    dwDataLen;
  BYTE     byRes[128];
}NET_EHOME_VOICETALK_DATA_CB_INFO,*LPNET_EHOME_VOICETALK_DATA_CB_INFO;

Members

pData
数据缓冲区，存放语音对讲音频数据
dwDataLen
数据长度
byRes
保留

See Also

NET_EHOME_VOICETALK_DATA_CB_PARAM


NET_EHOME_VOICETALK_DATA_CB_PARAM

语音对讲音频数据回调参数结构体

struct{
  VOICETALK_DATA_CB    fnVoiceTalkDataCB;
  void                 *pUserData;
  BYTE                 byRes[128];
}NET_EHOME_VOICETALK_DATA_CB_PARAM, *LPNET_EHOME_VOICETALK_DATA_CB_PARAM;

Members

fnVoiceTalkDataCB
[in] 语音对讲音频数据回调函数
pUserData
[in] 用户数据
byRes
[in] 保留，置为0

Callback Function

typedef BOOL (CALLBACK *VOICETALK_DATA_CB)(
  LONG                                lHandle,
  NET_EHOME_VOICETALK_DATA_CB_INFO    *pDataCBInfo,
  void                                *pUserData
);

Callback Function Parameters

lHandle
[out] 语音对讲句柄，跟NET_ESTREAM_StartListenVoiceTalk设置的监听回调函数（VOICETALK_NEWLINK_CB）返回的句柄一致
pDataCBInfo
[out] 语音对讲音频数据信息
pUserData
[out] 用户参数

Remarks

  • 回调函数(VOICETALK_DATA_CB)返回TRUE表示用户接受这路语音对讲；回调函数返回FALSE表示用户不接受这路语音对讲，SDK自动释放相关资源。

See Also

NET_ESTREAM_SetVoiceTalkDataCB


NET_EHOME_VOICETALK_NEWLINK_CB_INFO

设备语音对讲连接请求消息结构体

struct{
  char     szDeviceID[NET_EHOME_DEVICEID_LEN];
  DWORD    dwEncodeType;
  char     sDeviceSerial[NET_EHOME_SERIAL_LEN];
  DWORD    dwAudioChan;
  LONG     lSessionID;
  BYTE     byRes[128];
}NET_EHOME_VOICETALK_NEWLINK_CB_INFO, *LPNET_EHOME_VOICETALK_NEWLINK_CB_INFO;

Members

szDeviceID
设备ID，设备标示符
dwEncodeType
当前对讲设备的语音编码类型：0- OggVorbis，1- G711U，2- G711A，3- G726，4- AAC，5- MP2L2，6- PCM
sDeviceSerial
设备序列号，数字序列号
dwAudioChan
语音对讲通道号
lSessionID
SessionID，语音对讲会话ID，由设备返回
byRes
保留，置为0

See Also

NET_EHOME_LISTEN_VOICETALK_CFG


NET_EHOME_VOICETALK_PARA

语音对讲或转发参数结构体

struct{
  BOOL                  bNeedCBNoEncData;
  fVoiceDataCallBack    cbVoiceDataCallBack;
  DWORD                 dwEncodeType;
  void                  *pUser;
  BYTE                  byVoiceTalk;
  BYTE                  byRes[63];
}NET_EHOME_VOICETALK_PARA, *LPNET_EHOME_VOICETALK_PARA;

Members

bNeedCBNoEncData
需要回调的语音类型：0- 编码后语音，1- 编码前语音(语音转发时不支持)
cbVoiceDataCallBack
语音数据回调函数
dwEncodeType
设备的语音编码类型：0- G722，1- G711U，2- G711A，3- G726，4- AAC，5- MP2L2，6- PCM
pUser
用户数据
byVoiceTalk
语音对讲模式：0- 语音对讲，1- 语音转发
byRes
保留，置为0

Callback Function

typedef void (CALLBACK *fVoiceDataCallBack)(
  LONG     iVoiceComHandle,
  char     *pRecvDataBuffer,
  DWORD    dwBufSize,
  DWORD    dwEncodeType,
  BYTE     byAudioFlag,
  void     *pUser
);

Callback Function Parameters

iVoiceComHandle
[out] 语音对讲或语音转发句柄，NET_ECMS_StartVoiceTalk的返回值
pRecvDataBuffer
[out] 存放音频数据的缓冲区指针
dwBufSize
[out] 音频数据大小
dwEncodeType
[out] 音频数据编码类型：0- G722，1- G711U，2- G711A，3- G726，4- AAC，5- MP2L2，6- PCM
byAudioFlag
[out] 音频数据来源：0- 本地采集的数据，1- 设备发过来的语音数据
pUser
[out] 用户参数

See Also

NET_ECMS_StartVoiceTalk


NET_EHOME_XML_CFG

配置透传参数结构体

struct{
  void     *pCmdBuf;
  DWORD    dwCmdLen;
  void     *pInBuf;
  DWORD    dwInSize;
  void     *pOutBuf;
  DWORD    dwOutSize;
  DWORD    dwSendTimeOut;
  DWORD    dwRecvTimeOut;
  BYTE     byRes[32];
}NET_EHOME_XML_CFG, *LPNET_EHOME_XML_CFG;

Members

pCmdBuf
[in] 字符串格式命令
dwCmdLen
[in] 字符串格式命令长度
pInBuf
[in] 输入数据
dwInSize
[in] 输入参数缓冲区大小
pOutBuf
[out] 输出参数
dwOutSize
[in] 输出参数缓冲区大小
dwSendTimeOut
[in] 数据发送超时时间，单位ms，默认：5s
dwRecvTimeOut
[in] 数据接收超时时间，单位ms，默认：5s
byRes
[in] 保留，置为0

Remarks

SDK只做发送和接收，不对数据进行修改校验，需要用户自己保证数据的正确性。

See Also

NET_ECMS_XMLConfig


NET_EHOME_XML_REMOTE_CTRL_PARAM

控制信令透传参数结构体

struct{
  DWORD    dwSize;
  void     *lpInbuffer;
  DWORD    dwInBufferSize;
  DWORD    dwSendTimeOut;
  DWORD    dwRecvTimeOut;
  BYTE     byRes[32];
}NET_EHOME_XML_REMOTE_CTRL_PARAM, *LPNET_EHOME_XML_REMOTE_CTRL_PARAM;

Members

dwSize
[in] 结构体大小
lpInbuffer
[in] 输入数据
dwInBufferSize
[in] 输入参数缓冲区大小
dwSendTimeOut
[in] 数据发送超时时间，单位ms，默认：5s
dwRecvTimeOut
[in] 数据接收超时时间，单位ms，默认：5s
byRes
[in] 保留，置为0

See Also

NET_ECMS_XMLRemoteControl


NET_EHOME_ZONE

区域参数结构体

struct{
  DWORD    dwX;
  DWORD    dwY;
  DWORD    dwWidth;
  DWORD    dwHeight;
}NET_EHOME_ZONE, *LPNET_EHOME_ZONE;

Members

dwX
X轴坐标
dwY
Y轴坐标
dwWidth
宽度
dwHeight
高度

See Also

NET_EHOME_PZIN_PARAM NET_EHOME_FACESNAP_REPORT