| 设备网络SDK开发使用手册 |
注册接收异常、重连等消息的窗口句柄或回调函数。
Windows下该接口定义如下:
BOOL NET_DVR_SetExceptionCallBack_V30( UINT nMessage, HWND hWnd, fExceptionCallBack cbExceptionCallBack, void *pUser );
Linux下该接口定义如下:
BOOL NET_DVR_SetExceptionCallBack_V30( UINT reserved1, void *reserved2, fExceptionCallBack cbExceptionCallBack, void *pUser );
typedef void(CALLBACK *fExceptionCallBack)( DWORD dwType, LONG lUserID, LONG lHandle, void *pUser );
TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。
Windows下该函数的hWnd和cbExceptionCallBack不能同时为NULL,Linux下cbExceptionCallBack不能设置为NULL,否则将接收不到异常消息。
异常消息宏定义见下表:
| 宏定义 | 宏定义值 | 含义 |
|---|---|---|
| EXCEPTION_EXCHANGE | 0x8000 | 用户交互时异常(注册心跳超时,心跳间隔为2分钟) |
| EXCEPTION_AUDIOEXCHANGE | 0x8001 | 语音对讲异常 |
| EXCEPTION_ALARM | 0x8002 | 报警异常 |
| EXCEPTION_PREVIEW | 0x8003 | 网络预览异常 |
| EXCEPTION_SERIAL | 0x8004 | 透明通道异常 |
| EXCEPTION_RECONNECT | 0x8005 | 预览时重连 |
| EXCEPTION_ALARMRECONNECT | 0x8006 | 报警时重连 |
| EXCEPTION_SERIALRECONNECT | 0x8007 | 透明通道重连 |
| SERIAL_RECONNECTSUCCESS | 0x8008 | 透明通道重连成功 |
| EXCEPTION_PLAYBACK | 0x8010 | 回放异常 |
| EXCEPTION_DISKFMT | 0x8011 | 硬盘格式化 |
| EXCEPTION_PASSIVEDECODE | 0x8012 | 被动解码异常 |
| EXCEPTION_EMAILTEST | 0x8013 | 邮件测试异常 |
| EXCEPTION_BACKUP | 0x8014 | 备份异常 |
| PREVIEW_RECONNECTSUCCESS | 0x8015 | 预览时重连成功 |
| ALARM_RECONNECTSUCCESS | 0x8016 | 报警时重连成功 |
| RESUME_EXCHANGE | 0x8017 | 用户交互恢复 |
| NETWORK_FLOWTEST_EXCEPTION | 0x8018 | 网络流量检测异常 |
| EXCEPTION_PICPREVIEWRECONNECT | 0x8019 | 图片预览重连 |
| PICPREVIEW_RECONNECTSUCCESS | 0x8020 | 图片预览重连成功 |
| EXCEPTION_PICPREVIEW | 0x8021 | 图片预览异常 |
| EXCEPTION_MAX_ALARM_INFO | 0x8022 | 报警信息缓存已达上限 |
| EXCEPTION_LOST_ALARM | 0x8023 | 报警丢失 |
| EXCEPTION_PASSIVETRANSRECONNECT | 0x8024 | 被动转码重连 |
| PASSIVETRANS_RECONNECTSUCCESS | 0x8025 | 被动转码重连成功 |
| EXCEPTION_PASSIVETRANS | 0x8026 | 被动转码异常 |
| EXCEPTION_RELOGIN | 0x8040 | 用户重登陆 |
| RELOGIN_SUCCESS | 0x8041 | 用户重登陆成功 |
| EXCEPTION_PASSIVEDECODE_RECONNNECT | 0x8042 | 被动解码重连 |
| EXCEPTION_CLUSTER_CS_ARMFAILED | 0x8043 | 集群报警异常 |
| EXCEPTION_RELOGIN_FAILED | 0x8044 | 重登陆失败,停止重登陆 |
| EXCEPTION_PREVIEW_RECONNECT_CLOSED | 0x8045 | 关闭预览重连功能 |
| EXCEPTION_ALARM_RECONNECT_CLOSED | 0x8046 | 关闭报警重连功能 |
| EXCEPTION_SERIAL_RECONNECT_CLOSED | 0x8047 | 关闭透明通道重连功能 |
| EXCEPTION_PIC_RECONNECT_CLOSED | 0x8048 | 关闭回显重连功能 |
| EXCEPTION_PASSIVE_DECODE_RECONNECT_CLOSED | 0x8049 | 关闭被动解码重连功能 |
| EXCEPTION_PASSIVE_TRANS_RECONNECT_CLOSED | 0x804a | 关闭被动转码重连功能 |
//注册接收异常消息的回调函数
NET_DVR_SetExceptionCallBack_V30(WM_NULL, NULL, g_ExceptionCallBack, NULL);
//接收异常消息的回调函数的外部实现
void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser)
{
char tempbuf[256];
ZeroMemory(tempbuf,256);
switch(dwType)
{
case EXCEPTION_AUDIOEXCHANGE: //语音对讲时网络异常
sprintf(tempbuf,"语音对讲时网络异常!!!");
TRACE("%s",tempbuf);
//TODO: 关闭语音对讲
break;
case EXCEPTION_ALARM: //报警上传时网络异常
sprintf(tempbuf,"报警上传时网络异常!!!");
TRACE("%s",tempbuf);
//TODO: 关闭报警上传
break;
case EXCEPTION_PREVIEW: //网络预览时异常
sprintf(tempbuf,"网络预览时网络异常!!!");
TRACE("%s",tempbuf);
//TODO: 关闭网络预览
break;
case EXCEPTION_SERIAL: //透明通道传输时异常
sprintf(tempbuf,"透明通道传输时网络异常!!!");
TRACE("%s",tempbuf);
//TODO: 关闭透明通道
break;
case EXCEPTION_RECONNECT: //预览时重连
break;
default:
break;
}
};