[最新版本V6.1.9.48_build2023041可到盒子论坛 v2.1 (里面的第31楼)更新]
海康威视的SDK不支持Delphi,如果想用Delphi调用SDK里面的接口,需要先把其中C头文件转换成Delphi的pas文件。此文件是用本人编写的程序自动转换而成的Delphi版海康威视sdk接口文件,其中只有#if语句或宏函数等极为个别的地方使用手工做转换。 本人只使用了其中涉及录像机状态查询、回放等极为少数的功能,未对此文件做过完整的测试,仅供参考,如有问题欢迎留言
对应的海康威视SDK版本:CH-HCNetSDKV6.1.4.6_build20191220_Win32
注意,下列函数因与常量或结构体(即Delphi的Record)重名更改了函数名
NET_DVR_ThrowBFrame -> NET_DVR_ThrowBFrame_F
NET_DVR_SerialStart_V40 -> NET_DVR_SerialStart_V40_F
NET_DVR_ManualSnap -> NET_DVR_ManualSnap_F
NET_DVR_ChangeWndResolution -> NET_DVR_ChangeWndResolution_F
点击此链接下载HCNetSDK.pas:https://download.csdn.net/download/BlueStorm/12476964
特别说明,5月30日更新了一下,把多维数组从 array[0..10] of array [0..15] of Byte改为array[0..10, 0..15] of Byte这种形式,上述地址下载的是更新后的文件。
样例代码:
//注:该命令只支持4条OSD的类型,通常用于V30以下的设备版本。
const
NET_DVR_GET_SHOWSTRING = 130; //获取叠加字符参数
NET_DVR_SET_SHOWSTRING = 131; //设置叠加字符参数
const
NET_DVR_GET_EVENTCOMPCFG = 132; //获取事件触发录像参数
NET_DVR_SET_EVENTCOMPCFG = 133; //设置事件触发录像参数
NET_DVR_GET_FTPCFG = 134; //获取抓图的FTP参数(基线)
NET_DVR_SET_FTPCFG = 135; //设置抓图的FTP参数(基线)
NET_DVR_GET_AUXOUTCFG = 140; //获取报警触发辅助输出设置(HS设备辅助输出2006-02-28)
NET_DVR_SET_AUXOUTCFG = 141; //设置报警触发辅助输出设置(HS设备辅助输出2006-02-28)
NET_DVR_GET_PREVIEWCFG_AUX = 142; //获取-s系列双输出预览参数(-s系列双输出2006-04-13)
NET_DVR_SET_PREVIEWCFG_AUX = 143; //设置-s系列双输出预览参数(-s系列双输出2006-04-13)
//校时结构参数
type
NET_DVR_TIME = record
dwYear: DWORD; //年
dwMonth: DWORD; //月
dwDay: DWORD; //日
dwHour: DWORD; //时
dwMinute: DWORD; //分
dwSecond: DWORD; //秒
end;
LPNET_DVR_TIME = ^NET_DVR_TIME;
type
NET_DVR_TIME_V30 = record
wYear: WORD;
byMonth: BYTE;
byDay: BYTE;
byHour: BYTE;
byMinute: BYTE;
bySecond: BYTE;
byISO8601: BYTE; //是否是8601的时间格式,即时差字段是否有效0-时差无效,年月日时分秒为设备本地时间 1-时差有效
wMilliSec: WORD; //毫秒,精度不够,默认为0
cTimeDifferenceH: AnsiChar; //与UTC的时差(小时),-12 ... +14,+表示东区, byISO8601为1时有效
cTimeDifferenceM: AnsiChar; //与UTC的时差(分钟),-30, 30, 45,+表示东区,byISO8601为1时有效
end;
LPNET_DVR_TIME_V30 = ^NET_DVR_TIME_V30;
function NET_DVR_InitDevice_Card(pDeviceTotalChan: PLONG): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_ReleaseDevice_Card(): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_InitDDraw_Card(hParent: HWND; colorKey: COLORREF): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_ReleaseDDraw_Card(): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_RealPlay_Card(lUserID: LONG; lpCardInfo: LPNET_DVR_CARDINFO; lChannelNum: long): LONG; stdcall; external 'HCNetSDK.dll';
function NET_DVR_ResetPara_Card(lRealHandle: LONG; lpDisplayPara: LPNET_DVR_DISPLAY_PARA): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_RefreshSurface_Card(): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_ClearSurface_Card(): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_RestoreSurface_Card(): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_OpenSound_Card(lRealHandle: LONG): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_CloseSound_Card(lRealHandle: LONG): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_SetVolume_Card(lRealHandle: LONG; wVolume: WORD): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_AudioPreview_Card(lRealHandle: LONG; bEnable: BOOL): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_GetCardLastError_Card(): LONG; stdcall; external 'HCNetSDK.dll';
function NET_DVR_SetDspErrMsg_Card(dwMessage: DWORD; hWnd: HWND): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_ResetDSP_Card(iChannelNum: LONG): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_GetChanHandle_Card(lRealHandle: LONG): HWND; stdcall; external 'HCNetSDK.dll';
function NET_DVR_CapturePicture_Card(lRealHandle: LONG; sPicFileName: PAnsiChar): BOOL; stdcall; external 'HCNetSDK.dll';