大华网络SDK开发手册 下载本文

2 设计原则

2.1 编程说明

? 初始化和清除

1、 使用网络客户端软件包首先调用CLIENT_Init()对系统进行初始化,应用程序

退出时调用CLIENT_Cleanup()释放所有占用的资源。

2、 大多数函数调用均应该在CLIENT_Init()之后,CLIENT_Cleanup()之前,除了

少数函数,譬如CLIENT_SetConnectTime()在CLIENT_Init()之前调用,而CLIENT_GetSDKVersion()可以在任何时候调用等等。 ? 操作句柄

系统设计上多处使用了句柄概念,很多操作均针对句柄,如回放、下载以及语音对讲等。 ? 用户登录和注销

用户在访问前端设备之前必须通过调用CLIENT_Login ()登录到前端设备上,登录成功后返回一个全局唯一的句柄。此句柄就像一个会话通道,之后该用户可通过此句柄访问前端设备。退出该会话时则通过CLIENT_Logout ()函数在前端设备上注销此句柄以终止该会话通道的使用。建立连接与登录是同步的。 ? 心跳功能

在本开发包中提供自动心跳功能(20秒一次心跳)当设备断开能及时回调给客户端。 ? 同步与异步

异步以设置回调函数来响应网络数据,有些异步在设置后返回请求句柄,结束请求时将请求句柄提供给SDK以注销相关资源。 ? SDK提供协议探测和转换 ? 回调函数

一般都有dwUser参数, 由用户自定义需要的数据, 一般用来传入类对象指针, 方便回调处理在类中实现,回调应用都可以采取这种方式。

2.2 典型调用顺序

A. 初始化

SDK初始化 CLIENT_Init()

B. SDK功能设置或信息获取

设置连接等待时间 CLIENT_SetConnectTime() 获取SDK版本 CLIENT_GetSDKVersion() 设置消息回调 CLIENT_SetDVRMessCallBack() 设置自定义叠加画板 CLIENT_RigisterDrawFun()

C. 登录连接设备

登录设备 CLIENT_Login() 开始侦听 CLIENT_StartListen()

D. 设备功能操作与信息获取

系统配置 CLIENT_QueryConfig() CLIENT_SetupConfig() 获取设备状态 CLIENT_GetDEVWorkState() 获取协议信息 CLIENT_QueryComProtocol() 查询获取系统信息 CLIENT_QuerySystemInfo() 查询通道名称 CLIENT_QueryChannelName() 查询日志 CLIENT_QueryLogCallback() CLIENT_QueryLog() 用户管理 CLIENT_QueryUserInfo() CLIENT_OperateUserInfo() 云台控制 CLIENT_PTZControl() CLIENT_DHPTZControl() 语音对讲 CLIENT_StartTalk() CLIENT_SendTalkData_Custom() CLIENT_StopTalk() 设置限流 CLIENT_SetMaxFlux() 透明串口 CLIENT_CreateTransComChannel() CLIENT_SendTransComData() CLIENT_DestroyTransComChanne()

E. 实时监视通道

打开监视通道 CLIENT_RealPlay() CLIENT_RealPlayEx() 保存监视图像数据 CLIENT_SaveRealData() 监视数据回调保存 CLIENT_SetRealDataCallBack() CLIENT_SetRealDataCallBackEx() 获取视频参数信息 CLIENT_ClientGetVideoEffect() 设置修改视频参数 CLIENT_ClientSetVideoEffect() 强制I帧 CLIENT_MakeKeyFrame()

F. 多画面预览通道

打开多画面预览 CLIENT_MultiPlay() 停止多画面预览 CLIENT_StopMultiPlay()

G. 回放/下载通道

查询录像 CLIENT_QueryRecordFile() 回放及控制 CLIENT_PlayBackByRecordFile() CLIENT_PlayBackByRecordFileEx() CLIENT_PlayBackByTime() CLIENT_PlayBackByTimeEx() CLIENT_GetPlayBackOsdTime() CLIENT_PausePlayBack() CLIENT_SeekPlayBack() CLIENT_StopPlayBack() CLIENT_StepPlayBack() CLIENT_FastPlayBack() CLIENT_SlowPlayBack() CLIENT_GetFramePlayBack() CLIENT_SetFramePlayBack() 下载 CLIENT_DownloadByRecordFile() CLIENT_DownloadByRecordFileEx() CLIENT_DownloadByTime() CLIENT_StopDownload() CLIENT_GetDownloadPos()

H. 针对显示图像的操作(监视/回放/多画面预览)

抓图 CLIENT_CapturePicture() 码流统计 CLIENT_GetStatiscFlux() 打开音频 CLIENT_OpenSound() 设置音量 CLIENT_SetVolume()

I. 远程控制

远程升级 CLIENT_StartUpgrade CLIENT_SendUpgrade CLIENT_StopUpgrade 录像控制 CLIENT_QueryRecordState CLIENT_SetupRecordState 系统校时 CLIENT_QueryDeviceTime CLIENT_SetupDeviceTime IO控制 CLIENT_QueryIOControlState CLIENT_IOControl

J. 注销断开设备

停止侦听 CLIENT_StopListen() 断开连接 CLIENT_Logout()

K. 释放SDK资源

SDK退出 CLIENT_Cleanup()

对D、E、F、G、H、I中的功能大部分之间没有调用先后顺序,当然对同一个功能还是应该按先打开再操作最后关闭的顺序。