`
EJB_wawa
  • 浏览: 109062 次
  • 性别: 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使用方法总结

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

    例如,如果你有一个名为`myFunction`的本地方法,可以使用`JNative.callVoidMethod`或相应的函数进行调用。 4. **错误处理**:由于涉及到本地代码的调用,错误处理非常重要。JNative可能会抛出异常,需要捕获并适当...

    jnative简单的使用

    **JNative:Java与本地代码交互的桥梁** 在Java编程中,有时我们需要调用本地操作系统提供的功能,或者利用已有的C/C++库,...不过,使用JNative时应谨慎评估其可能带来的风险,并确保对本地代码有充分的理解和控制。

    JNative api说明文档

    JNative在此基础上进行了封装,简化了开发者直接使用JNI时的复杂性,例如处理函数指针、数据类型转换等。在JNative中,开发者可以通过Java方法调用本地函数,就像调用Java方法一样方便。 **三、JNative API核心概念...

    JNative使用示例

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

    JNative.jar以及JNative源码

    然而,JNative库的出现,为Java程序员提供了一个方便的解决方案,使得Java能够无缝地与C/C++编写的DLL进行交互。本文将详细介绍JNative.jar及其相关组件,以及如何利用JNative源码来实现跨平台的本地方法调用。 ...

    JNative综合学习资料

    使用JNative前,需要先进行环境配置,包括下载JNative库,将其添加到项目的类路径中,以及配置相应的编译和链接选项。这个过程可能涉及设置环境变量,配置Makefile,以及正确地编译和链接本地代码。 四、JNative的...

    jnative

    这些函数通常在C++代码中使用`JNIEXPORT`和`JNICALL`宏进行修饰,并通过`JNI_OnLoad`函数加载到JVM。 5. **类型映射**:JNI需要处理Java和C++之间的类型转换。例如,Java的`int`对应C++的`jint`,`String`对应`...

    JNative v1.3 docs

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

    Jnative资源包源码

    《Jnative资源包源码详解》 Jnative是一款强大的Java本地接口库,它允许Java程序直接调用C和C++的动态链接库(DLL或.so文件),极大地...通过对Jnative源码的学习,开发者可以深入掌握JNI原理,提升自己的编程能力。

    JNative用java调用动态库VC++

    总的来说,JNative提供了一种方便的方式来集成Java应用程序与C/C++库,减少了使用JNI进行本地方法调用时的复杂性。通过使用JNative,开发者可以专注于业务逻辑,而不是底层的库调用细节。同时,JNative的优秀特性,...

    JNative完全自学手册

    JNative完全自学手册 本手册旨在帮助读者完全深度理解掌握JNative核心技术,通过实例众多的讲解,让读者快速掌握JNative技术。 JNative是Java Native Interface的缩写,允许Java程序调用本地函数库,实现Java程序...

    jnative.rar

    为了实现这一目标,Java提供了一个名为JNative的库,它允许Java代码与C/C++编写的本地代码进行交互,从而扩展了Java的功能。本文将深入探讨JNative的工作原理、使用方法以及其在实际应用中的价值。 首先,JNative是...

    jnative调用动态库

    在Java中,为了与操作系统底层功能进行交互,比如调用C/C++编译的库,我们可以使用Java Native Interface (JNI) 或者第三方库如JNative。 描述中提到的“.so”文件是Unix-like系统下的共享对象文件,相当于Windows...

    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.jar 包

    JNative.jar包就是这样一个关键组件,它提供了一种方便的方式来在Java程序中使用本地代码。 首先,让我们深入理解JNative.jar的核心概念。JNative.jar是一个包含Java本地接口(JNI)函数的库,使得Java开发者能够...

    org.xvolks.jnative 源码

    《深入解析org.xvolks.jnative源码》 在Java世界中,为了实现与本地代码的交互,开发者经常需要借助JNI(Java Native Interface)技术。然而,JNI的使用门槛相对较高,涉及到C/C++编程,这给许多Java开发者带来了...

    Jnative 1.4 API

    JNI是Java平台的一部分,允许Java代码和其他语言写的代码进行交互,使得开发者能够利用Java平台的强大功能同时利用C、C++或其他本地语言编写的高效代码。 **一、JNative API文档** JNative API文档是理解和使用该...

Global site tag (gtag.js) - Google Analytics