//IRNet.h #ifndef __IRNET_H__ #define __IRNET_H__ #include "VSNETStructDef.h" #include #if defined(PLATFORM_WIN_X64) typedef __int64 INT_PFW, *PINT_PFW; typedef unsigned __int64 UINT_PFW, *PUINT_PFW; #else typedef int INT_PFW, *PINT_PFW; typedef unsigned int UINT_PFW, *PUINT_PFW; typedef float FLOAT; #endif // PLATFORM_WIN_X64 #ifndef CSTYLE #ifdef __cplusplus #define CSTYLE extern "C" #else #define CSTYLE #endif #endif//CSTYLE #ifndef CNET_APIIMPORT #if defined(WIN32) #ifdef NET_API #define CNET_APIIMPORT CSTYLE __declspec(dllexport) #else #define CNET_APIIMPORT CSTYLE __declspec(dllimport) #endif // NET_API #elif defined (SYS_LINUX) #ifdef NET_API #define CNET_APIIMPORT CSTYLE __attribute__((visibility("default")))//__attribute__((__stdcall)) #else #define CNET_APIIMPORT CSTYLE #endif #endif #endif//CNET_APIIMPORT #ifndef IRNET_HANDLE #define IRNET_HANDLE typedef void *IRNETHANDLE; #endif // !IRNET_HANDLE #ifndef IRNET_HANDLE_VALID #define IRNET_HANDLE_VALID(handle) (handle != (IRNETHANDLE)-1) #endif // !IRNET_FAILED #ifndef CALLINGCONVEN #ifdef WIN32 #define CALLINGCONVEN __stdcall #else #define CALLINGCONVEN #endif #endif // !CALLINGCONVEN #define LAUMSG_LINKMSG 1 ///< connect server link message #define LAUMSG_ALARM 4 ///< sensor alarm #define LAUMSG_OUTPUTSTATUS 5 ///< alarm out status #define LAUMSG_SERVERRECORD 11 ///< server record status #define LAUMSG_DISKFULL 23 ///0:成功 * @attention 仅当filename为NULL时,才会解析memaddr */ CNET_APIIMPORT IRNETHANDLE CALLINGCONVEN IRNET_DevCalib(DeviceBaseInfo info, DevCalibType type, char *filename, unsigned char* memaddr = NULL, unsigned int memsize = 0, short group = 0, void* context = NULL, FINISHCALLBACK pCallback = NULL); /** * @brief 注册服务器通道上线检测回调函数 * @param[in] pchancheck 服务器通道上线检测回调函数 * @return TRUE表示成功,FALSE表示失败 * @attention 在服务器通道注册回调函数中只能调用IRNET_RVSRegMsgCallback、IRNET_RVSSetChanServerID、IRNET_ClientMediaData三个函数 不能调用其它SDK函数,调用其它SDK函数将会产生死锁情况。如果要调用其它SDK函数请在通道消息回调函数中通知连接成功后再调用 * @see IRNET_RVSStartServer */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_RVSRegSerCheckCallback(RVSCHANNELCALLBACK pchancheck); /** * @brief 启动监听服务器主动注册服务 * @param[in] m_pRvsInfo 绑定监听端口信息,指向结构VSNETRVSINFO的指针 * @return TRUE表示成功,FALSE表示失败 * @attention 如果你想使用转发服务,设备上线后必须使用IRNET_RVSSetChanServerID赋予设备在转发服务器中的名字。转发服务请参看IRNET_StartListenClient * @see IRNET_RVSStopServer */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_RVSStartServer(RVSINFOREG *m_pRvsInfo); /** * @brief 注册服务器通道报警消息回调函数 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] palarmcallback 服务器报警消息回调函数 * @param[in] context 回调函数上下文 * @return TRUE表示成功,FALSE表示失败 * @see IRNET_RVSStartServer,IRNET_RVSRegSerCheckCallback */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_RVSRegMsgCallback(IRNETHANDLE hHandle, RVSALARMCALLBACK palarmcallback, void *context); /** * @brief 设置服务器的ID,该ID用于转发 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] pSerID 服务器ID,作为转发的服务器唯一标识,其它客户端连接时m_sername则为该ID * @return TRUE表示成功,FALSE表示失败 * @attention 要使用客服端通过转发连接该设备时,设备名称就是pSerID设置的值。 * @see IRNET_RVSStartServer,IRNET_RVSRegSerCheckCallback */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_RVSSetChanServerID(IRNETHANDLE hHandle, char *pSerID); /** * @brief 启动或停止数据传输 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] bStart TRUE:设备将启动视频、音频数据传输给该用户,FALSE:设备停止数据传输 * @return TRUE表示成功,FALSE表示失败 * @attention 该接口只是对于TCP或UDP连接时,可停止数据传输,对于多播不会停止数据传输,但接收数据线程可以无数据 * @see IRNET_RVSStartServer,IRNET_RVSRegSerCheckCallback */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientMediaData(IRNETHANDLE hHandle, BOOL bStart); /** * @brief 停止监听服务器主动注册服务 * @return TRUE表示成功,FALSE表示失败 * @see IRNET_RVSStartServer */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_RVSStopServer(); /** * @brief 设置转发服务器参数 * @param[in] m_pRedirect 指向结构IRNET_REDIRECTORINFO的指针 * @return TRUE表示成功,FALSE表示失败 * @see IRNET_RVSStartServer */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_SetRedirectorInfo(IRNET_REDIRECTORINFO *m_pRedirect); /** * @brief 启动转发服务器 * @param[in] m_localAddrIP 本机的IP地址,如果为NULL,SDK将自动获取所在主机的IP地址,如果主机有多个IP地址,可以指定一个IP地址进行监听 * @return 0:成功 4:帮定端口错误 5:分配内存错误 * @attention IRNET_RVSStartServer 函数是允许设备主动注册上线,也就是推模式上线IRNET_ClientStartNtFile 函数是允许通过转发服务器搜索前端设备的文件,是转发服务器的扩展,目前只有推模式和部分设备支持 * @see IRNET_StopListenClient */ CNET_APIIMPORT int CALLINGCONVEN IRNET_StartListenClient(char *m_localAddrIP = NULL); /** * @brief 停止转发服务器 * @return TRUE表示成功,FALSE表示失败 * @see IRNET_StartListenClient */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_StopListenClient(); ///////////////////透明串口/////////////////////////// /** * @brief 开启透明串口连接 * @param[in] m_sername 设备名称,小于等于24个字符 * @param[in] m_url 设备地址 * @param[in] m_username 用户名,小于等于20个字符 * @param[in] m_password 密码,小于等于20个字符 * @param[in] iSerialPort 串口号;0:RS485:1:RS232 * @param[in] pSerialInfo 串口参数 * @param[in] fSerialDataCallBack 串口接收回调函数 * @param[in] context 用户上下文 * @param[in] wserport 设备端口 * @return -1:连接失败,〉0:透明串口句柄 * @par VSSERIAL_INFO结构 * @code typedef struct{ int baudrate; //波特率, 50,75,110,150,300,600,1200,2400,4800,9600,19200\n char databit; //数据位, 5,6,7,8\n char stopbit; //停止位, 1,2 char checkbit; //效验位, 0-无校验,1-奇校验,2-偶校验,3-固定为1,4-固定为0 char flowcontrol; //流控, 0-无流控,1-软流控,2-硬流控 }VSSERIAL_INFO; * @endcode * @par 回调函数参数说明 * @code * @endcode * @see IRNET_ClientSerialStop,IRNET_ClientSerialRecvRestart,IRNET_ClientSerialRecvPause,IRNET_ClientSerialSendNew */ CNET_APIIMPORT IRNETHANDLE CALLINGCONVEN IRNET_ClientSerialStart(char *m_sername,char *m_url,char *m_username,char *m_password,int iSerialPort, VSSERIAL_INFO *pSerialInfo, pfSerialDataCallBack fSerialDataCallBack, void *context,WORD wserport); /** * @brief 关闭透明串口连接 * @param[in] hSerial 透明串口句柄,IRNET_ClientSerialStart返回值 * @return TRUE表示成功,FALSE表示失败 * @see IRNET_ClientSerialStart */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientSerialStop(IRNETHANDLE hSerial); /** * @brief 通过透明串口发送数据 * @param[in] hSerial 透明串口句柄,IRNET_ClientSerialStart返回值 * @param[in] pSendBuff 发送数据指针 * @param[in] BuffSize 数据长度 * @return TRUE表示成功,FALSE表示失败 * @see IRNET_ClientSerialStart */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientSerialSendNew(IRNETHANDLE hSerial,char *pSendBuff,DWORD BuffSize); /** * @brief 透明串口接收数据暂停 * @param[in] hSerial 透明串口句柄,IRNET_ClientSerialStart返回值 * @return TRUE表示成功,FALSE表示失败 * @see IRNET_ClientSerialStart */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientSerialRecvPause(IRNETHANDLE hSerial); /** * @brief 透明串口接收数据重新开始 * @param[in] hSerial 透明串口句柄,IRNET_ClientSerialStart返回值 * @return TRUE表示成功,FALSE表示失败 * @see IRNET_ClientSerialStart */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientSerialRecvRestart(IRNETHANDLE hSerial); /** * @brief 播放音频 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @return TRUE表示成功,FALSE表示失败 * @see IRNET_ClientStart,IRNET_ClientStopAudio * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientPlayAudio(IRNETHANDLE hHandle); /** * @brief 停止音频 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @return TRUE表示成功,FALSE表示失败 * @see IRNET_ClientStart,IRNET_ClientPlayAudio * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientStopAudio(IRNETHANDLE hHandle); /** * @brief 升级rom * @param[in] m_sername 设备名称,小于等于24字符 * @param[in] m_url 设备IP地址 * @param[in] m_username 连接用户名,小于等于20字符 * @param[in] m_password 连接密码,小于等于20字符 * @param[in] m_wserport 连接端口 * @param[in] m_szRomPath rom文件路径 * @return void 空 * @attention 不要在多线程中使用该接口,此接口为非线程安全 * @see IRNET_GetUploadRomRst */ CNET_APIIMPORT void CALLINGCONVEN IRNET_StartUploadRom(char *m_sername, char *m_url, char *m_username, char *m_password, WORD m_wserport, char* m_szRomPath); /** * @brief 获取rom升级状态 * @return 状态 2: "目前没有升级事件";\n 1: "正在升级";\n 0: "升级成功";\n -1: "打开rom文件失败";\n -2: "读取rom文件失败";\n -3: "url无效";\n -4: "连接失败";\n -5: "发送数据失败";\n -6: "用户名密码错误";\n -7: "升级线程启动失败";\n "其他错误 * @see IRNET_StartUploadRom */ CNET_APIIMPORT int CALLINGCONVEN IRNET_GetUploadRomRst(); /** * @brief 搜索可用的wifi * @param[in] m_sername 设备名称,小于等于24字符 * @param[in] m_url 设备IP地址 * @param[in] m_username 连接用户名,小于等于20字符 * @param[in] m_password 连接密码,小于等于20字符 * @param[in] m_pWifiList wifi列表 * @param[in] wserport 连接端口 * @return 0-失败,否则成功 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientWifiSearch(char *m_sername, char *m_url, char *m_username, char *m_password, VSNETWIFISSIDLIST *m_pWifiList, WORD wserport); /****----------智能分析--------------****/ /** * @brief 智能分析使能 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] bEnalbe 使能 true-启用 false-禁用 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientIntelligentAnalysisAddShield,IRNET_ClientIntelligentAnalysisGetShield,IRNET_ClientIntelligentAnalysisSetShield,IRNET_ClientIntelligentAnalysisDeleteShield,IRNET_ClientIntelligentAnalysisSaveShield * @see IRNET_ClientIntelligentAnalysisTargetFilterCallback,IRNET_ClientIntelligentAnalysisSetMinTargetFilter,IRNET_ClientIntelligentAnalysisSetMaxTargetFilter,IRNET_ClientIntelligentAnalysisSaveTargetFilter * @see IRNET_ClientIntelligentAnalysisAddCordon,IRNET_ClientIntelligentAnalysisGetCordon,IRNET_ClientIntelligentAnalysisSetCordon,IRNET_ClientIntelligentAnalysisCordonDirc,IRNET_ClientIntelligentAnalysisDeleteCordon,IRNET_ClientIntelligentAnalysisSaveCordon * @see IRNET_ClientIntelligentAnalysisAddSmart,IRNET_ClientIntelligentAnalysisGetSmart,IRNET_ClientIntelligentAnalysisSetSmart,IRNET_ClientIntelligentAnalysisDeleteSmart,IRNET_ClientIntelligentAnalysisSaveSmart * @attention 智能分析功能暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientIntelligentAnalysisEnable(IRNETHANDLE hHandle, bool bEnalbe); /** * @brief 添加屏蔽区 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @return 当前的区域索引 * @retval >= 0 当前索引 * @retval <0 失败 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable */ CNET_APIIMPORT int CALLINGCONVEN IRNET_ClientIntelligentAnalysisAddShield(IRNETHANDLE hHandle); /** * @brief 获取屏蔽区数量 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @return 数量 * @retval >= 0 当前数量 * @retval <0 失败 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable */ CNET_APIIMPORT int CALLINGCONVEN IRNET_ClientIntelligentAnalysisGetShield(IRNETHANDLE hHandle); /** * @brief 设置当前操作的屏蔽区索引 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] regionIndex 区域索引 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientIntelligentAnalysisSetShield(IRNETHANDLE hHandle, int regionIndex); /** * @brief 删除指定的屏蔽区 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] regionIndex 区域索引 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientIntelligentAnalysisDeleteShield(IRNETHANDLE hHandle, int regionIndex); /** * @brief 保存屏蔽区信息 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientIntelligentAnalysisSaveShield(IRNETHANDLE hHandle); /** * @brief 设置目标过滤尺寸回调(鼠标绘制尺寸的时候反馈尺寸大小) * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] maxSizeCallback 最大尺寸回调 * @param[in] maxSizeContext 最大尺寸回调附加的自定义数据 * @param[in] minSizeCallback 最小尺寸回调 * @param[in] minSizeContext 最小尺寸回调附加的自定义数据 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientIntelligentAnalysisTargetFilterCallback(IRNETHANDLE hHandle, TargeFilterCallback maxSizeCallback, void* maxSizeContext, TargeFilterCallback minSizeCallback, void* minSizeContext); /** * @brief 设置最小目标过滤尺寸 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in,out] curWidth 当前尺寸的宽(该参数不为NULL时,将输出当前的宽) * @param[in,out] curHeight 当前尺寸的高(该参数不为NULL时,将输出当前的高) * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientIntelligentAnalysisSetMinTargetFilter(IRNETHANDLE hHandle, int * curWidth, int*curHeight); /** * @brief 设置最大目标过滤尺寸 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in,out] curWidth 当前尺寸的宽(该参数不为NULL时,将输出当前的宽) * @param[in,out] curHeight 当前尺寸的高(该参数不为NULL时,将输出当前的高) * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientIntelligentAnalysisSetMaxTargetFilter(IRNETHANDLE hHandle, int * curWidth, int*curHeight); /** * @brief 保存目标过滤尺寸 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @attention 最大尺寸的面积比最小尺寸的面积大才能保存 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientIntelligentAnalysisSaveTargetFilter(IRNETHANDLE hHandle); /** * @brief 添加警戒线 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] arrowDir 箭头方向 0-左 1-右 2-双向(两侧) * @return 当前操作的警戒线索引 * @retval >= 0 当前索引 * @retval <0 失败 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT int CALLINGCONVEN IRNET_ClientIntelligentAnalysisAddCordon(IRNETHANDLE hHandle, int arrowDir); /** * @brief 获取警戒线数量 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @return 当前警戒线数量 * @retval >= 0 数量 * @retval <0 失败 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT int CALLINGCONVEN IRNET_ClientIntelligentAnalysisGetCordon(IRNETHANDLE hHandle); /** * @brief 设置当前警戒线索引 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] regionIndex 索引 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientIntelligentAnalysisSetCordon(IRNETHANDLE hHandle, int regionIndex); /** * @brief 设置或获取当前警戒线检测方向 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] isSet 设置 1-设置 0-获取 * @param[in,out] cordonDirc 当前警戒线的方向 0-左侧 1-右侧 2-两侧\n 当isSet=1时 *cordonDirc为输入参数 当0=isSet时 cordonDirc由调用者分配内存 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientIntelligentAnalysisCordonDirc(IRNETHANDLE hHandle, BOOL isSet, int* cordonDirc); /** * @brief 删除指定的警戒线 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] regionIndex 索引 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientIntelligentAnalysisDeleteCordon(IRNETHANDLE hHandle, int regionIndex); /** * @brief 保存警戒线信息 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientIntelligentAnalysisSaveCordon(IRNETHANDLE hHandle ); /** * @brief 添加智能分析(仅限进入区域、离开区域、物品遗留、物品搬迁) * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] smartType 类型,范围[EN_IAT_REGION_ENTRY,EN_IAT_GOODS_MOVE] * @return 当前操作的智能分析索引 * @retval >= 0 当前索引 * @retval <0 失败 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT int CALLINGCONVEN IRNET_ClientIntelligentAnalysisAddSmart(IRNETHANDLE hHandle, int smartType); /** * @brief 获取添加智能分析数量(仅限进入区域、离开区域、物品遗留、物品搬迁) * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] smartType 类型,范围[EN_IAT_REGION_ENTRY,EN_IAT_GOODS_MOVE] * @return 智能分析数量 * @retval >= 0 数量 * @retval <0 失败 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT int CALLINGCONVEN IRNET_ClientIntelligentAnalysisGetSmart(IRNETHANDLE hHandle, int smartType); /** * @brief 设置当前智能分析索引 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] regionIndex 索引 * @param[in] smartType 类型,范围[EN_IAT_REGION_ENTRY,EN_IAT_GOODS_MOVE] * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientIntelligentAnalysisSetSmart(IRNETHANDLE hHandle, int regionIndex, int smartType); /** * @brief 删除当前智能分析 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] regionIndex 索引 * @param[in] smartType 类型,范围[EN_IAT_REGION_ENTRY,EN_IAT_GOODS_MOVE] * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientIntelligentAnalysisDeleteSmart(IRNETHANDLE hHandle, int regionIndex, int smartType); /** * @brief 保存智能分析 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] smartType 类型,范围[EN_IAT_REGION_ENTRY,EN_IAT_GOODS_MOVE] * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientIntelligentAnalysisEnable * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientIntelligentAnalysisSaveSmart(IRNETHANDLE hHandle, int smartType); /****----------智能分析--------------****/ /** * @brief 控制报警输出设备 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] devCH 输出通道 * @param[in] bOn 1-打开,0-关闭 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientOutPut(IRNETHANDLE hHandle, char devCH, BOOL bOn); /** * @brief 升级rom(回调函数) * @param[in] upromhandle 句柄,IRNET_UpgradeROM的返回值 * @param[in] upromresult rom升级的结果 * @param[in] userdata 调用者自定义数据 * @return 空 * @note upromresult说明\n 0: 升级成功\n -50:内存不足\n -49:设备IP地址为空\n -48:用户名为空\n -47:密码为空\n -46:rom文件路径为空\n -45:线程创建失败\n -44:无法打开rom文件\n -43:内存不足,不能创建文件缓存\n -42:无法读取rom文件的内容\n -41:设备IP地址无效\n -40:连接设备失败\n -39:发送数据失败\n -38:用户名与密码不匹配\n 其他:未知错误 * @see IRNET_UpgradeROM */ typedef void (CALLBACK* UpRomCallback)(IRNETHANDLE upromhandle, int upromresult, void* userdata); /** * @brief 升级rom(支持多线程) * @param[in] m_sername 设备名称,小于等于24字符 * @param[in] m_url 设备IP地址 * @param[in] m_username 连接用户名,小于等于20字符 * @param[in] m_password 连接密码,小于等于20字符 * @param[in] m_wserport 连接端口 * @param[in] m_szRomPath rom文件路径 * @param[in] callback 升级结束回调函数 * @param[in] userdata 调用者自定义数据(会作为回调函数的自定义数据参数) * @return 句柄 * @retval -1:接口调用失败,否则调用成功 * @note 此接口如果调用成功,会通过回调函数反馈升级结果,无需调用其他任何接口 */ CNET_APIIMPORT IRNETHANDLE CALLINGCONVEN IRNET_UpgradeROM(char *m_sername, char *m_url, char *m_username, char *m_password, WORD m_wserport, char* m_szRomPath, UpRomCallback callback, void*userdata); /** * @brief 升级(回调函数) * @param[in] upflashhandle 句柄,IRNET_UpgradeFlash的返回值 * @param[in] upflashresult flash升级的结果 * @param[in] userdata 调用者自定义数据 * @return 空 * @note upflashresult说明\n 0: 升级成功\n -2:不支持的协议\n -3:用户名与密码不匹配\n -4:发送数据失败\n -5:连接设备失败\n -6:设备IP地址无效\n -7:无法读取flash文件的内容\n -8:内存不足,不能创建文件缓存\n -9:无法打开flash文件\n -10:线程创建失败\n -11:flash文件路径为空\n -12:密码为空\n -13:用户名为空\n -14:设备IP地址为空\n -15:内存不足\n 其他:未知错误 * @see IRNET_UpgradeFlash */ typedef void (CALLBACK* UpFlashCallback)(IRNETHANDLE upflashhandle, int upflashresult, void* userdata); /** * @brief 升级flash * @param[in] sername 设备名称,小于等于24字符 * @param[in] url 设备IP地址 * @param[in] username 连接用户名,小于等于20字符 * @param[in] password 连接密码,小于等于20字符 * @param[in] wserport 连接端口 * @param[in] filepath 文件路径 * @param[in] callback 升级结束回调函数 * @param[in] userdata 调用者自定义数据(会作为回调函数的自定义数据参数) * @return 句柄 * @retval -1:接口调用失败,否则调用成功 * @note 此接口如果调用成功,会通过回调函数反馈升级结果 */ CNET_APIIMPORT IRNETHANDLE CALLINGCONVEN IRNET_UpgradeFlash(char *sername, char *url, char *username, char *password, WORD wserport, char* filepath, UpFlashCallback callback, void*userdata); /** * @brief 电子放大移动使能 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] bEnalbe 使能 true-启用 false-禁用 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientSetZoomRect */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientElectronicZoomMoveEnable(IRNETHANDLE hHandle, bool bEnalbe); /** * @brief 多边形测温绘制(多边形边框)使能 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] bEnalbe 使能(0-禁用,否则,使能) * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientPolygonTempMeasureSetIndex,IRNET_ClientPolygonTempMeasureSave */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientPolygonTempMeasureDrawEnable(IRNETHANDLE hHandle, BOOL bEnalbe); /** * @brief 设置多边形测温索引 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] index 区域索引号() * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientPolygonTempMeasureDrawEnable,IRNET_ClientPolygonTempMeasureSave */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientPolygonTempMeasureSetIndex(IRNETHANDLE hHandle, int index); /** * @brief 保存多边形数据到设备 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart,IRNET_ClientPolygonTempMeasureDrawEnable,IRNET_ClientPolygonTempMeasureSetIndex */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientPolygonTempMeasureSave(IRNETHANDLE hHandle); /** * @brief 本地BMP抓拍(优化) * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in] m_filename 输出文件名 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @see IRNET_ClientStart */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientBMPOptimize(IRNETHANDLE hHandle, char const * m_filename); typedef struct { #ifdef SYS_LINUX pthread_mutex_t mutex; pthread_cond_t cond; #endif }*LINUX_EVENT_HANDLE; /** * @brief 获取人头检测时图像的图像大小 * @param[in] hHandle 通道句柄,IRNET_ClientStart的返回值 * @param[in,out] videoWidth 视频宽 * @param[in,out] videoHeight 视频高 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @attention 人头检测功能需依赖raw码流 * @see IRNET_ClientStart,IRNET_ClientSetBodyTemperatureThreshold,IRNET_ClientHeadDetection */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientGetHeadDetectionVideoSize(IRNETHANDLE hHandle, int * videoWidth, int*videoHeight); /*人头区域信息*/ struct VSNET_HEADAREA { int iDetId; ///< 检测结果ID int x; ///< 左上角坐标X int y; ///< 左上角坐标Y int w; ///< 矩形宽度 int h; ///< 矩形高度 float temp; ///< 温度 }; /** * @brief 人头区域信息回调 * @param[in] handle VSNET_ClientStart的返回值 * @param[in] headArea 人头区域 * @param[in] headAreaCnt 人头区数量 * @param[in] context 自定义数据 * @see IRNET_ClientStart */ typedef void (WINAPI*HeadAreaCallback)(IRNETHANDLE handle, VSNET_HEADAREA*headArea, int headAreaCnt,void*context); /** * @brief 人头检测回调注册 * @param[in] hHandle 通道句柄 * @param[in] callbackfun 回调函数地址 * @param[in] context 自定义数据 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @attention 人头检测功能需依赖raw码流 * @see IRNET_ClientStart,IRNET_ClientSetBodyTemperatureThreshold,IRNET_ClientGetHeadDetectionVideoSize */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientHeadDetection(IRNETHANDLE hHandle, HeadAreaCallback callbackfun, void*context); /** * @brief 设置人体额头正常温度门限 * @param[in] hHandle 通道句柄 * @param[in] threshold 门限 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @note 高于门限时人头区域用红色表示,否则绿色表示 * @attention 人头检测功能需依赖raw码流 * @see IRNET_ClientStart,IRNET_ClientHeadDetection,IRNET_ClientGetHeadDetectionVideoSize * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientSetBodyTemperatureThreshold(IRNETHANDLE hHandle, float threshold); /** * @brief 设置人体距离校正参数 * @param[in] hHandle 通道句柄 * @param[in] par 校正参数 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @note 仅raw码流且图像宽度为336像素时有效 * @see IRNET_ClientStart,IRNET_ClientGetBodyDisCorrParam * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientSetBodyDisCorrParam(IRNETHANDLE hHandle, VSNET_TED_CORRECTION_S*par); /** * @brief 获取人体距离校正参数 * @param[in] hHandle 通道句柄 * @param[in] par 校正参数 * @return 成功或者失败 * @retval 0-失败 * @retval 1-成功 * @note 仅raw码流且图像宽度为336像素时有效 * @see IRNET_ClientStart,IRNET_ClientSetBodyDisCorrParam * @attention 该接口暂只支持windows平台 */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientGetBodyDisCorrParam(IRNETHANDLE hHandle, VSNET_TED_CORRECTION_S*par); /** * @brief 启动对讲 * @param[in] servername 设备名 * @param[in] url IP地址 * @param[in] username 用户名 * @param[in] password 密码 * @param[in] serport 端口 * @param[in] talkcallback 对讲回调 * @param[in] samplerate 采样率(默认8000) * @param[in] context 用户上下文 * @return 操作结果 * @retval -1-只能启动一个对讲,-2-音频采集启动失败,-3-IP地址错误,>0-有效句柄,-4-不支持的操作系统 * @see IRNET_ClientTalkStop * @attention 暂只支持windows平台 */ CNET_APIIMPORT IRNETHANDLE CALLINGCONVEN IRNET_ClientTalkStart(char *servername, char *url, char *username, char *password, unsigned short serport, TALKCALLBACK talkcallback, int samplerate, void * context); /** * @brief 停止对讲 * @param[in] talkhandle 对讲句柄 * @return 操作结果 * @retval 1-成功,0-失败 * @see IRNET_ClientTalkStart * @attention 暂只支持windows平台 */ CNET_APIIMPORT int CALLINGCONVEN IRNET_ClientTalkStop(IRNETHANDLE talkhandle); /** * @brief 二次标定开始(TM) * @param[in] m_sername 服务器名称,小于等于24字符 * @param[in] m_url 服务器地址 * @param[in] m_username 连接用户名,小于等于20字符 * @param[in] m_password 连接密码,小于等于20字符 * @param[in] wserport 连接端口 * @param[in] seccalibcallback 校准回调函数 * @param[in] userdata 用户自定义参数 * @return -1 连接失败 * @see IRNET_ClientSecondCalib4TmDo,IRNET_ClientSecondCalib4TmStop */ CNET_APIIMPORT IRNETHANDLE CALLINGCONVEN IRNET_ClientSecondCalib4TmStart(char *m_sername, char *m_url, char *m_username, char *m_password, WORD wserport, pfSecondCalibTmCallback seccalibcallback, void *userdata); /** * @brief 二次标定执行(TM) * @param[in] hHandle 连接句柄,IRNET_ClientSecondCalib4TmStart返回值 * @param[in] channel 通道号 * @param[in] calib_temp 标定温度(℃) * @return 0表示成功,否则表示失败 * @see IRNET_ClientSecondCalib4TmStart,IRNET_ClientSecondCalib4TmStop */ CNET_APIIMPORT int CALLINGCONVEN IRNET_ClientSecondCalib4TmDo(IRNETHANDLE hHandle, int channel, float calib_temp); /** * @brief 二次标定结束(TM) * @param[in] hHandle 连接句柄,IRNET_ClientSecondCalib4TmStart返回值 * @return TRUE表示成功,FALSE表示失败 * @see IRNET_ClientSecondCalib4TmStart,IRNET_ClientSecondCalib4TmDo */ CNET_APIIMPORT BOOL CALLINGCONVEN IRNET_ClientSecondCalib4TmStop(IRNETHANDLE hHandle); #endif//__IRNET_H__