VC SDK二次开发 转换Delphi
haj77 2017-11-09 01:25:35 VC代码转换Delphi
VC定义:
// 开启道闸参数(对应DH_CTRL_OPEN_STROBE命令)
typedef struct tagNET_CTRL_OPEN_STROBE
{
DWORD dwSize;
int nChannelId; // 通道号
char szPlateNumber[MAX_PLATENUMBER_LEN]; // 车牌号码
} NET_CTRL_OPEN_STROBE;
// 设备控制函数原型
CLIENT_API BOOL CALL_METHOD CLIENT_ControlDevice(LLONG lLoginID, CtrlType type, void *param, int waittime = 1000);
VC代码:
NET_CTRL_OPEN_STROBE stuAccessPara = { sizeof(stuAccessPara) };
stuAccessPara.nChannelId = thisVideo.index;
bool bret = CLIENT_ControlDevice(thisVideo.LoginID, DH_CTRL_OPEN_STROBE, &stuAccessPara);
Delphi定义:
type
LPNET_CTRL_OPEN_STROBE = ^NET_CTRL_OPEN_STROBE ;
NET_CTRL_OPEN_STROBE = record
dwSize : DWORD;
nChannelId : Integer;
szPlateNumber : Array [0..40-1] of Char;
end;
// 设备控制
Function CLIENT_ControlDevice( lLoginID : LongInt;CtrlType :tCtrlType ; param :Pointer; const waittime :integer= 1000): Boolean; stdcall External 'dhnetsdk';
var
aa :LPNET_CTRL_OPEN_STROBE;
Rest :Boolean;
begin
AA:= New(LPNET_CTRL_OPEN_STROBE);
aa.dwSize :=sizeof(NET_CTRL_OPEN_STROBE);
aa.nChannelId :=0;
//aa.szPlateNumber :='ABCD';
Rest :=CLIENT_ControlDevice(devHandle,DH_CTRL_OPEN_STROBE,AA);
if Rest then
Memo1.Lines.Add('开闸成功')
else
Memo1.Lines.Add('开闸失败')
end;
CLIENT_ControlDevice函数不报错,但是也不返回正确结果