java呼叫DLL,呼叫北洋印表機列印二維碼標籤

TonySQ發表於2020-03-14

private static final String PRINTER_DLL = "bpladll.dll"; 
ublic void print(List<Asset> list) {
 CopyOfDemo demo = new CopyOfDemo();
 System.loadLibrary("bpladll");
 System.loadLibrary("LabelUSBPrintDll");
System.loadLibrary("ByUSBInt");
 JNative n = null; try { 

n = demo.getJNativeByFunction("BPLA_OpenUsb");
 n.setRetVal(Type.INT); n.setParameter(0, Type.INT, "1");
 n.invoke(); System.out.println(n.getRetVal() + ":BPLA_OpenUsb");
 for(int i=0;i<list.size();i++) {
String ms="";
n = demo.getJNativeByFunction("BPLA_Set");
 n.setRetVal(Type.INT);
 n.setParameter(0, Type.INT, "2");
 n.setParameter(1, Type.INT, "0");
 n.setParameter(2, Type.INT, "0");
 n.invoke();
 System.out.println(n.getRetVal() + ":BPLA_Set"); 
n = demo.getJNativeByFunction("BPLA_SetEnd");
n.setRetVal(Type.INT); n.setParameter(0, Type.INT, "112");
n.invoke(); System.out.println(n.getRetVal() + ":BPLA_SetEnd");
 n = demo.getJNativeByFunction("BPLA_StartArea");
 n.setRetVal(Type.INT); n.setParameter(0, Type.INT, "0");
 n.setParameter(1, Type.INT, "700");
n.setParameter(2, Type.INT, "10");
 n.setParameter(3, Type.INT, "10");
 n.setParameter(4, Type.INT, "30");
 n.setParameter(5, Type.INT, "0");
 n.setParameter(6, Type.INT, "0");
 n.setParameter(7, Type.INT, "0");
 n.invoke(); 
n = demo.getJNativeByFunction("BPLA_PrintTruetype");
 n.setRetVal(Type.INT); n.setParameter(0, Type.STRING, "資產編碼:"+list.get(i).getAssetNo());
 n.setParameter(1, Type.INT, "4");
 n.setParameter(2, Type.INT, "240");
 n.setParameter(3, Type.STRING, "Arial");
 n.setParameter(4, Type.INT, "20");
 n.setParameter(5, Type.INT, "0"); n.invoke(); 

System.out.println(ms);
 n = demo.getJNativeByFunction("BPLA_PrintQR");
 n.setRetVal(Type.INT);
 n.setParameter(0, Type.STRING, "QA,"+list.get(i).getAssetNo());
 n.setParameter(1, Type.INT, "330");
n.setParameter(2, Type.INT, "60");
 n.setParameter(3, Type.INT, "3");
 n.setParameter(4, Type.INT, "2");//使用1 掃描槍能掃出結果 使用2手機能掃出結果 n.setParameter(5, Type.INT, "0");
 n.setParameter(6, Type.INT, "50");
 n.invoke(); 
n = demo.getJNativeByFunction("BPLA_Print");
 n.setRetVal(Type.INT);
 n.setParameter(0, Type.INT, "1");
 n.setParameter(1, Type.INT, "1");
 n.setParameter(2, Type.INT, "1"); n.invoke();
 // System.out.println(n.getRetVal() + ":BPLA_Print"); } n = demo.getJNativeByFunction("BPLA_CloseUsb");
 n.setRetVal(Type.INT);
 n.invoke();
 System.out.println(n.getRetVal() + ":BPLA_CloseUsb");
 } catch (Exception e) {
 e.printStackTrace();
 }
 finally { if (n != null) {
 try {
 n.dispose();
 } catch (NativeException e) {
 e.printStackTrace();
 }
catch (IllegalAccessException e) {
 e.printStackTrace();
 } } } } 

// 通過方法名取得JNative物件
 public JNative getJNativeByFunction(String functionName) throws NativeException { return new JNative(PRINTER_DLL, functionName);
 } 


相關文章