16,748
社区成员
发帖
与我相关
我的任务
分享
typedef struct
{
BYTE sSerialNumber[SERIALNO_LEN];
BYTE byAlarmInPortNum;
BYTE byAlarmOutPortNum;
BYTE byDiskNum;
BYTE byDVRType;
BYTE byChanNum;
BYTE byStartChan;
BYTE byAudioChanNum;
BYTE byIPChanNum;
BYTE byZeroChanNum;
BYTE byMainProto;
BYTE bySubProto;
BYTE bySupport; //,
BYTE bySupport1; //
BYTE bySupport2; //
WORD wDevType; //设备型号
BYTE byMultiStream;//
BYTE byMultiStreamProto;//
BYTE byRes2[14]; //保留
}NET_DVR_DEVICEINFO_V30, *LPNET_DVR_DEVICEINFO_V30;
NET_DVR_API LONG __stdcall NET_DVR_Login_V30(char *sDVRIP, WORD wDVRPort, char *sUserName, char *sPassword, LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo);
//调用代码
NET_DVR_DEVICEINFO_V30 DeviceInfoTmp;
memset(&DeviceInfoTmp,0,sizeof(NET_DVR_DEVICEINFO_V30));
LONG lLoginID = NET_DVR_Login_V30(DeviceIp.GetBuffer(DeviceIp.GetLength()),m_nDevPort, \
m_csUser.GetBuffer(m_csUser.GetLength()),m_csPWD.GetBuffer(m_csPWD.GetLength()),&DeviceInfoTmp);
//设备参数结构体
LPNET_DVR_DEVICEINFO_V30 = ^NET_DVR_DEVICEINFO_V30;
NET_DVR_DEVICEINFO_V30 = packed record
sSerialNumber: array[0..47] of Byte; //序列号
byAlarmInPortNum, //报警输入个数
byAlarmOutPortNum, //报警输出个数
byDiskNum, //硬盘个数
byDVRType, //设备类型
byChanNum, //设备模拟通道个数
byStartChan, //起始通道号,目前设备通道号从1开始
byAudioChanNum, //设备主意通道数
byIPChanNum, //设备最大数字通道个数
byZeroChanNum, //零通道编码个数
byMainProto, //主玛流传输协议类型 0-private 1-rtsp
bySubProto, //子玛流传输协议类型 0-private 1-rtsp
bySupport, //能力 0-不支持 1-支持
bySupport1, //能力扩充 0-不支持 1-支持
bySupport2: Byte; //能力扩充 0-不支持 1-支持
wDevType: Word; //设备型号
byMultiStream, //支持多码流 0-不支持 1-支持
byMultiStreamProto: Byte; //多码流是否支持rtsp协议取流,按位表示,0-不支持,1-支持:bit0- 码流3,bit1- 码流4,依次类推
byRes2: array[0..13] of Byte; //保留,置0
end;
//下面是调用代码总是出地址越界,谁能告诉我是哪的错误
procedure TForm1.Button1Click(Sender: TObject);
var lUserID: LongInt;
DeviceInfo: LPNET_DVR_DEVICEINFO_V30;
begin
NET_DVR_Init();
New(DeviceInfo);
FillChar(DeviceInfo^, SizeOf(NET_DVR_DEVICEINFO_V30), 0);
lUserID := NET_DVR_Login_V30(PChar(edtIP.Text), 8000, PChar('admin'), PChar('12345'), DeviceInfo);
if lUserID > 0 then
ShowMessage('login success')
else
ShowMessage('login failure');
end;