需要在Delphi中调用一个VC写的DLL中的函数,此函数含有多个二级结构体和指针(海康威视SDK包)
此函数在Demo中的调用
if (!NET_DVR_GetDVRConfig(g_lUserID, NET_DVR_GET_PICCFG_V30, iChanShow,&m_struPicCfg[i], sizeof(NET_DVR_PICCFG_V30), &dwReturned))
{
MessageBox("获得图像参数失败","warning");
}
此函数定义
NET_DVR_GetDVRConfig
获取设备的配置信息。
BOOL NET_DVR_GetDVRConfig(
LONG lUserID,
DWORD dwCommand,
LONG lChannel,
LPVOID lpOutBuffer,
DWORD dwOutBufferSize,
LPDWORD lpBytesReturned
);
函数参数说明
Parameters
lUserID
[in] NET_DVR_Login或NET_DVR_Login_V30的返回值
dwCommand
[in] 设备配置命令,详见“Remarks”说明
lChannel
[in] 通道号,不同的命令对应不同的取值,如果该参数无效则置为0xFFFFFFFF即可,详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位),不能为0
lpBytesReturned
[out] 实际收到的数据长度指针,不能为NULL
其中一个我要用到的宏定义参数
dwCommand宏定义 dwCommand含义 lChannel lpOutBuffer对应结构体 宏定义值
NET_DVR_GET_PICCFG_V40 获取图像参数 通道号 NET_DVR_PICCFG_V40 6179
相关结构体
typedef struct
{
BYTE byBrightness; /*亮度,0-255*/
BYTE byContrast; /*对比度,0-255*/
BYTE bySaturation; /*饱和度,0-255*/
BYTE byHue; /*色调,0-255*/
}NET_DVR_COLOR, *LPNET_DVR_COLOR;
//时间段(子结构)
typedef struct
{
//开始时间
BYTE byStartHour;
BYTE byStartMin;
//结束时间
BYTE byStopHour;
BYTE byStopMin;
}NET_DVR_SCHEDTIME, *LPNET_DVR_SCHEDTIME;
typedef struct
{
NET_DVR_COLOR struColor[MAX_TIMESEGMENT_V30];/*图象参数(第一个有效,其他三个保留)*/
NET_DVR_SCHEDTIME struHandleTime[MAX_TIMESEGMENT_V30];/*处理时间段(保留)*/
}NET_DVR_VICOLOR, *LPNET_DVR_VICOLOR;
//遮挡区域(子结构)
typedef struct
{
WORD wHideAreaTopLeftX; /* 遮挡区域的x坐标 */
WORD wHideAreaTopLeftY; /* 遮挡区域的y坐标 */
WORD wHideAreaWidth; /* 遮挡区域的宽 */
WORD wHideAreaHeight; /*遮挡区域的高*/
}NET_DVR_SHELTER, *LPNET_DVR_SHELTER;
typedef struct
{
DWORD dwEnableVILostAlarm; /* 是否启动信号丢失报警 ,0-否,1-是*/
/* 信号丢失触发报警输出 */
DWORD dwHandleType; //异常处理,异常处理方式的"或"结果
/*0x00: 无响应*/
/*0x01: 监视器上警告*/
/*0x02: 声音警告*/
/*0x04: 上传中心*/
/*0x08: 触发报警输出*/
/*0x10: 触发JPRG抓图并上传Email*/
/*0x20: 无线声光报警器联动*/
/*0x40: 联动电子地图(目前只有PCNVR支持)*/
/*0x200: 抓图并上传FTP*/
DWORD dwMaxRelAlarmOutChanNum ; //触发的报警输出通道数(只读)最大支持数量
DWORD dwRelAlarmOut[MAX_ALARMOUT_V40]; /*触发报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效*/
NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*布防时间*/
BYTE byRes[64]; //保留
}NET_DVR_VILOST_V40,*LPNET_DVR_VILOST_V40; //信号丢失报警
typedef struct
{
BYTE byMotionScope[64][96]; /*侦测区域,0-96位,表示64行,共有96*64个小宏块,目前有效的是22*18,为1表示是移动侦测区域,0-表示不是*/
BYTE byMotionSensitive; /*移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭*/
BYTE byRes[3];
}NET_DVR_MOTION_SINGLE_AREA, *LPNET_DVR_MOTION_SINGLE_AREA;
//区域框结构
typedef struct tagNET_VCA_RECT
{
float fX; //边界框左上角点的X轴坐标, 0.001~1
float fY; //边界框左上角点的Y轴坐标, 0.001~1
float fWidth; //边界框的宽度, 0.001~1
float fHeight; //边界框的高度, 0.001~1
}NET_VCA_RECT, *LPNET_VCA_RECT;
typedef struct
{
BYTE byObjectSize;//占比参数(0~100)
BYTE byMotionSensitive; /*移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭*/
BYTE byRes[6];
}NET_DVR_DNMODE, *LPNET_DVR_DNMODE;
typedef struct //60
{
BYTE byAreaNo;//区域编号(IPC- 1~8)
BYTE byRes[3];
NET_VCA_RECT struRect;//单个区域的坐标信息(矩形) size = 16;
NET_DVR_DNMODE struDayNightDisable;//关闭模式
NET_DVR_DNMODE struDayModeParam;//白天模式
NET_DVR_DNMODE struNightModeParam;//夜晚模式
BYTE byRes1[8];
}NET_DVR_MOTION_MULTI_AREAPARAM, ;
typedef struct
{
BYTE byDayNightCtrl;//日夜控制 0~关闭,1~自动切换,2~定时切换(默认关闭)
BYTE byRes[3];
NET_DVR_SCHEDULE_DAYTIME struScheduleTime;//切换时间 16
NET_DVR_MOTION_MULTI_AREAPARAM struMotionMultiAreaParam[MAX_MULTI_AREA_NUM];//最大支持24个区域
BYTE byRes1[60];
}NET_DVR_MOTION_MULTI_AREA,*LPNET_DVR_MOTION_MULTI_AREA; //1328
typedef struct
{
NET_DVR_MOTION_SINGLE_AREA struMotionSingleArea; //普通模式下的单区域设
NET_DVR_MOTION_MULTI_AREA struMotionMultiArea; //专家模式下的多区域设置
}NET_DVR_MOTION_MODE_PARAM, *LPNET_DVR_MOTION_MODE_PARAM;
typedef struct
{
NET_DVR_MOTION_MODE_PARAM struMotionMode; //(5.1.0新增)
BYTE byEnableHandleMotion; /* 是否处理移动侦测 0-否 1-是*/
BYTE byEnableDisplay; /*启用移动侦测高亮显示,0-否,1-是*/
BYTE byConfigurationMode; //0~普通,1~专家(5.1.0新增)
BYTE byRes1; //保留字节
/* 异常处理方式 */
DWORD dwHandleType; //异常处理,异常处理方式的"或"结果
/*0x00: 无响应*/
/*0x01: 监视器上警告*/
/*0x02: 声音警告*/
/*0x04: 上传中心*/
/*0x08: 触发报警输出*/
/*0x10: 触发JPRG抓图并上传Email*/
/*0x20: 无线声光报警器联动*/
/*0x40: 联动电子地图(目前只有PCNVR支持)*/
/*0x200: 抓图并上传FTP*/
DWORD dwMaxRelAlarmOutChanNum ; //触发的报警输出通道数(只读)最大支持数量
DWORD dwRelAlarmOut[MAX_ALARMOUT_V40]; //实际触发的报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效
NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*布防时间*/
/*触发的录像通道*/
DWORD dwMaxRecordChanNum; //设备支持的最大关联录像通道数-只读
DWORD dwRelRecordChan[MAX_CHANNUM_V40]; /* 实际触发录像通道,按值表示,采用紧凑型排列,从下标0 - dwRelRecordChan -1有效,如果中间遇到0xffffffff,则后续无效*/
BYTE byRes[128]; //保留字节
}NET_DVR_MOTION_V40,*LPNET_DVR_MOTION_V40;
typedef struct
{
DWORD dwEnableHideAlarm; /* 是否启动遮挡报警,0-否,1-低灵敏度,2-中灵敏度,3-高灵敏度*/
WORD wHideAlarmAreaTopLeftX; /* 遮挡区域的x坐标 */
WORD wHideAlarmAreaTopLeftY; /* 遮挡区域的y坐标 */
WORD wHideAlarmAreaWidth; /* 遮挡区域的宽 */
WORD wHideAlarmAreaHeight; /*遮挡区域的高*/
/* 信号丢失触发报警输出 */
DWORD dwHandleType; //异常处理,异常处理方式的"或"结果
/*0x00: 无响应*/
/*0x01: 监视器上警告*/
/*0x02: 声音警告*/
/*0x04: 上传中心*/
/*0x08: 触发报警输出*/
/*0x10: 触发JPRG抓图并上传Email*/
/*0x20: 无线声光报警器联动*/
/*0x40: 联动电子地图(目前只有PCNVR支持)*/
/*0x200: 抓图并上传FTP*/
DWORD dwMaxRelAlarmOutChanNum ; //触发的报警输出通道数(只读)最大支持数量
DWORD dwRelAlarmOut[MAX_ALARMOUT_V40]; /*触发报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效*/
NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*布防时间*/
BYTE byRes[64]; //保留
}NET_DVR_HIDEALARM_V40,*LPNET_DVR_HIDEALARM_V40; //遮挡报警
typedef struct
{
DWORD dwSize;
BYTE sChanName[NAME_LEN];
DWORD dwVideoFormat; /* 只读 视频制式 1-NTSC 2-PAL */
NET_DVR_VICOLOR struViColor;// 图像参数按时间段设置
//显示通道名
DWORD dwShowChanName; // 预览的图象上是否显示通道名称,0-不显示,1-显示
WORD wShowNameTopLeftX; /* 通道名称显示位置的x坐标 */
WORD wShowNameTopLeftY; /* 通道名称显示位置的y坐标 */
//隐私遮挡
DWORD dwEnableHide; /* 是否启动遮挡 ,0-否,1-是*/
NET_DVR_SHELTER struShelter[MAX_SHELTERNUM];
//OSD
DWORD dwShowOsd;// 预览的图象上是否显示OSD,0-不显示,1-显示
WORD wOSDTopLeftX; /* OSD的x坐标 */
WORD wOSDTopLeftY; /* OSD的y坐标 */
BYTE byOSDType; /* OSD类型(主要是年月日格式) */
/* 0: XXXX-XX-XX 年月日 */
/* 1: XX-XX-XXXX 月日年 */
/* 2: XXXX年XX月XX日 */
/* 3: XX月XX日XXXX年 */
/* 4: XX-XX-XXXX 日月年*/
/* 5: XX日XX月XXXX年 */
/*6: xx/xx/xxxx(月/日/年) */
/*7: xxxx/xx/xx(年/月/日) */
/*8: xx/xx/xxxx(日/月/年)*/
BYTE byDispWeek; /* 是否显示星期 */
BYTE byOSDAttrib; /* OSD属性:透明,闪烁 */
/* 0: 不显示OSD */
/* 1: 透明,闪烁 */
/* 2: 透明,不闪烁 */
/* 3: 不透明,闪烁 */
/* 4: 不透明,不闪烁 */
BYTE byHourOSDType; /* OSD小时制:0-24小时制,1-12小时制 */
BYTE byFontSize; //16*16(中)/8*16(英),1-32*32(中)/16*32(英),2-64*64(中)/32*64(英) FOR 91系列HD-SDI高清DVR
BYTE byRes1[3]; //保留
NET_DVR_VILOST_V40 struVILost; //视频信号丢失报警(支持组)
NET_DVR_VILOST_V40 struAULost; /*音频信号丢失报警(支持组)*/
NET_DVR_MOTION_V40 struMotion; //移动侦测报警(支持组)
NET_DVR_HIDEALARM_V40 struHideAlarm; //遮挡报警(支持组)
BYTE byRes[128];
}NET_DVR_PICCFG_V40,*LPNET_DVR_PICCFG_V40;
6 个解决方案
#1
下面是我转好的Delphi的结构体
NAME_LEN=32;
STREAM_ID_LEN= 32;
MAX_DAYS=7; //每周天数
MAX_CHANNUM=16;
MAX_CHANNUM_V40=512;
MAX_TIMESEGMENT_V30=8;//9000设备最大时间段数
MAX_SHELTERNUM=4; //8000设备最大遮挡区域数
NET_DVR_GET_PICCFG_V40=6179; //获取图象参数 支持变长
NET_DVR_SET_PICCFG_V40=6180; //设置图象参数, 支持变长
LPNET_DVR_COLOR=^NET_DVR_COLOR;
NET_DVR_COLOR= record
byBrightness:Byte; //亮度,0-255
byContrast:Byte; //对比度,0-255
bySaturation:Byte; //饱和度,0-255
byHue:Byte; //色调,0-255
end;
//时间段(子结构)
LPNET_DVR_SCHEDTIME=^NET_DVR_SCHEDTIME;
NET_DVR_SCHEDTIME= record
byStartHour:Byte;//开始时间
byStartMin:Byte;
byStopHour:Byte;//结束时间
byStopMin:Byte;
end;
LPNET_DVR_VICOLOR=^NET_DVR_VICOLOR;
NET_DVR_VICOLOR= record
struColor:Array[0..MACADDR_LEN-1] of NET_DVR_COLOR;//图象参数(第一个有效,其他三个保留)
struHandleTime:Array[0..MAX_TIMESEGMENT_V30-1] of NET_DVR_SCHEDTIME; //处理时间段(保留)
end;
//遮挡区域(子结构)
LPNET_DVR_SHELTER=^NET_DVR_SHELTER;
NET_DVR_SHELTER= record
wHideAreaTopLeftX:Word;//遮挡区域的x坐标
wHideAreaTopLeftY:Word;//遮挡区域的y坐标
wHideAreaWidth:Word;//遮挡区域的宽
wHideAreaHeigh:Word;//遮挡区域的高
end;
//信号丢失报警
LPNET_DVR_VILOST_V40=^NET_DVR_VILOST_V40;
NET_DVR_VILOST_V40= record
dwEnableVILostAlarm:LongWord;//是否启动信号丢失报警 ,0-否,1-是
dwHandleType:LongWord;//异常处理,异常处理方式的"或"结果
dwMaxRelAlarmOutChanNum:LongWord;//触发的报警输出通道数(只读)最大支持数量
dwRelAlarmOut:array [0..MAX_ALARMOUT_V40-1] of LongWord;//触发报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效*/
struAlarmTime:array [0..MAX_DAYS-1,0..MAX_TIMESEGMENT_V30-1] of NET_DVR_SCHEDTIME;//布防时间
byRes:array [0..63] of Byte;//保留
end;
LPNET_DVR_MOTION_SINGLE_AREA=^NET_DVR_MOTION_SINGLE_AREA;
NET_DVR_MOTION_SINGLE_AREA= record
byMotionScope:array [0..63,0..95] of Byte;//侦测区域,0-96位,表示64行,共有96*64个小宏块,目前有效的是22*18,为1表示是移动侦测区域,0-表示不是
byMotionSensitive:Byte;//移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭
byRes:array [0..2] of Byte;
end;
//区域框结构
LPNET_VCA_RECT=^NET_VCA_RECT;
NET_VCA_RECT= record
fX:LongWord;
fY:LongWord;
fWidth:LongWord;
fHeight:LongWord;
end;
LPNET_DVR_DNMODE=^NET_DVR_DNMODE;
NET_DVR_DNMODE= record
byObjectSize:Byte;//占比参数(0~100)
byMotionSensitive:Byte; //移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭
byRes:array [0..5] of Byte;
end;
LPNET_DVR_MOTION_MULTI_AREAPARAM=^NET_DVR_MOTION_MULTI_AREAPARAM;
NET_DVR_MOTION_MULTI_AREAPARAM= record
byAreaNo:Byte;//区域编号(IPC- 1~8)
byRes:array [0..2] of Byte;
struRect:NET_VCA_RECT;//单个区域的坐标信息(矩形) size = 16;
struDayNightDisable:NET_DVR_DNMODE;//关闭模式
struDayModeParam:NET_DVR_DNMODE;//白天模式
struNightModeParam:NET_DVR_DNMODE;//夜晚模式
byRes1:array [0..7] of Byte;
end;
LPNET_DVR_MOTION_MULTI_AREA=^NET_DVR_MOTION_MULTI_AREA;
NET_DVR_MOTION_MULTI_AREA= record
byDayNightCtrl:Byte;//日夜控制 0~关闭,1~自动切换,2~定时切换(默认关闭)
byRes:array [0..2] of Byte;
struScheduleTime:NET_DVR_SCHEDULE_DAYTIME;//切换时间 16
struMotionMultiAreaParam:array [0..MAX_MULTI_AREA_NUM-1] of NET_DVR_MOTION_MULTI_AREAPARAM;//最大支持24个区域
byRes1:array [0..59] of Byte;
end;
LPNET_DVR_MOTION_MODE_PARAM=^NET_DVR_MOTION_MODE_PARAM;
NET_DVR_MOTION_MODE_PARAM= record
struMotionSingleArea:NET_DVR_MOTION_SINGLE_AREA; //普通模式下的单区域设
struMotionMultiArea:NET_DVR_MOTION_MULTI_AREA; //专家模式下的多区域设置
end;
LPNET_DVR_MOTION_V40=^NET_DVR_MOTION_V40;
NET_DVR_MOTION_V40= record
struMotionMode:NET_DVR_MOTION_MODE_PARAM;
byEnableHandleMotion:Byte; //是否处理移动侦测 0-否 1-是
byEnableDisplay:Byte; //启用移动侦测高亮显示,0-否,1-是
byConfigurationMode:Byte; //0~普通,1~专家(5.1.0新增)
byRes1:Byte;
dwHandleType:LongWord; //异常处理,异常处理方式的"或"结果
dwMaxRelAlarmOutChanNum:LongWord;
dwRelAlarmOut:array [0..MAX_ALARMOUT_V40-1] of LongWord;//实际触发的报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效
struAlarmTime:array [0..MAX_DAYS-1,0..MAX_TIMESEGMENT_V30-1] of NET_DVR_SCHEDTIME;//布防时间
//触发的录像通道
dwMaxRecordChanNum:LongWord;
dwRelRecordChan:array [0..MAX_CHANNUM_V40-1] of LongWord;//实际触发录像通道,按值表示,采用紧凑型排列,从下标0 - dwRelRecordChan -1有效,如果中间遇到0xffffffff,则后续无效*/
byRes:array [0..127] of Byte;
end;
//遮挡报警
LPNET_DVR_HIDEALARM_V40=^NET_DVR_HIDEALARM_V40;
NET_DVR_HIDEALARM_V40= record
dwEnableHideAlarm:LongInt;//是否启动遮挡报警,0-否,1-低灵敏度,2-中灵敏度,3-高灵敏度
wHideAlarmAreaTopLeftX:Word; //遮挡区域的x坐标
wHideAlarmAreaTopLeftY:Word; //遮挡区域的y坐标
wHideAlarmAreaWidth:Word; //遮挡区域的宽
wHideAlarmAreaHeight:Word; //遮挡区域的高
dwHandleType:LongInt;//信号丢失触发报警输出
dwMaxRelAlarmOutChanNum:LongInt;//触发的报警输出通道数(只读)最大支持数量
dwRelAlarmOut:array [0..MAX_ALARMOUT_V40] of LongInt;//触发报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效
struAlarmTime:array [0..MAX_DAYS,0..MAX_TIMESEGMENT_V30] of NET_DVR_SCHEDTIME;//布防时间
byRes:array [0..63] of Byte;
end;
LPNET_DVR_PICCFG_V40=^NET_DVR_PICCFG_V40;
NET_DVR_PICCFG_V40= record
dwSize:LongWord;
sChanName:array[0..NAME_LEN-1] of Byte;
dwVideoFormat:LongWord; //只读 视频制式 1-NTSC 2-PAL
struViColor:NET_DVR_VICOLOR; // 图像参数按时间段设置
//显示通道名
dwShowChanName:LongWord; // 预览的图象上是否显示通道名称,0-不显示,1-显示
wShowNameTopLeftX:Word; //通道名称显示位置的x坐标
wShowNameTopLeftY:Word; //通道名称显示位置的y坐标
//隐私遮挡
dwEnableHide:LongWord;
struShelter:Array[0..MAX_SHELTERNUM-1] of NET_DVR_SHELTER;
//OSD
dwShowOsd:LongWord;//预览的图象上是否显示OSD,0-不显示,1-显示
wOSDTopLeftX:Word;//OSD的x坐标
wOSDTopLeftY:Word;//OSD的y坐标
byOSDType:Byte;//OSD类型(主要是年月日格式)
byDispWeek:Byte;//是否显示星期
byOSDAttrib:Byte;//OSD属性:透明,闪烁
byHourOSDType:Byte;//OSD小时制:0-24小时制,1-12小时制
byFontSize:Byte;//16*16(中)/8*16(英),1-32*32(中)/16*32(英),2-64*64(中)/32*64(英) FOR 91系列HD-SDI高清DVR
byRes1array:array[0..2] of Byte;//保留
struVILost:NET_DVR_VILOST_V40; //视频信号丢失报警(支持组)
struAULost:NET_DVR_VILOST_V40; //音频信号丢失报警(支持组)
struMotion:NET_DVR_MOTION_V40; //移动侦测报警(支持组)
struHideAlarm:NET_DVR_HIDEALARM_V40; //遮挡报警(支持组)
byRes:array[0..127] of Byte;
end;
#2
我在Delphi中此函数的定义
HK_DLL='HCNetSDK.dll';
function NET_DVR_GetDVRConfig(lUserID:LongInt;
dwCommand:LongWord;
lChannel:LongInt;
lpOutBuffer:Pointer;
dwOutBufferSize:LongInt;
lpBytesReturned:PWORD):Boolean ;stdcall;external HK_DLL
#3
结构体太多了,补上两个
LPNET_DVR_DAYTIME=^NET_DVR_DAYTIME;
NET_DVR_DAYTIME= record
byHour:Byte;//0~24
byMinute:Byte;//0~60
bySecond:Byte;//0~60
byRes:Byte;
wMilliSecond:Word; //0~1000
byRes1:array [0..1] of Byte;
end;
LPNET_DVR_SCHEDULE_DAYTIME=^NET_DVR_SCHEDULE_DAYTIME;
NET_DVR_SCHEDULE_DAYTIME= record
struStartTime:NET_DVR_DAYTIME;//开始时间
struStopTime:NET_DVR_DAYTIME; //结束时间
end;
#4
有没有新的突破啊 LZ
#5
你调 用提示什么呢看的翻译的无大碍啊
#6
返回值有问题,dwShowChanName,dwShowOsd都显示的是0,实际上我已经用客户端软件设置为1了
#1
下面是我转好的Delphi的结构体
NAME_LEN=32;
STREAM_ID_LEN= 32;
MAX_DAYS=7; //每周天数
MAX_CHANNUM=16;
MAX_CHANNUM_V40=512;
MAX_TIMESEGMENT_V30=8;//9000设备最大时间段数
MAX_SHELTERNUM=4; //8000设备最大遮挡区域数
NET_DVR_GET_PICCFG_V40=6179; //获取图象参数 支持变长
NET_DVR_SET_PICCFG_V40=6180; //设置图象参数, 支持变长
LPNET_DVR_COLOR=^NET_DVR_COLOR;
NET_DVR_COLOR= record
byBrightness:Byte; //亮度,0-255
byContrast:Byte; //对比度,0-255
bySaturation:Byte; //饱和度,0-255
byHue:Byte; //色调,0-255
end;
//时间段(子结构)
LPNET_DVR_SCHEDTIME=^NET_DVR_SCHEDTIME;
NET_DVR_SCHEDTIME= record
byStartHour:Byte;//开始时间
byStartMin:Byte;
byStopHour:Byte;//结束时间
byStopMin:Byte;
end;
LPNET_DVR_VICOLOR=^NET_DVR_VICOLOR;
NET_DVR_VICOLOR= record
struColor:Array[0..MACADDR_LEN-1] of NET_DVR_COLOR;//图象参数(第一个有效,其他三个保留)
struHandleTime:Array[0..MAX_TIMESEGMENT_V30-1] of NET_DVR_SCHEDTIME; //处理时间段(保留)
end;
//遮挡区域(子结构)
LPNET_DVR_SHELTER=^NET_DVR_SHELTER;
NET_DVR_SHELTER= record
wHideAreaTopLeftX:Word;//遮挡区域的x坐标
wHideAreaTopLeftY:Word;//遮挡区域的y坐标
wHideAreaWidth:Word;//遮挡区域的宽
wHideAreaHeigh:Word;//遮挡区域的高
end;
//信号丢失报警
LPNET_DVR_VILOST_V40=^NET_DVR_VILOST_V40;
NET_DVR_VILOST_V40= record
dwEnableVILostAlarm:LongWord;//是否启动信号丢失报警 ,0-否,1-是
dwHandleType:LongWord;//异常处理,异常处理方式的"或"结果
dwMaxRelAlarmOutChanNum:LongWord;//触发的报警输出通道数(只读)最大支持数量
dwRelAlarmOut:array [0..MAX_ALARMOUT_V40-1] of LongWord;//触发报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效*/
struAlarmTime:array [0..MAX_DAYS-1,0..MAX_TIMESEGMENT_V30-1] of NET_DVR_SCHEDTIME;//布防时间
byRes:array [0..63] of Byte;//保留
end;
LPNET_DVR_MOTION_SINGLE_AREA=^NET_DVR_MOTION_SINGLE_AREA;
NET_DVR_MOTION_SINGLE_AREA= record
byMotionScope:array [0..63,0..95] of Byte;//侦测区域,0-96位,表示64行,共有96*64个小宏块,目前有效的是22*18,为1表示是移动侦测区域,0-表示不是
byMotionSensitive:Byte;//移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭
byRes:array [0..2] of Byte;
end;
//区域框结构
LPNET_VCA_RECT=^NET_VCA_RECT;
NET_VCA_RECT= record
fX:LongWord;
fY:LongWord;
fWidth:LongWord;
fHeight:LongWord;
end;
LPNET_DVR_DNMODE=^NET_DVR_DNMODE;
NET_DVR_DNMODE= record
byObjectSize:Byte;//占比参数(0~100)
byMotionSensitive:Byte; //移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭
byRes:array [0..5] of Byte;
end;
LPNET_DVR_MOTION_MULTI_AREAPARAM=^NET_DVR_MOTION_MULTI_AREAPARAM;
NET_DVR_MOTION_MULTI_AREAPARAM= record
byAreaNo:Byte;//区域编号(IPC- 1~8)
byRes:array [0..2] of Byte;
struRect:NET_VCA_RECT;//单个区域的坐标信息(矩形) size = 16;
struDayNightDisable:NET_DVR_DNMODE;//关闭模式
struDayModeParam:NET_DVR_DNMODE;//白天模式
struNightModeParam:NET_DVR_DNMODE;//夜晚模式
byRes1:array [0..7] of Byte;
end;
LPNET_DVR_MOTION_MULTI_AREA=^NET_DVR_MOTION_MULTI_AREA;
NET_DVR_MOTION_MULTI_AREA= record
byDayNightCtrl:Byte;//日夜控制 0~关闭,1~自动切换,2~定时切换(默认关闭)
byRes:array [0..2] of Byte;
struScheduleTime:NET_DVR_SCHEDULE_DAYTIME;//切换时间 16
struMotionMultiAreaParam:array [0..MAX_MULTI_AREA_NUM-1] of NET_DVR_MOTION_MULTI_AREAPARAM;//最大支持24个区域
byRes1:array [0..59] of Byte;
end;
LPNET_DVR_MOTION_MODE_PARAM=^NET_DVR_MOTION_MODE_PARAM;
NET_DVR_MOTION_MODE_PARAM= record
struMotionSingleArea:NET_DVR_MOTION_SINGLE_AREA; //普通模式下的单区域设
struMotionMultiArea:NET_DVR_MOTION_MULTI_AREA; //专家模式下的多区域设置
end;
LPNET_DVR_MOTION_V40=^NET_DVR_MOTION_V40;
NET_DVR_MOTION_V40= record
struMotionMode:NET_DVR_MOTION_MODE_PARAM;
byEnableHandleMotion:Byte; //是否处理移动侦测 0-否 1-是
byEnableDisplay:Byte; //启用移动侦测高亮显示,0-否,1-是
byConfigurationMode:Byte; //0~普通,1~专家(5.1.0新增)
byRes1:Byte;
dwHandleType:LongWord; //异常处理,异常处理方式的"或"结果
dwMaxRelAlarmOutChanNum:LongWord;
dwRelAlarmOut:array [0..MAX_ALARMOUT_V40-1] of LongWord;//实际触发的报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效
struAlarmTime:array [0..MAX_DAYS-1,0..MAX_TIMESEGMENT_V30-1] of NET_DVR_SCHEDTIME;//布防时间
//触发的录像通道
dwMaxRecordChanNum:LongWord;
dwRelRecordChan:array [0..MAX_CHANNUM_V40-1] of LongWord;//实际触发录像通道,按值表示,采用紧凑型排列,从下标0 - dwRelRecordChan -1有效,如果中间遇到0xffffffff,则后续无效*/
byRes:array [0..127] of Byte;
end;
//遮挡报警
LPNET_DVR_HIDEALARM_V40=^NET_DVR_HIDEALARM_V40;
NET_DVR_HIDEALARM_V40= record
dwEnableHideAlarm:LongInt;//是否启动遮挡报警,0-否,1-低灵敏度,2-中灵敏度,3-高灵敏度
wHideAlarmAreaTopLeftX:Word; //遮挡区域的x坐标
wHideAlarmAreaTopLeftY:Word; //遮挡区域的y坐标
wHideAlarmAreaWidth:Word; //遮挡区域的宽
wHideAlarmAreaHeight:Word; //遮挡区域的高
dwHandleType:LongInt;//信号丢失触发报警输出
dwMaxRelAlarmOutChanNum:LongInt;//触发的报警输出通道数(只读)最大支持数量
dwRelAlarmOut:array [0..MAX_ALARMOUT_V40] of LongInt;//触发报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效
struAlarmTime:array [0..MAX_DAYS,0..MAX_TIMESEGMENT_V30] of NET_DVR_SCHEDTIME;//布防时间
byRes:array [0..63] of Byte;
end;
LPNET_DVR_PICCFG_V40=^NET_DVR_PICCFG_V40;
NET_DVR_PICCFG_V40= record
dwSize:LongWord;
sChanName:array[0..NAME_LEN-1] of Byte;
dwVideoFormat:LongWord; //只读 视频制式 1-NTSC 2-PAL
struViColor:NET_DVR_VICOLOR; // 图像参数按时间段设置
//显示通道名
dwShowChanName:LongWord; // 预览的图象上是否显示通道名称,0-不显示,1-显示
wShowNameTopLeftX:Word; //通道名称显示位置的x坐标
wShowNameTopLeftY:Word; //通道名称显示位置的y坐标
//隐私遮挡
dwEnableHide:LongWord;
struShelter:Array[0..MAX_SHELTERNUM-1] of NET_DVR_SHELTER;
//OSD
dwShowOsd:LongWord;//预览的图象上是否显示OSD,0-不显示,1-显示
wOSDTopLeftX:Word;//OSD的x坐标
wOSDTopLeftY:Word;//OSD的y坐标
byOSDType:Byte;//OSD类型(主要是年月日格式)
byDispWeek:Byte;//是否显示星期
byOSDAttrib:Byte;//OSD属性:透明,闪烁
byHourOSDType:Byte;//OSD小时制:0-24小时制,1-12小时制
byFontSize:Byte;//16*16(中)/8*16(英),1-32*32(中)/16*32(英),2-64*64(中)/32*64(英) FOR 91系列HD-SDI高清DVR
byRes1array:array[0..2] of Byte;//保留
struVILost:NET_DVR_VILOST_V40; //视频信号丢失报警(支持组)
struAULost:NET_DVR_VILOST_V40; //音频信号丢失报警(支持组)
struMotion:NET_DVR_MOTION_V40; //移动侦测报警(支持组)
struHideAlarm:NET_DVR_HIDEALARM_V40; //遮挡报警(支持组)
byRes:array[0..127] of Byte;
end;
#2
我在Delphi中此函数的定义
HK_DLL='HCNetSDK.dll';
function NET_DVR_GetDVRConfig(lUserID:LongInt;
dwCommand:LongWord;
lChannel:LongInt;
lpOutBuffer:Pointer;
dwOutBufferSize:LongInt;
lpBytesReturned:PWORD):Boolean ;stdcall;external HK_DLL
#3
结构体太多了,补上两个
LPNET_DVR_DAYTIME=^NET_DVR_DAYTIME;
NET_DVR_DAYTIME= record
byHour:Byte;//0~24
byMinute:Byte;//0~60
bySecond:Byte;//0~60
byRes:Byte;
wMilliSecond:Word; //0~1000
byRes1:array [0..1] of Byte;
end;
LPNET_DVR_SCHEDULE_DAYTIME=^NET_DVR_SCHEDULE_DAYTIME;
NET_DVR_SCHEDULE_DAYTIME= record
struStartTime:NET_DVR_DAYTIME;//开始时间
struStopTime:NET_DVR_DAYTIME; //结束时间
end;
#4
有没有新的突破啊 LZ
#5
你调 用提示什么呢看的翻译的无大碍啊
#6
返回值有问题,dwShowChanName,dwShowOsd都显示的是0,实际上我已经用客户端软件设置为1了