java怎么连接Gprinter条形码打印机
展开全部
条形码打印机型号不同,不过思路都是一样的,以下可参考,另外需要你自己参考你的条形码打印机的接口说明。
因项目需要,对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);
}
}
因项目需要,对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);
}
}
更多追问追答
追问
Ez2000.dll
这个文件是从那里得到的,我在驱动盘里也没发现类似的
追答
Ez2000.dll是Godex EZ2300这个型号的,佳博的条形码驱动文件不叫Ez2000.dll,这里你也没有说明具体是佳博的哪个型号,你自己在驱动盘里找一下,实在不行去官网看一看附录文件说明。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |