API调用问题请教!!!!!
海康威视最新的SDK有人用过吗,登陆注册的函数调用报参数传递错误(参数错误。SDK接口中给入的输入或输出参数为空,或者参数格式或值不符合要求。)。下面是C++代码
下边是我修改vb的代码
下面是vb调用的代码
LONG NET_DVR_Login_V40( LPNET_DVR_USER_LOGIN_INFO pLoginInfo,
LPNET_DVR_DEVICEINFO_V40 lpDeviceInfo);
struct{
char sDeviceAddress[NET_DVR_DEV_ADDRESS_MAX_LEN];
BYTE byUseTransport;
WORD wPort;
char sUserName[NET_DVR_LOGIN_USERNAME_MAX_LEN];
char sPassword[NET_DVR_LOGIN_PASSWD_MAX_LEN];
fLoginResultCallBack cbLoginResult;
void *pUser;
BOOL bUseAsynLogin;
BYTE byProxyType;
BYTE byUseUTCTime;
BYTE byLoginMode;
BYTE byHttps;
LONG iProxyID;
BYTE byRes3[120];
}NET_DVR_USER_LOGIN_INFO,*LPNET_DVR_USER_LOGIN_INFO;
struct{
NET_DVR_DEVICEINFO_V30 struDeviceV30;
BYTE bySupportLock;
BYTE byRetryLoginTime;
BYTE byPasswordLevel;
BYTE byProxyType;
DWORD dwSurplusLockTime;
BYTE byCharEncodeType;
BYTE bySupportDev5;
BYTE byLoginMode; BYTE byRes2[253];
}NET_DVR_DEVICEINFO_V40,*LPNET_DVR_DEVICEINFO_V40;
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 bySupport3;
BYTE byMultiStreamProto;
BYTE byStartDChan;
BYTE byStartDTalkChan;
BYTE byHighDChanNum;
BYTE bySupport4;
BYTE byLanguageType;
BYTE byVoiceInChanNum;
BYTE byStartVoiceInChanNo;
BYTE byRes3[2];
BYTE byMirrorChanNum;
WORD wStartMirrorChanNo;
BYTE byRes2[2];
}NET_DVR_DEVICEINFO_V30,*LPNET_DVR_DEVICEINFO_V30;
这是Callback Function
typedef void(CALLBACK *fLoginResultCallBack)(
LONG lUserID,
DWORD dwResult,
LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo,
void *pUser
);
下边是我修改vb的代码
Global Const NET_DVR_DEV_ADDRESS_MAX_LEN = 129
Global Const NET_DVR_LOGIN_USERNAME_MAX_LEN = 64
Global Const NET_DVR_LOGIN_PASSWD_MAX_LEN = 64
Global Const SERIALNO_LEN = 48 '序列号长度
Type NET_DVR_USER_LOGIN_INFO
sDeviceAddress As String * NET_DVR_DEV_ADDRESS_MAX_LEN
byUseTransport As Byte
wPort As Integer
sUserName As String * NET_DVR_LOGIN_USERNAME_MAX_LEN
sPassword As String * NET_DVR_LOGIN_PASSWD_MAX_LEN
cbLoginResult As Long
pUser As Long
bUseAsynLogin As Boolean
byProxyType As Byte
byUseUTCTime As Byte
byLoginMode As Byte
byHttps As Byte
iProxyID As Long
byRes3(120) As Byte
End Type
Type NET_DVR_DEVICEINFO_V30
sSerialNumber(SERIALNO_LEN) As Byte
byAlarmInPortNum As Byte
byAlarmOutPortNum As Byte
byDiskNum As Byte
byDVRType As Byte
byChanNum As Byte
byStartChan As Byte
byAudioChanNum As Byte
byIPChanNum As Byte
byZeroChanNum As Byte
byMainProto As Byte
bySubProto As Byte
bySupport As Byte
bySupport1 As Byte
bySupport2 As Byte
wDevType As Integer
bySupport3 As Byte
byMultiStreamProto As Byte
byStartDChan As Byte
byStartDTalkChan As Byte
byHighDChanNum As Byte
bySupport4 As Byte
byLanguageType As Byte
byVoiceInChanNum As Byte
byStartVoiceInChanNo As Byte
byRes3(2) As Byte
byMirrorChanNum As Byte
wStartMirrorChanNo As Integer
byRes2(2) As Byte
End Type
Type NET_DVR_DEVICEINFO_V40
struDeviceV30 As NET_DVR_DEVICEINFO_V30
bySupportLock As Byte
byRetryLoginTime As Byte
byPasswordLevel As Byte
byProxyType As Byte
dwSurplusLockTime As Long
byCharEncodeType As Byte
bySupportDev5 As Byte
byLoginMode As Byte
byRes2(253) As Byte
End Type
'设备登陆
Public Declare Function NET_DVR_Login_V40 Lib "HCNETSDK.dll" ( _
ByRef pLoginInfo As NET_DVR_USER_LOGIN_INFO, _
ByRef lpDeviceInfo As NET_DVR_DEVICEINFO_V40) As Long
下面是vb调用的代码
Dim pLoginInfo As NET_DVR_USER_LOGIN_INFO
Dim lpDeviceInfo As NET_DVR_DEVICEINFO_V40
'是否异步登录:0- 否,1- 是
pLoginInfo.bUseAsynLogin = 0
'ISAPI协议登录时是否启用HTTPS(byLoginMode为1时有效):0- 不启用,1- 启用,2- 自适应(设备支持协议类型未知时使用,一般不建议)
pLoginInfo.byHttps = 0
'登录模式(不同模式具体含义详见“Remarks”说明):0- SDK私有协议,1- ISAPI协议,2- 自适应(设备支持协议类型未知时使用,一般不建议)
pLoginInfo.byLoginMode = 0
'代理服务器类型:0- 不使用代理,1- 使用标准代理,2- 使用EHome代理
pLoginInfo.byProxyType = 0
pLoginInfo.byRes3(0) = 0
'是否启用能力集透传:0- 不启用透传,默认;1- 启用透传
pLoginInfo.byUseTransport = 0
'是否使用UTC时间:0- 不进行转换,默认;1- 输入输出UTC时间,SDK进行与设备时区的转换;2- 输入输出平台本地时间,SDK进行与设备时区的转换
pLoginInfo.byUseUTCTime = 0
'登录状态回调函数,bUseAsynLogin 为1时有效
Dim cbLoginResult As Long
pLoginInfo.cbLoginResult = cbLoginResult
'代理服务器序号,添加代理服务器信息时相对应的服务器数组下表值
pLoginInfo.iProxyID = 0
pLoginInfo.sDeviceAddress = Text1.Text
pLoginInfo.wPort = Text2.Text
pLoginInfo.sUserName = Text3.Text
pLoginInfo.sPassword = Text4.Text
'用户数据
Dim pUser As Long
pLoginInfo.pUser = pUser
Dim iUserId As Long
'登陆设备
iUserId = NET_DVR_Login_V40(pLoginInfo, lpDeviceInfo)
If iUserId = -1 Then
ErrorCode = NET_DVR_GetLastError()
MsgBox "登陆失败(" & ErrorCode & ")!", vbOKOnly + vbExclamation, "提醒"
Call NET_DVR_Cleanup
Exit Sub
End If
...全文
相关推荐
API是什么,怎么调用API,API调用详解
API是什么,怎么调用API,API调用详解。本文档详细解释了API是什么,以及如何调用API。讲解API的数据格式以及各个返回码的含义。
[API]新浪股票api调用
简单的新浪股票API调用
java调用api的方法
用java调用api的方法,在网上找到的进行学习之后,上传到此作为备份
C#中调用API,介绍API的使用
C#中调用API C#中调用API C#中调用API C#中调用API
C#调用api接口
API函数是构筑Windows应用程序的基石,是Windows编程的必备利器。每一种Windows应用程序开发工具都提供了间接或直接调用了Windows API函数的方法


VB基础类
