神
神经蛋白质
Unregistered / Unconfirmed
GUEST, unregistred user!
不知道有没有朋友做个海康视频视频服务器客户端程序。希望能帮我解决我的问题。
以下是他们SDK文档里面定义的一个回调函数。用来上报告警的。
BOOL __stdcall NET_DVR_SetDVRMessCallBack_NEW(BOOL (CALLBACK *fMessCallBack_NEW)(LONG lCommand,char *sDVRIP,char *pBuf,DWORD dwBufLen, WORD dwLinkDVRPort));
功能:注册接收硬盘录像机消息的回调函数(以DVRIP和连接DVR端口回调)
返回值:
TRUE表示成功,FALSE表示失败
fMessCallBack_NEW:消息回调函数,像硬盘录像机主动发起的请求;以及通过报警上传通道收到的报警信息,都通过此函数回调。
lCommand:消息的类型,定义如下:
#define COMM_ALARM 0x1100 //上传报警信息
#define COMM_TRADEINFO 0x1500 //ATMDVR上传交易信息
sDVRIP:服务器的IP地址
pBuf:存放信息的缓冲区,不同的类型分别指向不同的结构
dwBufLen:缓冲区的大小
以下是我在delphi中的声明:
------------------------------SDK.PAS------------------------------------------
type
MessCallBack_NEW = procedure(lCommand:LongInt;sDVRIP,pBufChar;dwBufLenWORD;dwLinkDVRPort:WORD);
function NET_DVR_SetDVRMessCallBack_NEW(MessCallBack:MessCallBack_NEW):Boolean;
stdcall;
external 'HCNetSDK.dll';
主程序中调用
------------------------------main.pas-----------------------------------
procedure MessCallBack_NEW(lCommand:LongInt;sDVRIP,pBufChar;dwBufLenWORD;dwLinkDVRPort:WORD;
var
m_alarminfo:NET_DVR_ALARMINFO;
i,port :integer;
begin
form1.mmo1.Lines.Add('lCommand: 0x'+inttohex(lCommand,2))
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
//设置告警回调
NET_DVR_SetDVRMessCallBack_NEW(MessCallBack_NEW);
end;
可是告警发生时回调函数MessCallBack_NEW 返回的参数 lCommand 不对,非常大。不是0x1100。
而且在其他回调函数里面也出现各种参数返回异常。
请大虾看看。哪里有问题。怎么解决。在线等待
以下是他们SDK文档里面定义的一个回调函数。用来上报告警的。
BOOL __stdcall NET_DVR_SetDVRMessCallBack_NEW(BOOL (CALLBACK *fMessCallBack_NEW)(LONG lCommand,char *sDVRIP,char *pBuf,DWORD dwBufLen, WORD dwLinkDVRPort));
功能:注册接收硬盘录像机消息的回调函数(以DVRIP和连接DVR端口回调)
返回值:
TRUE表示成功,FALSE表示失败
fMessCallBack_NEW:消息回调函数,像硬盘录像机主动发起的请求;以及通过报警上传通道收到的报警信息,都通过此函数回调。
lCommand:消息的类型,定义如下:
#define COMM_ALARM 0x1100 //上传报警信息
#define COMM_TRADEINFO 0x1500 //ATMDVR上传交易信息
sDVRIP:服务器的IP地址
pBuf:存放信息的缓冲区,不同的类型分别指向不同的结构
dwBufLen:缓冲区的大小
以下是我在delphi中的声明:
------------------------------SDK.PAS------------------------------------------
type
MessCallBack_NEW = procedure(lCommand:LongInt;sDVRIP,pBufChar;dwBufLenWORD;dwLinkDVRPort:WORD);
function NET_DVR_SetDVRMessCallBack_NEW(MessCallBack:MessCallBack_NEW):Boolean;
stdcall;
external 'HCNetSDK.dll';
主程序中调用
------------------------------main.pas-----------------------------------
procedure MessCallBack_NEW(lCommand:LongInt;sDVRIP,pBufChar;dwBufLenWORD;dwLinkDVRPort:WORD;
var
m_alarminfo:NET_DVR_ALARMINFO;
i,port :integer;
begin
form1.mmo1.Lines.Add('lCommand: 0x'+inttohex(lCommand,2))
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
//设置告警回调
NET_DVR_SetDVRMessCallBack_NEW(MessCallBack_NEW);
end;
可是告警发生时回调函数MessCallBack_NEW 返回的参数 lCommand 不对,非常大。不是0x1100。
而且在其他回调函数里面也出现各种参数返回异常。
请大虾看看。哪里有问题。怎么解决。在线等待