`

java使用jnative控制北洋牌标签打印机打印二维码

阅读更多

打印机型号BTP-2100E,可打印二维码标签,效果如附件,将打印机的驱动bpladll.dll、ByUSBInt.dll和jnative的dll放到system32下面,项目导入jnative的jar包,使用USB接口
import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;

public class CopyOfDemo {

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

	public static void main(String[] args) {
		Demo demo = new Demo();
		System.loadLibrary("bpladll");
		JNative n = null;
		try {
			
			// 打开端口
			n = demo.getJNativeByFunction("BPLA_OpenUsb");
			n.setRetVal(Type.INT);
			n.setParameter(0, Type.INT, "1");
			n.invoke();
			System.out.println(n.getRetVal() + ":BPLA_OpenUsb");
			
			n = demo.getJNativeByFunction("BPLA_SetEnd");
			n.setRetVal(Type.INT);
			n.setParameter(0, Type.INT, "70");
			n.invoke();
			System.out.println(n.getRetVal() + ":BPLA_SetEnd");
			
			n = demo.getJNativeByFunction("BPLA_Reset");
			n.setRetVal(Type.INT);
			n.invoke();
			System.out.println(n.getRetVal() + ":BPLA_Reset");
			
			n = demo.getJNativeByFunction("BPLA_StartArea");
			n.setRetVal(Type.INT);
			n.setParameter(0, Type.INT, "0");
			n.setParameter(1, Type.INT, "500");
			n.setParameter(2, Type.INT, "10");
			n.setParameter(3, Type.INT, "10");
			n.setParameter(4, Type.INT, "0");
			n.setParameter(5, Type.INT, "0");
			n.setParameter(6, Type.INT, "0");
			n.setParameter(7, Type.INT, "0");
			n.invoke();
			System.out.println(n.getRetVal() + ":BPLA_StartArea");
			
			n = demo.getJNativeByFunction("BPLA_PrintTruetype");
			n.setRetVal(Type.INT);
			n.setParameter(0, Type.STRING, "南京咸水鸭");
			n.setParameter(1, Type.INT, "4");
			n.setParameter(2, Type.INT, "210");
			n.setParameter(3, Type.STRING, "微软雅黑体");
			n.setParameter(4, Type.INT, "30");
			n.setParameter(5, Type.INT, "0");
			n.invoke();
			System.out.println(n.getRetVal() + ":BPLA_PrintTruetype");

			n = demo.getJNativeByFunction("BPLA_PrintTruetype");
			n.setRetVal(Type.INT);
			n.setParameter(0, Type.STRING, "价格(元):35");
			n.setParameter(1, Type.INT, "4");
			n.setParameter(2, Type.INT, "180");
			n.setParameter(3, Type.STRING, "微软雅黑体");
			n.setParameter(4, Type.INT, "20");
			n.setParameter(5, Type.INT, "0");
			n.invoke();
			System.out.println(n.getRetVal() + ":BPLA_PrintTruetype");
			
			n = demo.getJNativeByFunction("BPLA_PrintTruetype");
			n.setRetVal(Type.INT);
			n.setParameter(0, Type.STRING, "净重(千克):2.6");
			n.setParameter(1, Type.INT, "4");
			n.setParameter(2, Type.INT, "150");
			n.setParameter(3, Type.STRING, "微软雅黑体");
			n.setParameter(4, Type.INT, "20");
			n.setParameter(5, Type.INT, "0");
			n.invoke();
			System.out.println(n.getRetVal() + ":BPLA_PrintTruetype");
			
			n = demo.getJNativeByFunction("BPLA_PrintTruetype");
			n.setRetVal(Type.INT);
			n.setParameter(0, Type.STRING, "单价(元/千克):15");
			n.setParameter(1, Type.INT, "4");
			n.setParameter(2, Type.INT, "120");
			n.setParameter(3, Type.STRING, "微软雅黑体");
			n.setParameter(4, Type.INT, "20");
			n.setParameter(5, Type.INT, "0");
			n.invoke();
			System.out.println(n.getRetVal() + ":BPLA_PrintTruetype");
			
			n = demo.getJNativeByFunction("BPLA_PrintTruetype");
			n.setRetVal(Type.INT);
			n.setParameter(0, Type.STRING, "生产日期:12.11.20");
			n.setParameter(1, Type.INT, "4");
			n.setParameter(2, Type.INT, "90");
			n.setParameter(3, Type.STRING, "微软雅黑体");
			n.setParameter(4, Type.INT, "20");
			n.setParameter(5, Type.INT, "0");
			n.invoke();
			System.out.println(n.getRetVal() + ":BPLA_PrintTruetype");
			
			n = demo.getJNativeByFunction("BPLA_PrintTruetype");
			n.setRetVal(Type.INT);
			n.setParameter(0, Type.STRING, "保质日期:12.12.08");
			n.setParameter(1, Type.INT, "4");
			n.setParameter(2, Type.INT, "60");
			n.setParameter(3, Type.STRING, "微软雅黑体");
			n.setParameter(4, Type.INT, "20");
			n.setParameter(5, Type.INT, "0");
			n.invoke();
			System.out.println(n.getRetVal() + ":BPLA_PrintTruetype");
				
			n = demo.getJNativeByFunction("BPLA_PrintTruetype");
			n.setRetVal(Type.INT);
			n.setParameter(0, Type.STRING, "沃尔玛购物广场");
			n.setParameter(1, Type.INT, "4");
			n.setParameter(2, Type.INT, "30");
			n.setParameter(3, Type.STRING, "微软雅黑体");
			n.setParameter(4, Type.INT, "20");
			n.setParameter(5, Type.INT, "0");
			n.invoke();
			System.out.println(n.getRetVal() + ":BPLA_PrintTruetype");
			
			n = demo.getJNativeByFunction("BPLA_PrintQR");
			n.setRetVal(Type.INT);
			n.setParameter(0, Type.STRING, "QA,123698547896325874125896325");
			
			n.setParameter(1, Type.INT, "260");
			n.setParameter(2, Type.INT, "70");
			n.setParameter(3, Type.INT, "7");
			n.setParameter(4, Type.INT, "2");//使用1 扫描枪能扫出结果 使用2手机能扫出结果
			n.setParameter(5, Type.INT, "0");
			n.setParameter(6, Type.INT, "27");
			n.invoke();
			System.out.println(n.getRetVal() + ":BPLA_PrintQR");
			
			n = demo.getJNativeByFunction("BPLA_PrintTruetype");
			n.setRetVal(Type.INT);
			n.setParameter(0, Type.STRING, "xxoo公司");
			n.setParameter(1, Type.INT, "260");
			n.setParameter(2, Type.INT, "30");
			n.setParameter(3, Type.STRING, "微软雅黑体");
			n.setParameter(4, Type.INT, "20");
			n.setParameter(5, Type.INT, "0");
			n.invoke();

			n = demo.getJNativeByFunction("BPLA_Print");
			n.setRetVal(Type.INT);
			n.setParameter(0, Type.INT, "1");
			n.setParameter(1, Type.INT, "0");
			n.setParameter(2, Type.INT, "1");
			n.invoke();
			System.out.println(n.getRetVal() + ":BPLA_Print");
			
			n = demo.getJNativeByFunction("BPLA_CloseUsb");
			n.setRetVal(Type.INT);
			n.invoke();
			System.out.println(n.getRetVal() + ":BPLA_CloseUsb");
			
		} 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);
	}
	
}


  • 大小: 4.6 KB
分享到:
评论

相关推荐

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

    为了实现这一点,开发者选择使用JNative库,它是一个Java Native Interface (JNI)的封装工具,简化了Java与本地代码交互的过程。 JNative是一个开源的Java库,它允许开发者在不编写C/C++代码的情况下,直接调用本地...

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

    这个项目“jbarcode+Jnative读取本地第三方的dll文件+得力+斑马打印机使用javaAPI打印 demo”提供了一个解决方案,它结合了几个关键的技术点,使得在Java环境中实现对特定打印机,如得力和斑马打印机的打印功能成为...

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

    在Java程序中调用DLL(动态链接库)文件通常是通过JNI(Java Native Interface)来实现的,而JNative是JNI的一个封装库,它提供了一种更简洁的方式来调用C/C++编写的本地代码。这篇博客文章可能介绍了如何利用...

    java利用jnative调用DLL.txt

    本文介绍了如何使用JNative库在Java中调用DLL。通过具体的代码示例,展示了如何创建`JNative`实例、设置参数类型、调用DLL函数以及处理返回值。这种技术特别适合于需要高性能计算或需要访问操作系统特定功能的场景。...

    JNA.jar-JNative.jar-dll创建-JAVA调用-VC调用

    标题中的“JNA.jar-JNative.jar-dll创建-JAVA调用-VC调用”涉及到的是Java平台下通过JNI(Java Native Interface)的两种实现方式,JNA(Java Native Access)和JNative,来与C/C++编写的动态链接库(DLL)进行交互...

    java使用JNative调用动态连接库实例[文].pdf

    在Java中,使用`JNative`调用这些函数时,首先需要定义函数原型。然后,通过`JNative`的`getFunction`方法获取DLL中的函数句柄,最后调用`callIntMethod`来执行函数并获取结果。在示例代码中,`EncryptPswStr`和`...

    java edna jnative rmi 例子

    Java EDNA RMI示例是将Java编程语言与EDNA数据库、JNative库以及远程方法调用(RMI)技术相结合的应用。这个项目的核心目的是演示如何从EDNA数据库中检索数据,然后通过RMI服务暴露这些数据,以便在不同的网络环境中...

    JNative用java调用动态库VC++

    要使用JNative,首先需要将`JNative.jar`添加到Java项目的类路径中。然后,我们可以创建一个Java类,如`Test`,并使用JNative提供的API来调用原生库。在`Test`类中,我们通过`System.loadLibrary()`或`JNative`构造...

    Java本地调用接口 JNative

    Java本地调用接口(Java Native Interface,简称JNI)是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在很多场景下都扮演着关键角色,比如当需要访问操作系统特定功能、优化性能或者利用已...

    java用Jnative指纹比对

    用的是中控的Biokey 开发工具,安装控件驱动神马的, 就不多说了,zkonline的SDK里都有,由于指纹需要在服务器端做比对,但SDK里只提供了DLL库的方式来解决比对问题,所以需要让java调用DLL库。。。在网上找到...

    JNative Java调用动态链接库jar包

    5. **返回值处理**:本地函数执行完毕后,JNative会将返回值从C/C++类型转换为Java类型,以便Java代码能直接使用。 6. **异常处理**:如果在本地函数执行过程中发生错误,JNative可以将错误信息抛回Java层,作为...

    Jnative1.4_java调用动态库所需jar

    2. **示例或测试动态库**: 压缩包中可能包含一个示例动态库,供开发者学习如何使用Jnative进行Java与本地代码的交互。这个库可能包含了一些简单的函数,如加减乘除运算,以便开发者理解如何在Java中调用这些函数。 ...

    Java调用Win32获取窗口句柄JNative-1.3.2

    总结来说,Java调用Win32获取窗口句柄JNative-1.3.2是一种使用JNI技术来实现Java与Win32 API交互的方法。通过JNative库,开发者可以轻松地在Java应用程序中查找并操作特定的Windows窗口,增强了Java应用程序的功能和...

    YiKaTong.rar_JNative_YiKaTong.r_java jnative dll_jnative api_jna

    3. **yikatong.r.java**:这可能是项目中定义的Java源代码文件,包含了使用JNative调用DLL的Java类。在这个文件中,开发者会定义本地方法签名,然后通过JNative API来实现具体的调用。 4. **jnative.dll**:这是一...

    JNative-1.3.2.zip

    《JNative:Java调用C++的桥梁》 在IT领域,跨语言通信是一个常见的需求,比如Java开发者可能需要调用C或C++编写的库来实现特定功能。JNative正是这样一个工具,它允许Java程序无缝地调用本地(Native)代码,尤其...

    JNative api说明文档

    2. **Register Native Method**: 注册本地方法,这是使用JNative的关键步骤,它将本地方法与Java类中的方法签名关联起来。 3. **Data Type Mapping**: 数据类型映射,JNative处理Java与原生数据类型的转换,如`int`...

    jnative简单的使用

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

    Java调用DLL的工具 JNative

    Java调用DLL的工具JNative是为了解决Java应用程序与本地动态链接库(DLL)交互问题而设计的一个开源组件。在传统的Java开发中,如果需要调用非Java编写的库,比如C或C++编译的DLL,通常会使用JNI(Java Native ...

    java连接dll文件的驱动,jnative.jar

    `jnative.jar`是一个Java库,它提供了一种机制,使得Java代码能够调用C或C++编写的DLL函数,从而实现了Java和本地代码的互操作性。 **JNI(Java Native Interface)** 是Java平台标准的一部分,它允许Java代码和...

    jnative使用方法总结

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

Global site tag (gtag.js) - Google Analytics