Catia V5零件库配置指南:设备参数设定详解

需积分: 36 112 下载量 70 浏览量 更新于2024-08-07 收藏 1.85MB PDF 举报
"此文档是关于海康威视设备(DVR&NVR)的V5.2设备网络SDK编程指南,介绍了如何设置和管理设备参数,包括预览、回放、报警、语音对讲和透明通道等模块的功能及流程。通过宏定义和对应的结构体,如NET_DVR_SET_DEVICECFG_V40、NET_DVR_SET_TIMECFG等,可以对设备的配置、时间、网络、图像、压缩、录像、解码器、串口、报警输入/输出、预览、视频输出、用户、异常、时区和夏令时、显示字符串、辅助输出、网络应用、NTP、DDNS、邮件、NFS、IP参数、硬盘等进行设置。文档提供了函数调用顺序、实例代码和详细说明,帮助开发者进行SDK的集成和设备控制。" 在海康威视的设备网络SDK编程中,设置设备参数是一项关键任务,涉及到多个方面。例如,`NET_DVR_SET_DEVICECFG_V40`用于设置设备的全局配置信息;`NET_DVR_SET_TIMECFG`用于调整设备的时间设置;`NET_DVR_SET_NETCFG_V30`则是对网络参数的配置,如IP地址、子网掩码、网关等;`NET_DVR_SET_PICCFG_V40`用于设定通道图像参数,而`NET_DVR_SET_COMPRESSCFG_V30`则涉及视频压缩配置。 报警输入和输出管理也是重要部分,例如`NET_DVR_SET_ALARMINCFG_V40`允许设置报警输入配置,`NET_DVR_SET_ALARMOUTCFG_V30`则用于管理报警输出。实时预览的配置通过`NET_DVR_SET_PREVIEWCFG_V30`进行,而`NET_DVR_SET_RECORDCFG_V30`则用于设置录像参数。设备的解码器配置可以通过`NET_DVR_SET_DECODERCFG_V30`来调整,串口设置用`NET_DVR_SET_RS232CFG_V30`。 此外,SDK还提供了用户管理、异常情况处理、NTP(网络时间协议)设置、DDNS(动态域名解析)配置、邮件服务设置、NFS(网络文件系统)配置以及IP参数的管理。例如,`NET_DVR_SET_USERCFG_V40`用于设置用户权限,`NET_DVR_SET_EXCEPTIONCFG_V40`处理设备异常情况,`NET_DVR_SET_NTPCFG`用来设置NTP服务器信息,而`NET_DVR_SET_DDNSCFG_V30`则用于DDNS设置。 在编程实践中,开发者需要理解每个宏定义对应的结构体,并根据设备的实际需求填充结构体成员,然后调用相应的函数来执行配置。SDK还提供了示例代码,帮助开发者理解和实现这些功能。例如,初始化SDK使用`NET_DVR_Init`,释放资源用`NET_DVR_Cleanup`,设置连接超时和重连策略则涉及`NET_DVR_SetConnectTime`和`NET_DVR_SetReconnect`等函数。 海康威视的设备网络SDK提供了一个全面的框架,使得开发者能够高效地管理和控制设备的各种参数,实现定制化的功能集成。通过熟练掌握这些API和流程,开发者可以构建出适应各种场景的监控系统。
2018-06-25 上传
type TShowStr = record X: Word; Y: Word; S: array [0 .. 43] of AnsiChar; end; type TCamera = record pHWND: HWND; strict private aCam: LongInt; g_nPort: LongInt; struDeviceInfo: NET_DVR_DEVICEINFO_V30; lRealHandle: LongInt; struPlayInfo: NET_DVR_CLIENTINFO; pUser: Pointer; dwRet: Integer; public property ErrCode: Integer read dwRet; procedure HCLogin(IP, User, Psd: String; Port: Word); procedure HCPlay(aHWND: HWND); procedure HCAddChar(str: TArray); procedure HCAddChar_V30(str: TArray); function HCGetJpeg(JpgName: String; JpgSize: Word = 0; JpgQua: Word = 19): Boolean; procedure HCStop; procedure HCLogout; end; {$ENDIF //} implementation procedure TCamera.HCLogin(IP, User, Psd: String; Port: Word); begin NET_DVR_Init(); lRealHandle := -1; dwRet := 0; aCam := NET_DVR_Login_V30(PAnsiChar(ansistring(IP)), Port, PAnsiChar(ansistring(User)), PAnsiChar(ansistring(Psd)), @struDeviceInfo); dwRet := NET_DVR_GetLastError; end; procedure TCamera.HCPlay(aHWND: HWND); begin struPlayInfo.lChannel := 1; struPlayInfo.lLinkMode := 0; struPlayInfo.sMultiCastIP := NIL; struPlayInfo.hPlayWnd := aHWND; lRealHandle := NET_DVR_RealPlay_V30(aCam, @struPlayInfo, nil, pUser, true); dwRet := NET_DVR_GetLastError; end; procedure TCamera.HCAddChar(str: TArray); var i: Integer; aStr: NET_DVR_SHOWSTRING; begin if length(str) > MAX_STRINGNUM then begin setlength(str, MAX_STRINGNUM); end; for i := 0 to length(str) - 1 do begin aStr.struStringInfo[i].wShowString := 1; aStr.struStringInfo[i].wStringSize := length(str[i].S); aStr.struStringInfo[i].wShowStringTopLeftX := str[i].X; aStr.struStringInfo[i].wShowStringTopLeftY := str[i].Y; move(str[i].S[0], aStr.struStringInfo[i].sString[0], length(str[i].S)); end; aStr.dwSize := sizeof(aStr); NET_DVR_SetDVRConfig(aCam, NET_DVR_SET_SHOWSTRING, 1, @aStr, sizeof(NET_DVR_SHOWSTRING)); dwRet := NET_DVR_GetLastError; end; procedure TCamera.HCAddChar_V30(str: TArray); var i: Integer; aStr: NET_DVR_SHOWSTRING_V30; begin if length(str) > MAX_STRINGNUM_V30 then begin setlength(str, MAX_STRINGNUM_V30); end; for i := 0 to length(str) - 1 do begin aStr.struStringInfo[i].wShowString := 1; aStr.struStringInfo[i].wStringSize := length(str[i].S); aStr.struStringInfo[i].wShowStringTopLeftX := str[i].X; aStr.struStringInfo[i].wShowStringTopLeftY := str[i].Y; move(str[i].S[0], aStr.struStringInfo[i].sString[0], length(str[i].S)); end; aStr.dwSize := sizeof(aStr); NET_DVR_SetDVRConfig(aCam, NET_DVR_SET_SHOWSTRING_V30, 1, @aStr, sizeof(NET_DVR_SET_SHOWSTRING_V30)); dwRet := NET_DVR_GetLastError; end; function TCamera.HCGetJpeg(JpgName: String; JpgSize: Word = 0; JpgQua: Word = 19): Boolean; var aJpg: NET_DVR_JPEGPARA; begin aJpg.wPicSize := JpgSize; aJpg.wPicQuality := JpgQua; if aCam >= 0 then begin result := NET_DVR_CaptureJPEGPicture(aCam, 1, aJpg, PAnsiChar(ansistring(JpgName))); dwRet := NET_DVR_GetLastError(); end else result := false; dwRet := NET_DVR_GetLastError; end; procedure TCamera.HCStop; begin if lRealHandle >= 0 then begin NET_DVR_StopRealPlay(lRealHandle); lRealHandle := -1; end; PlayM4_CloseStream(g_nPort); PlayM4_FreePort(g_nPort); end; procedure TCamera.HCLogout; begin if lRealHandle > -1 then begin HCStop; end; if aCam >= 0 then begin NET_DVR_Logout_V30(aCam); aCam := -1; end; NET_DVR_Cleanup(); end;