`
EJB_wawa
  • 浏览: 106925 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用JNative对条码打印机进行打印(转别人)

阅读更多
使用JNative对条码打印机进行打印


因项目需要,对Godex  EZ2300条码机进行调用打印, 驱动为Ez2000.dll, 用JNI可以实现调用,但比较麻烦, 需

要用到VC6进行DLL封装,改用JNative组件进行调用, 步骤如下:

1. 下载JNative-1.3.2.zip组件库

2. 解压出来后有JNative.jar  /  JNativeCpp.dll  /  libJNativeCpp.so三个文件,JNative.jar置于%JAVA_HOME%/jre/lib/ext目录下, JNativeCpp.dll置于%SYSTEM%/WINDOWS/SYSTEM32目录下

3.将Ez2000.dll置于%SYSTEM%/WINDOWS/SYSTEM32目录以及%JAVA_HOME%/jdk/bin目录下

4.

具体Java代码如下:

package com.athens.test;

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

public class Demo {
   
    private static final String PRINTER_DLL = "Ez2000.dll";
   
    public static void main(String [] args) {
        Demo demo = new Demo();
        System.loadLibrary("Ez2000");
        JNative n = null;
        try {
            n = demo.getJNativeByFunction("isready");
            n.setRetVal(Type.INT);
//          n.setParameter(1, Type.VOID, "");   
            n.invoke();
            Integer isready = Integer.parseInt(n.getRetVal());
            if(isready == 1){
               
                System.out.println("条码机可以开始接收资料!Starting...");
                System.out.println("Starting...");
                // 打开端口
                n = demo.getJNativeByFunction("openport");
                n.setParameter(0, Type.STRING, "0");
                n.invoke();
               
                // 设定参数
                n = demo.getJNativeByFunction("setup");
                n.setRetVal(Type.INT);
                n.setParameter(0, Type.INT, "30");
                n.setParameter(0, Type.INT, "7");
                n.setParameter(0, Type.INT, "2");
                n.setParameter(0, Type.INT, "1");
                n.setParameter(0, Type.INT, "0");
                n.setParameter(0, Type.INT, "0");
                n.invoke();
               
                // 发出指令
                n = demo.getJNativeByFunction("sendcommand");
                n.setRetVal(Type.INT);
                n.setParameter(0, Type.STRING, "W70");
                n.invoke();
               
                n.setRetVal(Type.INT);
                n.setParameter(0, Type.STRING, "^P1");
                n.invoke();
               
                n.setRetVal(Type.INT);
                n.setParameter(0, Type.STRING, "^L");
                n.invoke();
               
                n.setRetVal(Type.INT);
                n.setParameter(0, Type.STRING, "AC,20,60,1,1,1,0,TEST");
                n.invoke();
               
                // 发送条形码
                n = demo.getJNativeByFunction("ecTextOut");
                n.setParameter(0, Type.INT, "20");
                n.setParameter(1, Type.INT, "10");
                n.setParameter(2, Type.INT, "34");
                n.setParameter(3, Type.STRING, "标楷体");
                n.setParameter(4, Type.STRING, "Athens Testing Successlly!!!");
                n.invoke();
               
                // 发出指令
                n = demo.getJNativeByFunction("sendcommand");
                n.setRetVal(Type.INT);
                n.setParameter(0, Type.STRING, "E");
                n.invoke();
               
                // 关闭端口
                n = demo.getJNativeByFunction("closeport");
                n.invoke();
                System.out.println("Ending...");
            }else{
                System.out.println("条码机无法接收资料!");
            }
        }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);
    }
}
分享到:
评论
1 楼 yanzhoupuzhang 2011-02-18  
要是那个发送指令的部分能详细点就好了啊!!!!

相关推荐

    jnative使用方法总结

    jnative使用方法总结jnative使用方法总结jnative使用方法总结

    jnative简单的使用

    jnative jnative jnative jnative

    JNative使用示例

    TestJNative_Eclipse.rar 为MyEclipse工程 JNativeTest_VC.rar为VC ...主要写了一些JNative调用DLL的例子,包含了JNative回调函数的用法与指针的用法,以供参考,希望对使用JNative的开发人员有帮助 有问题大家一起讨论

    JNative v1.3 docs

    jnative包用于调用dll动态库,目前(2011-12-20)最新版本为1.4RC2,官方正式版本文档为1.3,详见官方地址: http://jnative.free.fr/docs/ 这是最新的帮助文档HTML离线包,希望对大家有帮助 Packages org.xvolks....

    jnative 1.4

    jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4

    Jnative资源包源码

    Jnative资源包源码Jnative资源包源码Jnative资源包源码Jnative资源包源码Jnative资源包源码Jnative资源包源码

    JNative.jar以及JNative源码

    java调用dll时所需的JNative.jar 以及JNativeCpp.dll(win),libJNativeCpp.so(linux) 和JNative的源码

    JNative完全自学手册

    手把手帮助你完全深度理解掌握Jnative 核心技术,实例众多

    jnative

    Java调用c++的dll文件

    Jnative API CHM

    Jnative API CHM Jnative API CHM Jnative API CHM Jnative API CHM

    Jnative-1.3.2及心得

    由于项目要求,需要用Java调用windows的dll文件,查了一下,如果用JNI的话是比较麻烦的,在sourceforge.net上搜索了一下“Java dll”,首先出现的是Jnative,于是决定用它,后来也试了些别的,但还是JNative好使,...

    JNative.rar

    JNative.rar JNative.rar JNative.rar JNative.rarJNative.rar

    jbarcode+Jnative读取本地第三方的dll文件+得力+斑马打印机使用javaAPI打印 demo

    jbarcode+Jnative读取本地第三方的dll文件+得力+斑马打印机使用javaAPI打印 项目真正用到,兼容各种打印机的打印

    JNative1.3.2

    JNative1.3.2,jNative-1.3.2src

    jnative下载

    JNative.jar , JNativeCpp.dll ,libJNativeCpp.so,java通过JNative调用动态dll所需的文件jar

    jnative的jar包

    亲测可用的jnative工具包,主要用来进行clob以及blob大字段处理时的应用以及其他的应用

    在Java程序中使用JNative调用dll文件

    NULL 博文链接:https://unifocus.iteye.com/blog/678463

    JNative api说明文档

    JNative api说明文档,也没什么好说的,自己看吧

Global site tag (gtag.js) - Google Analytics