使用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);
}
}
分享到:
相关推荐
以下是使用JNative调用条码打印机驱动的基本步骤: 1. 获取JNative库:首先,你需要下载JNative的最新版本,例如JNative-1.3.2.zip,并解压缩。解压后会得到三个文件:JNative.jar、JNativeCpp.dll和libJNativeCpp....
例如,如果你有一个名为`myFunction`的本地方法,可以使用`JNative.callVoidMethod`或相应的函数进行调用。 4. **错误处理**:由于涉及到本地代码的调用,错误处理非常重要。JNative可能会抛出异常,需要捕获并适当...
jnative使用方法总结jnative使用方法总结jnative使用方法总结
**JNative:Java与本地代码交互的桥梁** 在Java编程中,有时我们需要调用本地操作系统提供的功能,或者利用已有的C/C++库,...不过,使用JNative时应谨慎评估其可能带来的风险,并确保对本地代码有充分的理解和控制。
TestJNative_Eclipse.rar 为MyEclipse工程 JNativeTest_VC.rar为VC ...主要写了一些JNative调用DLL的例子,包含了JNative回调函数的用法与指针的用法,以供参考,希望对使用JNative的开发人员有帮助 有问题大家一起讨论
JNative在此基础上进行了封装,简化了开发者直接使用JNI时的复杂性,例如处理函数指针、数据类型转换等。在JNative中,开发者可以通过Java方法调用本地函数,就像调用Java方法一样方便。 **三、JNative API核心概念...
然而,JNative库的出现,为Java程序员提供了一个方便的解决方案,使得Java能够无缝地与C/C++编写的DLL进行交互。本文将详细介绍JNative.jar及其相关组件,以及如何利用JNative源码来实现跨平台的本地方法调用。 ...
《Jnative资源包源码详解》 Jnative是一款强大的Java本地接口库,它允许Java程序直接调用C和C++的动态链接库(DLL或.so文件),极大地...通过对Jnative源码的学习,开发者可以深入掌握JNI原理,提升自己的编程能力。
jnative包用于调用dll动态库,目前(2011-12-20)最新版本为1.4RC2,官方正式版本文档为1.3,详见官方地址: http://jnative.free.fr/docs/ 这是最新的帮助文档HTML离线包,希望对大家有帮助 Packages org.xvolks....
使用JNative前,需要先进行环境配置,包括下载JNative库,将其添加到项目的类路径中,以及配置相应的编译和链接选项。这个过程可能涉及设置环境变量,配置Makefile,以及正确地编译和链接本地代码。 四、JNative的...
这些函数通常在C++代码中使用`JNIEXPORT`和`JNICALL`宏进行修饰,并通过`JNI_OnLoad`函数加载到JVM。 5. **类型映射**:JNI需要处理Java和C++之间的类型转换。例如,Java的`int`对应C++的`jint`,`String`对应`...
总的来说,JNative提供了一种方便的方式来集成Java应用程序与C/C++库,减少了使用JNI进行本地方法调用时的复杂性。通过使用JNative,开发者可以专注于业务逻辑,而不是底层的库调用细节。同时,JNative的优秀特性,...
JNative完全自学手册 本手册旨在帮助读者完全深度理解掌握JNative核心技术,通过实例众多的讲解,让读者快速掌握JNative技术。 JNative是Java Native Interface的缩写,允许Java程序调用本地函数库,实现Java程序...
在Java中,为了与操作系统底层功能进行交互,比如调用C/C++编译的库,我们可以使用Java Native Interface (JNI) 或者第三方库如JNative。 描述中提到的“.so”文件是Unix-like系统下的共享对象文件,相当于Windows...
JNative.jar包就是这样一个关键组件,它提供了一种方便的方式来在Java程序中使用本地代码。 首先,让我们深入理解JNative.jar的核心概念。JNative.jar是一个包含Java本地接口(JNI)函数的库,使得Java开发者能够...
jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4
为了实现这一目标,Java提供了一个名为JNative的库,它允许Java代码与C/C++编写的本地代码进行交互,从而扩展了Java的功能。本文将深入探讨JNative的工作原理、使用方法以及其在实际应用中的价值。 首先,JNative是...
总的来说,JNative是Java开发者与本地系统进行深度交互的有力工具,它通过封装JNI,降低了使用本地代码的复杂性,提高了开发效率。然而,需要注意的是,过度使用本地代码可能会增加软件的维护难度和潜在的安全风险,...
- 安全性:由于本地代码可以直接访问系统资源,因此在使用JNative.jar时,务必注意安全问题,避免引发缓冲区溢出、权限滥用等风险。 - 性能优化:虽然JNI可以提高性能,但不恰当的使用可能会增加内存消耗和程序复杂...