簡單dll:https://www.cnblogs.com/ttqi/p/12053715.html
dll調用類:
public class pdtEdsLoadDispatchDeviceInfo { public interface CLibbrary extends Library{ String esdapipatch=AgentGlobals.getXMLProperty("esdapipatch", "C:\\Program Files (x86)\\eastcom\\Eastcom DS 2000(Only SDK)\\sdk\\app\\api\\bin\\EdsApi"); CLibbrary INSTANCE = (CLibbrary)Native.loadLibrary(esdapipatch, CLibbrary.class); int EdsSystemInit(EdsSystemParam_t.ByReference pSysParam); } }
結構體:
public class EdsSystemParam_t extends Structure{ public char[] userName=new char[17]; public char[] userPassword=new char[17]; public int isLinkOam = 2; public WString pResourceConfigFilePath; public EdsMsgCallBackProcF lpfnMmModuleProc; public String bInitGisSnmp = "ETFALSE"; public static class ByReference extends EdsSystemParam_t implements Structure.ByReference{} public static class ByValue extends EdsSystemParam_t implements Structure.ByValue{} @Override protected List getFieldOrder() { // TODO Auto-generated method stub return Arrays.asList(new String[]{"userName","userPassword","isLinkOam","pResourceConfigFilePath", "lpfnSmModuleProc","bInitGisSnmp"}); } }
回調函數類:
public class EdsMsgCallBackProcF_class{ public interface EdsMsgCallBackProcF extends StdCallCallback{ public void MessageHandle(int nCode,String wParam,String lParam); } public static class MessageHandle_Realize implements EdsMsgCallBackProcF{ public void MessageHandle(int nCode,String wParam,String lParam) {
//回調后內部處理流程 Log.info("nCode:"+nCode+";wParam:"+wParam+";lParam:"+lParam); if(nCode==0x1550){ Constants.EdsMsgCallBackProcF=true; Constants.edsRadior.start(); }else if(nCode==0x1551 || nCode==0x1554){ Constants.EdsMsgCallBackProcF=false; Constants.edsRadior.stoptimer(); //new EdsRadioUserBaseInfoAction_timer().stop(); //new EdsSystemInitThread().start(); } } } }
引用:
String user=AgentGlobals.getXMLProperty("pdtuser", "admin"); String password=AgentGlobals.getXMLProperty("pdtpassword", "123456"); EdsSystemParam_t.ByReference param=new EdsSystemParam_t.ByReference(); user.getChars(0, user.length(), param.userName, 0); password.getChars(0, password.length(), param.userPassword, 0); param.isLinkOam=2; //回調函數 EdsMsgCallBackProcF procf=new MessageHandle_Realize(); param.lpfnMmModuleProc=procf; param.pResourceConfigFilePath=new WString(AgentGlobals.getXMLProperty("esdissipatch","C:\\Program Files (x86)\\eastcom\\config\\esdissi.xml")); //調用dll int msg=CLibbrary.INSTANCE.EdsSystemInit(param);