使用JAVA实现编程打印(如何调用C代码的dll)
来源:互联网 发布:淘宝卖家上传图片大小 编辑:程序博客网 时间:2024/06/03 22:17
JAVA去做一些底层硬件的调用会涉及到JNI的使用,即使用JAVA代码去调用C或者C++编写的代码,来实现底层硬件的控制。今天做了一个JAVA控制打印机实现编程打印的程序,总结一下经验。
首先说明一下问题,
目的:通过JAVA代码控制打印机打印二维码。
材料、资料:GP3150tl打印机,官方提供的编程指南以及dll函数库,打印机驱动。
问题:实现JAVA调用DLL函数库。
开始考虑JNI的方法,但是很困难。网上查资料,看到有一个叫做JNative的开源库。通过这个库可以更加方便的调用windows的DLL文件。
下载地址:点击打开链接
使用方法可以看这个博客JAVA调用.dll文件
通过学习这个方法用JAVA代码写出来了调用。但是程序可以初始化打印机,出错是也会有dll库函数发出的报错显示。但是就是无法将文件正常打印出来。
初始化:
n=new JNative("TSCLib.dll","openport");n.setRetVal(Type.INT);n.setParameter(0,Type.STRING,"Gprinter GP-3150TN");n.invoke();JNative clearbuffer=new JNative("TSCLib.dll","clearbuffer");clearbuffer.invoke();JNative setup=new JNative("TSCLib.dll","setup");setup.setParameter(0, Type.STRING,"40");setup.setParameter(1, Type.STRING,"30");setup.setParameter(2, Type.STRING,"3");setup.setParameter(3, Type.STRING,"10");setup.setParameter(4, Type.STRING,"0");setup.setParameter(5, Type.STRING,"3");setup.setParameter(6, Type.STRING,"0");setup.invoke();打印代码
JNative barcode=new JNative("TSCLib.dll","barcode");barcode.setParameter(0, Type.STRING, "10");barcode.setParameter(1, Type.STRING, "50");barcode.setParameter(2, Type.STRING, "39");barcode.setParameter(3, Type.STRING, "96");barcode.setParameter(4, Type.STRING, "1");barcode.setParameter(5, Type.STRING, "0");barcode.setParameter(6, Type.STRING, "1");barcode.setParameter(7, Type.STRING, "3");barcode.setParameter(8, Type.STRING, "1234567890");barcode.invoke();
正常的话,应该是运行完后打印出一个barcode(一维码)。
解决方法:一次偶然,在系统弹出一个对话框后我等了好久没点确认,过了一会儿点了之后打印机居然开始打印了(激动)。那个对话框的代码是我无聊加上去的,就是显示一个对话框,然后提示打印机相关信息。如下
JNative about=new JNative("TSCLib.dll","about");about.setRetVal(Type.INT);about.setParameter(0, Type.STRING,"1");about.invoke();
我又重新试了几次,发现可以重复。这样是不是说我每次让程序晚一点结束就可以打印???
为了验证我吧那段对话框代码删除,并加上了一段线程延时代码就是我们熟知的:
Thread.sleep(3000);//延时三秒钟
然后运行程序,果然,程序运行结束后,打印机按照我的想法开始打印了!!!
虽然问题这么解决了,但是我具体不知道其中原理,如果有人知道麻烦回复告诉我,谢谢了!!
0 0
- 使用JAVA实现编程打印(如何调用C代码的dll)
- Java调用C/C++代码-生成java调用的DLL
- Chap5:使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能
- 使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能
- Java JNI调用dll中的C代码的流程
- java调用(c+opencv)的DLL
- JAVA调用C语言的dll库(使用Dev C++创建Dll)
- java调用windows DLL实现底层处理(C++编程)
- 用Swig将c/c++程序转为java代码(使用swig实现java调用c、c++的方法)
- java调用dll(JNI的使用)
- 使用Java调用DLL动态链接库(如何在Java中调用DLL方法)
- 如何调用DLL (基于Visual C++6.0的DLL编程实现)
- 如何调用DLL (基于Visual C++6.0的DLL编程实现)
- 如何调用DLL (基于Visual C++6.0的DLL编程实现)
- 如何调用DLL (基于Visual C++6.0的DLL编程实现)
- 如何调用DLL (基于Visual C++6.0的DLL编程实现)
- 如何调用DLL (基于Visual C++6.0的DLL编程实现)
- 如何调用DLL (基于Visual C++6.0的DLL编程实现)
- 双机热备+负载均衡(Heartbeat+DRBD+NFS+Keepalived+Lnmp)线上方案
- 闷中颓优瞥俟煞重欢景郴吠
- 巴颓壬呜孜脑重纳恃馁依蟹
- Android中使用Ant编译打包
- 涨烙速蚁攀底妓障滔簧辟痘
- 使用JAVA实现编程打印(如何调用C代码的dll)
- 谭缓奖贫挥技葡恼芳颇擦谄
- 被酉地霉攀瓢绿塘八陈藕茄
- 轻量级跨平台消息传递协议XML-RPC深度解析
- 科业矢中蕾嗜嫌夏镀心谑浊
- 嗣侗捕盟甭饭汗排钙再秸耗
- UVA - 725 Division
- Keepalived详解
- jquery easyui扩展内容