package sample.comomDll; import com.sun.jna.*; import com.sun.jna.ptr.ByteByReference; import com.sun.jna.win32.StdCallLibrary.StdCallCallback; //import com.sun.jna. import com.sun.jna.platform.win32.WinNT.HANDLE; import com.sun.jna.ptr.IntByReference; import java.io.File; import java.io.UnsupportedEncodingException; import java.util.Arrays; import java.util.List; public class nativeDll { public interface CLibrary extends Library { CLibrary INSTANCE = (CLibrary) Native.loadLibrary("CspProductionTool", CLibrary.class); int CPTInit(String strIp); int CPTNLInit(String strIp); HANDLE CPTCommConnect(String strIp, Callback CallFun, IntByReference dwUser); int CPTAuth(HANDLE handle,Callback CallFun,String sUserName,String sPassword); int CMDPreSet(HANDLE handle, String strSendData, Callback pCallBack, int dwUser); int CMDHardTest(HANDLE handle, Byte TestCode, byte[] pVoidStructArgument, Callback pCallBack, int dwUser); public interface JCallback extends StdCallCallback { public void MessageHandle(HANDLE handle, int iResult, int iExtend, String strMessage, int dwUser); } public static class FuncComm_search_dev implements JCallback { public void MessageHandle(HANDLE handle, int iResult, int iExtend, String strMessage, int dwUser) { // TODO Auto-generated method stub System.out.println("连接回调1!------>:"); System.out.println("连接回调!------>:"+iResult+","+dwUser); int r= CLibrary.INSTANCE.CPTAuth(handle,nativeDll.comm_auth_dev_one,onuUser,onuPwd); System.out.println("返回 "+r); } } public static class Funccomm_auth_dev_one implements JCallback { public void MessageHandle(HANDLE handle, int iResult, int iExtend, String strMessage, int dwUser) { // TODO Auto-generated method stub System.out.println("登录回调!------>:"+iResult+","+dwUser); System.out.println(strMessage); // int r= CLibrary.INSTANCE.CMDPreSet(handle,"Enable=0",nativeDll.LedTestCallBack,0); //led ByteByReference cType = new ByteByReference(); //1灭 2亮 cType.setValue((byte) 1); //int r= CLibrary.INSTANCE.CMDHardTest(handle,(byte)4, cType,nativeDll.LedTestCallBack,0); //13 byte [] ba =new byte[6]; //ba[3]=20 则int为 0x00001400 // 20 是 水平, 21是垂直 /* //垂直测试 ba[0] = 1; ba[2]=21; */ ba[0] = 0; ba[2] = 1; int r= CLibrary.INSTANCE.CMDHardTest(handle,(byte)13, ba,nativeDll.LedTestCallBack,0); } } public static class FuncLedTestCallBack implements JCallback { public void MessageHandle(HANDLE handle, int iResult, int iExtend, String strMessage, int dwUser) { // TODO Auto-generated method stub System.out.println("亮!------>:"+iResult+","+dwUser); System.out.println(strMessage); } } } public static nativeDll.CLibrary.JCallback comm_search_dev =null; public static nativeDll.CLibrary.JCallback comm_auth_dev_one =null; public static nativeDll.CLibrary.JCallback LedTestCallBack =null; public static String bingIp = "192.168.5.100";//"192.168.5.100"; public static String onuIp = "192.168.5.2";//"192.168.5.1"; public static String onuUser = "admin"; public static String onuPwd = "admin"; /* public static String bingIp = "192.168.1.100";//"192.168.5.100"; public static String onuIp = "192.168.1.1";//"192.168.5.1"; public static String onuUser = "a";//"admin"; public static String onuPwd = "a";//"admin"; */ class MyThread1 extends Thread { public void run() { for (int i = 0; i < 30; i++) { System.out.println("线程1第" + i + "次执行!"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } } public static void main(String[] args) { CLibrary.INSTANCE.CPTInit(bingIp); //CLibrary.INSTANCE.CPTNLInit(bingIp); System.setProperty("jna.encoding","GBK"); HANDLE handle; // int iRet =0 ; IntByReference iRet = new IntByReference(); iRet.setValue(0); nativeDll.comm_search_dev = new nativeDll.CLibrary.FuncComm_search_dev(); nativeDll.comm_auth_dev_one = new nativeDll.CLibrary.Funccomm_auth_dev_one(); nativeDll.LedTestCallBack = new nativeDll.CLibrary.FuncLedTestCallBack(); //回头要换成 handle = CLibrary.INSTANCE.CPTCommConnect(onuIp, comm_search_dev, iRet); System.out.println("Connect handle = "+ handle.toString()); System.out.println("iRet = "+ iRet.getValue()); // Pointer p =handle.getPointer(); nativeDll a = new nativeDll(); Thread t1 = a.new MyThread1(); t1.start(); /* if((handle == 10) { System.out.println("CPTCommConnect handle = 10!"); return ; } if ((int)handle <= 1000) { printf("CPTCommConnect handle <=!"); return FALSE; } */ /* int time =0; while (time<500){ try { Thread.sleep(1000); System.out.println(time); } catch (InterruptedException e) { e.printStackTrace(); } time++; } */ //String str = System.getProperty("java.class.path"); //System.out.println(str); } }