例子使用c++寫的,想用delphi來開發,怎么做啊
uj5u.com熱心網友回復:
有dll的,對著宣告,然后引數型別匹配好,不會的話,google“delphi dll”uj5u.com熱心網友回復:
貼下c++呼叫dll的代碼。uj5u.com熱心網友回復:
建議先看看delphi怎么呼叫dll方法資料。uj5u.com熱心網友回復:
現在是可以呼叫了,就是回呼函式老是搞不定,回傳的資料總是只有一個位元組,不知道為什么uj5u.com熱心網友回復:
海康威視的SDK請問是硬碟錄像機的還是網路球的?最好能提供是哪個版本的SDK。按照我理解你目前應該在用設備網路SDK,那塊涉及到的CALLBACK函式比較多(多出現在音視頻流轉發)。拿設備網路SDK_V4.1.5.3(for Windows32)做例子。NET_DVR_RealPlay_V30 網路設備 實時預覽 函式。函式模型
LONG NET_DVR_RealPlay_V30(
LONG lUserID,
LPNET_DVR_CLIENTINFO lpClientInfo,
fRealDataCallBack_V30 cbRealDataCallBack,
void *pUser,
BOOL bBlocked
);
其中lUserID 為NET_DVR_LOGIN的回傳句柄,其實就是一個內部結構體指標(其中包括登錄資訊,設備資訊,常規硬體狀態)。
lpClientInfo,預覽引數結構體,指定預覽哪路視頻,視頻解碼方式以及在哪個句柄上顯示諸如此類與顯示有關引數配置。
cbRealDataCallBack 碼流資料回呼函式,這塊可能是你關心的重點。
fRealDataCallBack_V30型別,在HCNetSDK.h網路庫頭檔案中有定義。
typedef void(CALLBACK *fRealDataCallBack_V30)(
LONG lRealHandle,
DWORD dwDataType,
BYTE *pBuffer,
DWORD dwBufSize,
void *pUser
);
一般這個函式被呼叫后,基本上我們都是通過判斷處理
procedure RealCallBack LONG lRealHandle,
DWORD dwDataType,
BYTE *pBuffer,
DWORD dwBufSize,
void *pUser
)
begin
if lRealHandle > -1 then
case dwDataType of
begin
NET_DVR_SYSHEAD:{系統頭資料}
begin
dwBufSize
end;
NET_DVR_STREAMDATA:{資料(包括復合流或音視頻分開的視頻流資料)}....
begin
if dwBufSize > 0 then{有資料}
begin
//讀取pBuffer 緩沖區,如果你讀取一直都是很少的位元組最好先檢查下NET_DVR_RealPlay_V30的回傳值,通過NET_DVR_GetLastError獲取錯誤碼,錯誤碼同樣在HCNetSDK.h定義
end;
end;
NET_DVR_AUDIOSTREAMDATA:{音頻資料}....
end;
end;
希望以上辛辛苦苦寫的對你有所幫助。
uj5u.com熱心網友回復:
直接到海康官網下個SDK指南,里面有delphi demo。uj5u.com熱心網友回復:
硬碟錄像機,主要是回呼函式搞不定uj5u.com熱心網友回復:
想用硬碟錄像機的485口連上溫度傳感器之類的設備,但是回呼函式搞不定uj5u.com熱心網友回復:
沒看到官網里有delphi的demo啊,還望發個鏈接看看uj5u.com熱心網友回復:
你說的是NET_DVR_SetDVRMessageCallBack_V30獲取設備狀態?uj5u.com熱心網友回復:
我都是自己翻譯的uj5u.com熱心網友回復:
unit U_HKHCUnit;interface
uses
Windows, SysUtils;
const
NAME_LEN = 32;
SERIALNO_LEN = 48;
MACADDR_LEN = 6;
MAX_ETHERNET = 2;
PATHNAME_LEN = 128;
PASSWD_LEN = 16;
MAX_SHELTERNUM = 4; //遮擋區域數
MAX_DAYS = 7;
MAX_TIMESEGMENT = 4;
MAX_ALARMOUT = 4;
MAX_CHANNUM = 16;
MAX_PRESET = 128;
NET_DVR_GET_DEVICECFG = 100; //獲取設備引數
NET_DVR_SET_DEVICECFG = 101; //設定設備引數
NET_DVR_GET_NETCFG = 102; //獲取網路引數
NET_DVR_SET_NETCFG = 103; //設定網路引數
NET_DVR_GET_PICCFG = 104; //獲取圖象引數
NET_DVR_SET_PICCFG = 105; //設定圖象引數
NET_DVR_GET_COMPRESSCFG = 106; //獲取壓縮引數
NET_DVR_SET_COMPRESSCFG = 107; //設定壓縮引數
NET_DVR_GET_RECORDCFG = 108; //獲取錄像時間引數
NET_DVR_SET_RECORDCFG = 109; //設定錄像時間引數
NET_DVR_GET_DECODERCFG = 110; //獲取解碼器引數
NET_DVR_SET_DECODERCFG = 111; //設定解碼器引數
NET_DVR_GET_RS232CFG = 112; //獲取232 串口引數
NET_DVR_SET_RS232CFG = 113; //設定232 串口引數
NET_DVR_GET_ALARMINCFG = 114; //獲取報警輸入引數
NET_DVR_SET_ALARMINCFG = 115; //設定報警輸入引數
NET_DVR_GET_ALARMOUTCFG = 116; //獲取報警輸出引數
NET_DVR_SET_ALARMOUTCFG = 117; //設定報警輸出引數
NET_DVR_GET_TIMECFG = 118; //獲取DVR 時間
NET_DVR_SET_TIMECFG = 119; //設定DVR 時間
NET_DVR_GET_PREVIEWCFG = 120; //獲取預覽引數
NET_DVR_SET_PREVIEWCFG = 121; //設定預覽引數
NET_DVR_GET_VIDEOOUTCFG = 122; //獲取視頻輸出引數
NET_DVR_SET_VIDEOOUTCFG = 123; //設定視頻輸出引數
NET_DVR_GET_USERCFG = 124; //獲取用戶引數
NET_DVR_SET_USERCFG = 125; //設定用戶引數
NET_DVR_GET_EXCEPTIONCFG = 126; //獲取例外引數
NET_DVR_SET_EXCEPTIONCFG = 127; //設定例外引數
NET_DVR_GET_SHOWSTRING = 130; //獲取疊加字符引數
NET_DVR_SET_SHOWSTRING = 131; //設定疊加字符引數
NET_DVR_GET_AUXOUTCFG = 140; //獲取報警觸發輔助輸出設定
NET_DVR_SET_AUXOUTCFG = 141; //設定報警觸發輔助輸出設定
NET_DVR_GET_PICCFG_EX = 200; //獲取圖象引數(擴展)
NET_DVR_SET_PICCFG_EX = 201; //設定圖象引數(擴展)
NET_DVR_GET_USERCFG_EX = 202; //獲取用戶引數
NET_DVR_SET_USERCFG_EX = 203; //設定用戶引數
NET_DVR_GET_COMPRESSCFG_EX = 204; //獲取壓縮引數(擴展)
NET_DVR_SET_COMPRESSCFG_EX = 205; //設定壓縮引數(擴展)
//******報警處理方式
NOACTION = $0; //無回應*/
WARNONMONITOR = $1; //監視器上警告*/
WARNONAUDIOOUT = $2; //聲音警告*/
UPTOCENTER = $4; //上傳中心*/
TRIGGERALARMOUT = $8; //觸發報警輸出*/
//查找檔案
NET_DVR_FILE_SUCCESS = 1000; //獲得檔案資訊
NET_DVR_FILE_NOFIND = 1001; //沒有檔案
NET_DVR_ISFINDING = 1002; //正在查找檔案
NET_DVR_NOMOREFILE = 1003; //查找檔案時沒有更多的檔案
NET_DVR_FILE_EXCEPTION = 1004; //查找檔案時例外
MAX_LINK = 6;
MAX_DISKNUM = 16;
MAX_ALARMIN = 16;
type
{配置資訊}
PNET_DVR_DEVICECFG = ^LPNET_DVR_DEVICECFG;
{$EXTERNALSYM NET_DVR_DEVICECFG}
NET_DVR_DEVICECFG = Record
dwSize: DWORD;
sDVRName: Array[0..NAME_LEN-1] of BYTE; //DVR 名稱
dwDVRID: DWORD; //DVR ID,用于遙控器
dwRecycleRecord: DWORD; // 是否回圈錄像,0:不是; 1:是
//以下不能更改
sSerialNumber: Array[0..SERIALNO_LEN-1] of BYTE;// 序列號 */
dwSoftwareVersion: DWORD; // 軟體版本號,高16 位是主版本,低16 位是次版本 */
dwSoftwareBuildDate: DWORD; // 軟體生成日期,0xYYYYMMDD */
dwDSPSoftwareVersion: DWORD; // DSP 軟體版本,高16 位是主版本,低16 位是次版本*/
dwDSPSoftwareBuildDate: DWORD; // DSP 軟體生成日期,0xYYYYMMDD */
dwPanelVersion: DWORD; // 前面板版本,高16 位是主版本,低16 位是次版本 */
dwHardwareVersion: DWORD; // 硬體版本,高16 位是主版本,低16 位是次版本 */
byAlarmInPortNum: BYTE; // DVR 報警輸入個數 */
byAlarmOutPortNum: BYTE; // DVR 報警輸出個數 */
byRS232Num: BYTE ; // DVR 232 串口個數 */
byRS485Num: BYTE ; // DVR 485 串口個數 */
byNetworkPortNum: BYTE ; // 網路口個數 */
byDiskCtrlNum: BYTE ; // DVR 硬碟控制器個數 */
byDiskNum: BYTE ; // DVR 硬碟個數 */
byDVRType: BYTE ; // DVR 型別, 1:DVR 2:ATM DVR 3:DVS 等等 */
byChanNum: BYTE ; // DVR 通道個數 */
byStartChan: BYTE ; // 起始通道號,例如DVS-1,DVR – 1 */
byDecordChans: BYTE ; // DVR 解碼路數 */
byVGANum: BYTE ; // VGA 口的個數 */
byUSBNum: BYTE; // USB 口的個數 */
reservedData: Array[0..2] of char ; // 保留 */
end;
LPNET_DVR_DEVICECFG = NET_DVR_DEVICECFG;
{設備資訊}
PNET_DVR_DEVICEINFO = ^TNET_DVR_DEVICEINFO;
{$EXTERNALSYM NET_DVR_DEVICEINFO}
NET_DVR_DEVICEINFO = Record
sSerialNumber: Array[0..SERIALNO_LEN - 1] of BYTE ; //序列號
byAlarmInPortNum: BYTE ; //DVR報警輸入個數
byAlarmOutPortNum: BYTE ; //DVR報警輸出個數
byDiskNum: BYTE; //DVR 硬碟個數
byDVRType: BYTE; //DVR型別,
byChanNum: BYTE; //DVR 通道個數
byStartChan: BYTE; //起始通道號,例如DVS-1,DVR - 1
end;
TNET_DVR_DEVICEINFO = NET_DVR_DEVICEINFO;
{網路資訊}
NET_DVR_ETHERNET = Record
sDVRIP: Array[0..15] of Char; // DVR IP 地址 */
sDVRIPMask: Array[0..15] of Char; // DVR IP 地址掩碼 */
dwNetInterface: DWORD; // 10M/100M 自適應,索引 */
//1-10MBase - T
//2-10MBase-T 全雙工
//3-100MBase - TX
//4-100M 全雙工
//5-10M/100M 自適應
wDVRPort: WORD; // 埠號 */
byMACAddr: Array[0..MACADDR_LEN - 1] of BYTE; // 服務器的物理地址 */
end;
PNET_DVR_NETCFG = ^LPNET_DVR_NETCFG;
{$EXTERNALSYM NET_DVR_NETCFG}
NET_DVR_NETCFG = Record
dwSize: DWORD;
struEtherNet: Array[0..MAX_ETHERNET - 1] of NET_DVR_ETHERNET ; // 以太網口 */
sManageHostIP: Array[0..15] of char ; // 遠程管理主機地址 */
wManageHostPort: WORD; // 遠程管理主機埠號 */
sDNSIP: Array[0..15] of char ; // DNS 服務器地址 */
sMultiCastIP: Array[0..15] of char; // 多播組地址 */
sGatewayIP: Array[0..15] of char; // 網關地址 */
sNFSIP: Array[0..15] of char; // NAS 主機IP 地址 */
sNFSDirectory: Array[0..PATHNAME_LEN - 1] of BYTE; // NAS 目錄 */
dwPPPOE: DWORD; // 0-不啟用,1-啟用 */
sPPPoEUser: Array[0..NAME_LEN - 1] of BYTE ; // PPPoE 用戶名 */
sPPPoEPassword: Array[0..PASSWD_LEN - 1] of char;// PPPoE 密碼 */
sPPPoEIP: Array[0..15] of char; //PPPoE IP 地址(只讀)
wHttpPort: WORD; //http 埠號
end;
LPNET_DVR_NETCFG = NET_DVR_NETCFG;
{影像引數}
NET_DVR_SCHEDTIME = Record
byStartHour: BYTE; //開始時間
byStartMin: BYTE;
byStopHour: BYTE; //結束時間
byStopMin: BYTE;
end;
//NET_DVR_SCHEDTIME,*LPNET_DVR_SCHEDTIME;
NET_DVR_HANDLEEXCEPTION = Record
dwHandleType: DWORD; //處理方式,處理方式的"或"結果*/
{ $00: 無回應
$01: 監視器上警告
$02: 聲音警告
$04: 上傳中心
$08: 觸發報警輸出}
byRelAlarmOut: Array[0..MAX_ALARMOUT - 1] of BYTE ; //報警觸發的輸出通道,報警觸發的輸出,為1表示觸發該輸出
end;
//信號丟失報警
NET_DVR_VILOST = Record
byEnableHandleVILost: BYTE ; // 是否處理信號丟失報警 */
strVILostHandleType: NET_DVR_HANDLEEXCEPTION; // 處理方式 */
struAlarmTime: Array[0..MAX_DAYS - 1] of Array[0..MAX_TIMESEGMENT - 1] of NET_DVR_SCHEDTIME ;//布防時間
end;
//NET_DVR_VILOST,*LPNET_DVR_VILOST;
//移動偵測
NET_DVR_MOTION = Record
byMotionScope: Array[0..17] of Array[0..21] of BYTE; //偵測區域,共有22*18個小宏塊,為1表示該宏塊是移動偵測區域,0-表示不是*/
byMotionSensitive: BYTE; //移動偵測靈敏度, 0 - 5,越高越靈敏,0xff關閉*/
byEnableHandleMotion: BYTE; // 是否處理移動偵測 */
strMotionHandleType: NET_DVR_HANDLEEXCEPTION; // 處理方式 */
struAlarmTime: Array[0..MAX_DAYS - 1] of Array[0..MAX_TIMESEGMENT - 1] of NET_DVR_SCHEDTIME;//布防時間
byRelRecordChan: Array[0..MAX_CHANNUM - 1] of BYTE ; //報警觸發的錄象通道,為1表示觸發該通道
end;
//NET_DVR_MOTION,*LPNET_DVR_MOTION;
//遮擋報警區域為704*576
NET_DVR_HIDEALARM = Record
dwEnableHideAlarm: DWORD; // 是否啟動遮擋報警 ,0-否,1-低靈敏度 2-中靈敏度 3-高靈敏度 */
wHideAlarmAreaTopLeftX: WORD; // 遮擋區域的x坐標 */
wHideAlarmAreaTopLeftY: WORD; // 遮擋區域的y坐標 */
wHideAlarmAreaWidth: WORD; // 遮擋區域的寬 */
wHideAlarmAreaHeight: WORD; //遮擋區域的高*/
strHideAlarmHandleType: NET_DVR_HANDLEEXCEPTION; // 處理方式 */
struAlarmTime: Array[0..MAX_DAYS - 1] of Array[0..MAX_TIMESEGMENT - 1] of NET_DVR_SCHEDTIME;//布防時間
end;
//NET_DVR_HIDEALARM,*LPNET_DVR_HIDEALARM;
NET_DVR_SHELTER = Record
wHideAreaTopLeftX: WORD; // 遮擋區域的x坐標 */
wHideAreaTopLeftY: WORD; // 遮擋區域的y坐標 */
wHideAreaWidth: WORD; // 遮擋區域的寬 */
wHideAreaHeight: WORD; //遮擋區域的高*/
end;
//NET_DVR_SHELTER,*LPNET_DVR_SHELTER;
PNET_DVR_PICCFG_EX = ^LPNET_DVR_PICCFG_EX;
{$EXTERNALSYM NET_DVR_PICCFG_EX}
NET_DVR_PICCFG_EX = Record
dwSize: DWORD;
sChanName: Array[0..NAME_LEN - 1] of BYTE;//通道名稱
dwVideoFormat: DWORD; // 只讀 視頻制式 1-NTSC 2-PAL
byBrightness: BYTE; //亮度,0-255*/
byContrast: BYTE; //對比度,0-255*/
bySaturation: BYTE; //飽和度,0-255 */
byHue: BYTE; //色調,0-255*/
//顯示通道名
dwShowChanName: DWORD; // 預覽的圖象上是否顯示通道名稱,0-不顯示,1-顯示 區域大小704*576
wShowNameTopLeftX: WORD; // 通道名稱顯示位置的x坐標 */
wShowNameTopLeftY: WORD; // 通道名稱顯示位置的y坐標 */
//信號丟失報警
struVILost: NET_DVR_VILOST;
//移動偵測
struMotion: NET_DVR_MOTION;
//遮擋報警
struHideAlarm: NET_DVR_HIDEALARM;
//遮擋 區域大小704*576
dwEnableHide: DWORD; // 是否啟動遮蓋 ,0-否,1-是*/
struShelter: Array[0..MAX_SHELTERNUM - 1] of NET_DVR_SHELTER;
//OSD
dwShowOsd: DWORD;// 預覽的圖象上是否顯示OSD,0-不顯示,1-顯示 區域大小704*576
wOSDTopLeftX: WORD; // OSD的x坐標 */
wOSDTopLeftY: WORD; // OSD的y坐標 */
byOSDType: BYTE; // OSD型別(主要是年月日格式) */
{0: XXXX-XX-XX 年月日
1: XX-XX-XXXX 月日年
2: XXXX年XX月XX日
3: XX月XX日XXXX年}
byDispWeek: BYTE; // 是否顯示星期 */
byOSDAttrib: BYTE; // OSD屬性:透明,閃爍 */
{1: 透明,閃爍
2: 透明,不閃爍
3: 閃爍,不透明
4: 不透明,不閃爍 }
end;
LPNET_DVR_PICCFG_EX = NET_DVR_PICCFG_EX;
uj5u.com熱心網友回復:
{壓縮引數}
NET_DVR_COMPRESSION_INFO_EX = Record
byStreamType: BYTE; //碼流型別0-視頻流,1-復合流
byResolution: BYTE; //解析度0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF
byBitrateType: BYTE; //碼率型別0:變碼率,1:定碼率
byPicQuality: BYTE; //圖象質量 0-最好 1-次好 2-較好 3-一般 4-較差 5-差
dwVideoBitrate: DWORD; //視頻碼率 0-保留 1-16K(保留) 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K
// 13-384K 14-448K 15-512K 16-640K 17-768K 18-896K 19-1024K 20-1280K 21-1536K 22-1792K 23-2048K
//最高位(31位)置成1表示是自定義碼流, 0-30位表示碼流值(MIN-32K MAX-8192K)。
dwVideoFrameRate: DWORD; //幀率 0-全部; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20; //V2.0增加 14-15; 15-18; 16-22;
wIntervalFrameI: WORD; //I幀間隔
//2006-08-11 增加單P幀的配置介面,可以改善實時流延時問題
byIntervalBPFrame: BYTE;//0-BBP幀; 1-BP幀; 2-單P幀 BP幀設定暫不支持
byRes: BYTE;
end;
//NET_DVR_COMPRESSION_INFO_EX,*LPNET_DVR_COMPRESSION_INFO_EX;
PNET_DVR_COMPRESSIONCFG_EX = ^LPNET_DVR_COMPRESSIONCFG_EX;
{$EXTERNALSYM NET_DVR_COMPRESSIONCFG_EX}
NET_DVR_COMPRESSIONCFG_EX = Record
dwSize: DWORD;
struRecordPara: NET_DVR_COMPRESSION_INFO_EX; //錄像
struNetPara: NET_DVR_COMPRESSION_INFO_EX; //網傳
end;
LPNET_DVR_COMPRESSIONCFG_EX = NET_DVR_COMPRESSIONCFG_EX;
//錄像
NET_DVR_RECORDSCHED = Record
struRecordTime: NET_DVR_SCHEDTIME;
byRecordType: BYTE; //0:定時錄像,1:移動偵測,2:報警錄像,3:動測|報警,4:動測&報警, 5:命令觸發, 6: 手動錄像
reservedData: Array[0..2] of char;
end;
//NET_DVR_RECORDSCHED,*LPNET_DVR_RECORDSCHED;
NET_DVR_RECORDDAY = Record
wAllDayRecord: WORD; // 是否全天錄像 */
byRecordType: BYTE; // 錄象型別 0:定時錄像,1:移動偵測,2:報警錄像,3:動測|報警,4:動測&報警 5:命令觸發, 6: 手動錄像*/
reservedData: char;
end;
PNET_DVR_RECORD = ^LPNET_DVR_RECORD;
{$EXTERNALSYM NET_DVR_RECORD}
NET_DVR_RECORD = Record
dwSize: DWORD;
dwRecord: DWORD; //是否錄像 0-否 1-是*/
struRecAllDay: Array[0..MAX_DAYS - 1] of NET_DVR_RECORDDAY;
struRecordSched: Array[0..MAX_DAYS - 1] of Array[0..MAX_TIMESEGMENT - 1] of NET_DVR_RECORDSCHED;
dwRecordTime: DWORD; // 錄象時間長度 */
dwPreRecordTime: DWORD; // 預錄時間 0-不預錄 1-5秒 2-10秒 3-15秒 4-20秒 5-25秒 6-30秒 7-0xffffffff(盡可能預錄) */
end;
LPNET_DVR_RECORD = NET_DVR_RECORD;
//解碼器
PNET_DVR_DECODERCFG = ^TNET_DVR_DECODERCFG;
{$EXTERNALSYM NET_DVR_DECODERCFG}
NET_DVR_DECODERCFG = record
dwSize: DWORD;
dwBaudRate: DWORD; //波特率(bps),0-50,1-75,2-110,3-150,4-300,5-600,6-1200,7-2400,8-4800,9-9600,10-19200, 11-38400,12-57600,13-76800,14-115.2k;
byDataBit: BYTE;// 資料有幾位 0-5位,1-6位,2-7位,3-8位;
byStopBit: BYTE; // 停止位 0-1位,1-2位;
byParity: BYTE; // 校驗 0-無校驗,1-奇校驗,2-偶校驗;
byFlowcontrol: BYTE; // 0-無,1-軟流控,2-硬流控
wDecoderType: WORD; //解碼器型別, 0-YouLi,1-LiLin-1016,2-LiLin-820,3-Pelco-p,4-DM DynaColor,5-HD600,6-JC-4116,7-Pelco-d WX,8-Pelco-d PICO
wDecoderAddress: WORD; //解碼器地址:0 - 255
bySetPreset: array[0..MAX_PRESET-1] of BYTE; //預置點是否設定,0-沒有設定,1-設定
bySetCruise: array[0..MAX_PRESET-1] of BYTE; // 巡航是否設定: 0-沒有設定,1-設定
bySetTrack: array[0..MAX_PRESET-1] of BYTE; // 軌跡是否設定,0-沒有設定,1-設定
end;
TNET_DVR_DECODERCFG = NET_DVR_DECODERCFG;
// 時間
PNET_DVR_TIME = ^TNET_DVR_TIME;
{$EXTERNALSYM NET_DVR_TIME}
NET_DVR_TIME = record
dwYear: DWORD; //年
dwMonth: DWORD; //月
dwDay: DWORD; //日
dwHour: DWORD; //時
dwMinute: DWORD; //分
dwSecond: DWORD; //秒
end;
TNET_DVR_TIME = NET_DVR_TIME;
//查找檔案的結構體
PNET_DVR_FIND_DATA = ^TNET_DVR_FIND_DATA;
{$EXTERNALSYM NET_DVR_FIND_DATA}
NET_DVR_FIND_DATA = record
sFileName: array[0..99] of Char;//檔案名
struStartTime: TNET_DVR_TIME; //檔案的開始時間
struStopTime: TNET_DVR_TIME; //檔案的結束時間
dwFileSize: DWORD; //檔案的大小
end;
TNET_DVR_FIND_DATA = NET_DVR_FIND_DATA;
//報警輸入
PNET_DVR_ALARMINCFG = ^LPNET_DVR_ALARMINCFG;
{$EXTERNALSYM NET_DVR_ALARMINCFG}
NET_DVR_ALARMINCFG = Record
dwSize: DWORD;
sAlarmInName: Array[0..NAME_LEN - 1] of BYTE; // 名稱 */
byAlarmType: BYTE; //報警器型別,0:常開,1:常閉
byAlarmInHandle: BYTE; // 是否處理 */
struAlarmHandleType: NET_DVR_HANDLEEXCEPTION; // 處理方式 */
struAlarmTime: Array[0..MAX_DAYS - 1] of Array[0..MAX_TIMESEGMENT - 1] of NET_DVR_SCHEDTIME;//布防時間
byRelRecordChan: Array[0..MAX_CHANNUM - 1] of BYTE; //報警觸發的錄象通道,為1表示觸發該通道
byEnablePreset: Array[0..MAX_CHANNUM - 1] of BYTE; // 是否呼叫預置點 */
byPresetNo: Array[0..MAX_CHANNUM - 1] of BYTE; // 呼叫的云臺預置點序號,一個報警輸入可以呼叫多個通道的云臺預置點, 0xff表示不呼叫預置點。*/
byEnableCruise: Array[0..MAX_CHANNUM - 1] of BYTE; // 是否呼叫巡航 */
byCruiseNo: Array[0..MAX_CHANNUM - 1] of BYTE; // 巡航 */
byEnablePtzTrack: Array[0..MAX_CHANNUM - 1] of BYTE; // 是否呼叫軌跡 */
byPTZTrack: Array[0..MAX_CHANNUM - 1] of BYTE; // 呼叫的云臺的軌跡序號 */
end;
LPNET_DVR_ALARMINCFG = NET_DVR_ALARMINCFG;
//圖片質量
PNET_DVR_JPEGPARA = ^LPNET_DVR_JPEGPARA;
{$EXTERNALSYM NET_DVR_JPEGPARA}
NET_DVR_JPEGPARA = Record
wPicSize: WORD; // 0=CIF, 1=QCIF, 2=D1 */
wPicQuality: WORD; // 圖片質量系數 0-最好 1-較好 2-一般 */
end;
LPNET_DVR_JPEGPARA = NET_DVR_JPEGPARA;
//報警
LPNET_DVR_ALARMOUTSTATUS = ^TNET_DVR_ALARMOUTSTATUS;
{$EXTERNALSYM NET_DVR_ALARMOUTSTATUS}
NET_DVR_ALARMOUTSTATUS = Record
Output: array[0..MAX_ALARMOUT-1] of Byte;
end;
TNET_DVR_ALARMOUTSTATUS = NET_DVR_ALARMOUTSTATUS;
//服務器通道狀態
PNET_DVR_CHANNELSTATE = ^TNET_DVR_CHANNELSTATE;
{$EXTERNALSYM NET_DVR_CHANNELSTATE}
NET_DVR_CHANNELSTATE = record
byRecordStatic: BYTE; //通道是否在錄像,0-不錄像,1-錄像
bySignalStatic: BYTE; //連接的信號狀態,0-正常,1-信號丟失
byHardwareStatic: BYTE; //通道硬體狀態,0-正常,1-例外,例如DSP死掉
reservedData: Char;
dwBitRate: DWORD; ///實際碼率
dwLinkNum: DWORD; //客戶端連接的個數
dwClientIP: array[0..MAX_LINK-1] of DWORD; //客戶端的IP地址
end;
TNET_DVR_CHANNELSTATE = NET_DVR_CHANNELSTATE;
//硬碟狀態
PNET_DVR_DISKSTATE = ^TNET_DVR_DISKSTATE;
{$EXTERNALSYM NET_DVR_DISKSTATE}
NET_DVR_DISKSTATE = record
dwVolume: DWORD; //硬碟的容量
dwFreeSpace: DWORD; //硬碟的剩余空間
dwHardDiskStatic: DWORD; //硬碟的狀態,休眠,活動,不正常等
end;
TNET_DVR_DISKSTATE = NET_DVR_DISKSTATE;
//設備狀態
PNET_DVR_WORKSTATE = ^TNET_DVR_WORKSTATE;
{$EXTERNALSYM NET_DVR_WORKSTATE}
NET_DVR_WORKSTATE = record
dwDeviceStatic: DWORD; //設備的狀態,0-正常,1-CPU占用率太高,超過85%,2-硬體錯誤,例如串口死掉
struHardDiskStatic: array[0..MAX_DISKNUM-1] of TNET_DVR_DISKSTATE;
struChanStatic: array[0..MAX_CHANNUM-1] of TNET_DVR_CHANNELSTATE; //通道的狀態
byAlarmInStatic: array[0..MAX_ALARMIN-1] of Byte; //報警埠的狀態,0-沒有報警,1-有報警
byAlarmOutStatic: array[0..MAX_ALARMOUT-1] of Byte; //報警輸出埠的狀態,0-沒有輸出,1-有報警輸出
dwLocalDisplay: DWORD; ////本地顯示狀態,0-正常,1-不正常
end;
TNET_DVR_WORKSTATE = NET_DVR_WORKSTATE;
//報警設備資訊結構體。
PNET_DVR_ALARMER = ^TNET_DVR_ALARMER;
{$EXTERNALSYM NET_DVR_ALARMER}
NET_DVR_ALARMER = record
byUserIDValid: BYTE; //userid是否有效:0-無效;1-有效
bySerialValid: BYTE; //序列號是否有效:0-無效;1-有效
byVersionValid: BYTE; //版本號是否有效:0-無效;1-有效
byDeviceNameValid: BYTE; //設備名字是否有效:0-無效;1-有效
byMacAddrValid: BYTE; //MAC地址是否有效:0-無效;1-有效
byLinkPortValid: BYTE; //Login埠是否有效:0-無效;1-有效
byDeviceIPValid: BYTE; //設備IP是否有效:0-無效;1-有效
bySocketIPValid: BYTE; //Socket IP是否有效:0-無效;1-有效
lUserID: Longint; //NET_DVR_Login或NET_DVR_Login_V30回傳值, 布防時有效
sSerialNumber: array[0..SERIALNO_LEN-1] of BYTE; //序列號
dwDeviceVersion: DWORD; //版本資訊:V3.0以上版本支持的設備最高8位為主版本號,次高8位為次版本號,低16位為修復版本號;V3.0以下版本支持的設備高16位表示主版本,低16位表示次版本
sDeviceName: array[0..NAME_LEN-1] of Char; //設備名稱
byMacAddr: array[0..MACADDR_LEN-1] of BYTE; //MAC地址
wLinkPort: WORD; //設備通訊埠
sDeviceIP: array[0..127] of Char; //設備IP地址
sSocketIP: array[0..127] of Char; //報警主動上傳時的Socket IP地址
byIpProtocol: Byte; //IP協議:0-IPV4;1-IPV6
byRes2: array[0..10] of BYTE; //保留,置為0
end;
TNET_DVR_ALARMER = NET_DVR_ALARMER;
uj5u.com熱心網友回復:
type
fMessCallBack=function (lCommand: Longint;sDVRIP: PChar;pBuf: PChar;dwBufLen: DWORD): BOOL; stdcall;
fMSGCallBack=function (lCommand: Longint;pAlarmer: PNET_DVR_ALARMER;pAlarmInfo: PChar;dwBufLen: DWORD; pUser: Pointer): BOOL; stdcall;
function NET_DVR_CaptureJPEGPicture(LoginID: longint; lChannel: longint; lpJpegPara: PNET_DVR_JPEGPARA; sPicFileName: PChar):Boolean; stdcall;external 'HCNetSDK.dll';
{功能:JPEG截圖}
function NET_DVR_Init: Integer; stdcall; external 'HCNetSDK.dll';
{初始化}
procedure NET_DVR_Cleanup; stdcall;external 'HCNetSDK.dll';
{釋放DLL}
function NET_DVR_Login(IPAddr: PChar;wDVRPort: WORD;UserName: PChar;PassWord: PChar; lpDeviceInfo: PNET_DVR_DEVICEINFO): longint; stdcall;external 'HCNetSDK.dll';
{功能:注冊用戶到硬碟錄像機}
function NET_DVR_Logout(LoginID: longint): Integer; stdcall;external 'HCNetSDK.dll';
{功能:注冊用戶退出硬碟錄像機}
function NET_DVR_GetDVRConfig(lUserID:LongInt;dwCommand:DWORD;lChannel:LongInt;lpOutBuffer: Pointer;dwOutBufferSize:DWORD;lpBytesReturned: LPDWORD):BOOL; stdcall; external 'HCNetSDK.dll';
{功能:獲取硬碟錄像機的引數}
function NET_DVR_SetDVRConfig(lUserID: LongInt;dwCommand:DWORD;lChannel:LongInt;lpInBuffer: Pointer;dwInBufferSize:DWORD):BOOL; stdcall; external 'HCNetSDK.dll';
{功能:設定硬碟錄像機的引數}
function NET_DVR_GetLastError: DWORD; stdcall; external 'HCNetSDK.dll';
{功能:獲取最后錯誤}
function NET_DVR_RestoreConfig(lUserID: LongInt): BOOL; stdcall; external 'HCNetSDK.dll';
{功能:恢復默認值}
function NET_DVR_SaveConfig(lUserID: LongInt): BOOL; stdcall; external 'HCNetSDK.dll';
{功能:保存引數}
function NET_DVR_RebootDVR(lUserID: LongInt): BOOL; stdcall; external 'HCNetSDK.dll';
{功能:重啟}
function NET_DVR_ShutDownDVR(lUserID: LongInt): BOOL; stdcall; external 'HCNetSDK.dll';
{功能:關閉DVR}
//遠程格式化硬碟
function NET_DVR_FormatDisk(lUserID: LongInt;lDiskNumber:LongInt):LongInt; stdcall; external 'HCNetSDK.dll';
function NET_DVR_GetFormatProgress(lFormatHandle: LongInt;pCurrentFormatDisk: Pointer;pCurrentDiskPos: Pointer;pFormatStatic: Pointer):Boolean; stdcall; external 'HCNetSDK.dll';
function NET_DVR_CloseFormatHandle(lFormatHandle: LongInt):BOOL; stdcall; external 'HCNetSDK.dll';
function HCGetLastString: PChar;
//報警
function NET_DVR_SetupAlarmChan(lUserID: Longint): Longint; stdcall; external 'HCNetSDK.dll';
function NET_DVR_CloseAlarmChan(lAlarmHandle: Longint): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_GetAlarmOut(lUserID: Longint; lpAlarmOutState: LPNET_DVR_ALARMOUTSTATUS): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_SetAlarmOut(lUserID: Longint; lAlarmOutPort: Longint;lAlarmOutStatic: Longint): BOOL; stdcall; external 'HCNetSDK.dll';
function NET_DVR_SetDVRMessCallBack(MessCallBack: fMessCallBack): BOOL;stdcall; external 'HCNetSDK.dll';
//查找檔案
function NET_DVR_FindFile(lUserID: Longint;lChannel: Longint;dwFileType: DWORD; lpStartTime: PNET_DVR_TIME; lpStopTime: PNET_DVR_TIME): Longint; stdcall; external 'HCNetSDK.dll';
function NET_DVR_FindNextFile(lFindHandle: Longint;lpFindData: PNET_DVR_FIND_DATA): Longint; stdcall; external 'HCNetSDK.dll';
function NET_DVR_FindClose(lFindHandle: Longint): BOOL;stdcall; external 'HCNetSDK.dll';
//服務器狀態
function NET_DVR_GetDVRWorkState(lUserID: Longint; lpWorkState: PNET_DVR_WORKSTATE): BOOL; stdcall; external 'HCNetSDK.dll';
//報警監聽和取消報警監聽
function NET_DVR_StartListen_V30(sLocalIP: PChar; wLocalPort: WORD;DataCallback: fMSGCallBack;pUserData: Pointer): Longint; stdcall; external 'HCNetSDK.dll';
//停止監聽(支持多執行緒)。
function NET_DVR_StopListen_V30(lListenHandle: Longint): BOOL; stdcall; external 'HCNetSDK.dll';
implementation
uj5u.com熱心網友回復:
http://blog.csdn.net/ccnccyj/article/details/9131413uj5u.com熱心網友回復:
請給個地址,在官網上真的是找不到啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/113161.html
