博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 操作打标机的Dll 文件
阅读量:7141 次
发布时间:2019-06-28

本文共 2425 字,大约阅读时间需要 8 分钟。

hot3.png

今天接到一个新任务。写个打印商标的小程序,不过幸好有dLL文件提供。只是好好研究一下java调用dLL文件。根据恒佑科技的Demo改的 。下面是我一个小demo 有错误的还请告知,一起进步。

 

 

package com.lgb.Test;

import org.xvolks.jnative.JNative;

import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;

public class TestD {

 
 
 private static final String PRINTER_DLL = "WINPSK.dll";

//先将DLL文件拷到C盘下的 System32的目录下

 //静态  加载dll 文件
 static{

//这里有三种方法 这里其中一种

  System.loadLibrary("WINPSK");
  
 }
 
 public static void main(String [] args){
  TestD tdll = new TestD();
  //String path =  WINPSK.class.getResource("/").getPath();
  
  
  JNative jnative = null;
    
  try {
   jnative = tdll.getJNativeByFunction("OpenPort");  //初始化打印机
   jnative.setRetVal(Type.INT);   //设置返回值类型
   jnative.setParameter(0,Type.STRING,"POSTEK G-3106"); //参数的 序号 类型 参数值
   jnative.invoke();
   
     Integer isready = Integer.parseInt(jnative.getRetVal()); //判断打印机是否准备就绪
    
    
            System.out.println("isready=" + isready);
           
           
            if(isready==1){
            
            
             //
             System.out.println("条码机可以开始接收资料!Starting...");
            
             jnative = tdll.getJNativeByFunction("PTK_DrawBar2D_QR");
             jnative.setRetVal(Type.INT);
            
             jnative.setParameter(0, Type.INT,"0"); //X 座标
             jnative.setParameter(1, Type.INT,"0"); //Y 座标。备注:1 dot = 0.125 mm。
             jnative.setParameter(2, Type.INT,"27"); //最大列印宽度,单位 dots。
            
             jnative.setParameter(3, Type.INT,"27");  //最大列印高度,单位 dots
             jnative.setParameter(4, Type.INT,"0");  //设置旋转方向, 范围:0~3。
             jnative.setParameter(5, Type.INT,"1");  //设置放大倍数,以点(dots)为单位,范围值:(1 - 9)。
             jnative.setParameter(6, Type.INT,"4");  //QR码编码模式选择,范围值(0 - 4)。
             jnative.setParameter(7, Type.INT,"1");  //QR码纠错等级选择,范围值(0 - 3)。
             jnative.setParameter(8, Type.INT,"8");  //QR码纠错等级选择,范围值(0 - 3)。
             jnative.setParameter(9, Type.STRING,"00000000000000000000000 0000 id1234568796");  //资料字串。
            
             jnative.invoke();
            }
            else
             {
              System.out.println("打印机无法接受资料");
             }
            
   
   
  } catch (NativeException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IllegalAccessException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }finally{
            if (jnative != null){
                try {
                 // 关闭
                 jnative = tdll.getJNativeByFunction("ClosePort");
                 // jNative.setParameter(0, Type.INT, "true");
                 jnative.invoke();
                 jnative.dispose();
                    System.out.println("end...打印完成!");
                } catch (NativeException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
  }
  
  
  
  
  
  
  
  
 }
  // 通过方法名取得JNative对象
    public JNative getJNativeByFunction(String functionName) throws NativeException{
        return new JNative(PRINTER_DLL, functionName);
    }

}

 

转载于:https://my.oschina.net/wangwu91/blog/119099

你可能感兴趣的文章
《万万没想到》读书笔记及读后感作文3500字
查看>>
URLdecode()和URLencode()的作用及区别
查看>>
夹角余弦or相关系数?(nlp-word2vec之重大发现)
查看>>
一位6年老Android面经总结
查看>>
【CentOS 7笔记28】,yum的用法#
查看>>
【更新】全新的数据填报,更强的BI分析,Wyn Enterprise V3.0 Update 2 发布
查看>>
死灰复燃的Security
查看>>
车联网上云最佳实践(一)
查看>>
网格交易系统策略
查看>>
WinSCP之Windows与Windows之间传输文件
查看>>
0021-使用JDBC向Kudu表插入中文字符-cast的秘密
查看>>
开发十年,阿里工作6年,我是如何成长为一名优秀的P7架构师
查看>>
Android-工作在后台-Service
查看>>
Docker使用命令和技巧
查看>>
以太坊私有链 小试牛刀
查看>>
JVM启动参数大全
查看>>
bin/start-hbase.sh : No such file or directory,...
查看>>
python文件读取生成器
查看>>
从Ubuntu 16.10升级到Ubuntu 17.04系统的方法
查看>>
install wubi
查看>>