一.描述
1.C的API方法一
2.C的API方法二
3.主要java代码
(1)XmNetJNA类
public interface XmNetJNA extends Library {
XmNetJNA INSTANCE_NET = (XmNetJNA) Native.loadLibrary("XNetSDK", XmNetJNA.class);
int XSDK_Init(XmInitParamStructure xminitParamStructure);
void XSDK_UnInit();
XmResultMsgStructure XSDK_DevLogin(XmLoginParamStructure xmLoginParamStructure, int nTimeout, int nSeq);
}
(2)MessageCallBack 类
public interface MessageCallBack extends StdCallLibrary.StdCallCallback {
void invoke(int nMsgId, int nParam1);
}
(3)XmMsgCallBackImpl 类
public class XmMsgCallBackImpl implements MessageCallBack {
@Override
public void invoke(int nMsgId, int nParam1) {
System.out.println("invoke ...");
}
}
(4)测试类
public class AppTest
{
@Test
public void testXSDK(){
XmNetJNA xmNetJNA = XmNetJNA.INSTANCE_NET;
System.out.println("init :" + xmNetJNA.toString());
XmInitParamStructure xmInitParamStructure = new XmInitParamStructure();
xmInitParamStructure.setnLogLevel(3);
xmInitParamStructure.setpMsgCallBack(new XmMsgCallBackImpl());
xmInitParamStructure.setpUserDate(null);
int init = xmNetJNA.XSDK_Init(xmInitParamStructure);
XmLoginParamStructure xmLoginParamStructure = new XmLoginParamStructure();
xmLoginParamStructure.setsDevId("192.168.1.50");
xmLoginParamStructure.setnDevPort(34567);
xmLoginParamStructure.setsUserName("admin");
xmLoginParamStructure.setsPassword("");
XmResultMsgStructure login = xmNetJNA.XSDK_DevLogin(xmLoginParamStructure, 3000, 0);
System.out.println("end...");
}
}
二.报错及问题
1.测试方法testXSDK里,调用XSDK_DevLogin方法出错,报错如下:
2.MessageCallBack 回调类是否编写错误,该怎么写
3.XmNetJNA类的XSDK_DevLogin方法的参数和返回值该怎么正确编写
望大牛们指导一下,谢谢!
######################以下为补充#####################
#define XSDK_HANDLE int
typedef int (CALLBACK *PXSDK_MessageCallBack) (XSDK_HANDLE hDevice, int nMsgId, int nParam1, int nParam2, int nParam3, const char *szString, void *pObject, int nSeq, void *pUserData);
////////////////////////////About XSDK////////////////////////////
typedef struct SXSDKInitParam
{
int nLogLevel;
PXSDK_MessageCallBack pMsgCallBack;
void *pUserData;
}SXSDKInitParam;
////////Login////////
typedef enum EDEV_CNN_TYPE
{
EDEV_CNN_TYPE_IP_DNS = 0,
EDEV_CNN_TYPE_DAS = 1,
}EDEV_NET_TYPE;
typedef struct SXSDKLoginParam
{
char sDevId[128]; // ip/dns/sn
int nDevPort;
char sUserName[64];
char sPassword[64];
EDEV_NET_TYPE nCnnType;
}SXSDKLoginParam;