海康视频SDK问题。(200分)

  • 主题发起人 主题发起人 神经蛋白质
  • 开始时间 开始时间

神经蛋白质

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,pBuf:PChar;dwBufLen:DWORD;dwLinkDVRPort:WORD);

function NET_DVR_SetDVRMessCallBack_NEW(MessCallBack:MessCallBack_NEW):Boolean;
stdcall;
external 'HCNetSDK.dll';

主程序中调用
------------------------------main.pas-----------------------------------

procedure MessCallBack_NEW(lCommand:LongInt;sDVRIP,pBuf:PChar;dwBufLen:DWORD;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。

而且在其他回调函数里面也出现各种参数返回异常。

请大虾看看。哪里有问题。怎么解决。在线等待
 
type
MessCallBack_NEW = procedure(lCommand:LongInt;sDVRIP,pBuf:PChar;dwBufLen:DWORD;dwLinkDVRPort:WORD);stdcall;//这里要加上stdcall

function NET_DVR_SetDVRMessCallBack_NEW(MessCallBack:MessCallBack_NEW):[red]Boolean[/red];
stdcall;
external 'HCNetSDK.dll';
SDK里声明的BOOL不等于boolean,应该是longbool
 
后退
顶部