tsctsc244条码打印机错位打出来的数据不符怎么调打230出来235

Java调用TSC条码打印机接口打印条码和二维码
- 星河漫步
浏览量(2444)
公司新买了一台TSC条码打印机,型号:TSC TTP-244 PRO,让和现有资产管理系统对接,可以根据系统上的编码直接打印。研究了几天,终于调试出来了,下边是代码,目测可用:-- :增加一些注释和解决方案-- :经调试,有两套方案可用,js直接调用和使用java applet,后续会更上。import&java.io.UnsupportedEncodingE
import&com.sun.jna.win32.StdCallL
import&com.sun.jna.N
public&class&TscMain&{
&&&&public&interface&TscLibDll&extends&StdCallLibrary&{
&&&&&&&&TscLibDll&INSTANCE&=&(TscLibDll)&Native.loadLibrary(&TSCLIB&,&TscLibDll.class);
&&&&&&&&int&about();
&&&&&&&&int&openport(String&pirnterName);
&&&&&&&&int&closeport();
&&&&&&&&int&sendcommand(String&printerCommand);
&&&&&&&&int&setup(String&width,&String&height,&String&speed,&String&density,&String&sensor,&String&vertical,&String&offset);
&&&&&&&&int&downloadpcx(String&filename,&String&image_name);
&&&&&&&&int&barcode(String&x,&String&y,&String&type,&String&height,&String&readable,&String&rotation,&String&narrow,&String&wide,&String&code);
&&&&&&&&int&printerfont(String&x,&String&y,&String&fonttype,&String&rotation,&String&xmul,&String&ymul,&String&text);
&&&&&&&&int&clearbuffer();
&&&&&&&&int&printlabel(String&set,&String&copy);
&&&&&&&&int&formfeed();
&&&&&&&&int&nobackfeed();
&&&&&&&&int&windowsfont(int&x,&int&y,&int&fontheight,&int&rotation,&int&fontstyle,&int&fontunderline,&String&szFaceName,&String&content);
&&&&public&static&void&main(String[]&args)&throws&UnsupportedEncodingException&{
&&&&&&&&System.setProperty(&jna.encoding&,&&GBK&);//&支持中文
&&&&&&&&//&TscLibDll.INSTANCE.about();
&&&&&&&&TscLibDll.INSTANCE.openport(&TSC&TTP-244&Pro&);
&&&&&&&&//&TscLibDll.INSTANCE.downloadpcx(&C:\\UL.PCX&,&&UL.PCX&);
&&&&&&&&//&TscLibDll.INSTANCE.sendcommand(&REM&*****&This&is&a&test&by&JAVA.&*****&);
&&&&&&&&TscLibDll.INSTANCE.setup(&60&,&&40&,&&5&,&&15&,&&0&,&&2&,&&0&);
&&&&&&&&TscLibDll.INSTANCE.sendcommand(&SET&TEAR&ON&);
&&&&&&&&TscLibDll.INSTANCE.clearbuffer();
&&&&&&&&String&command&=&&QRCODE&300,70,L,6,A,0,M2,S3,\&123456\&&;//&打印二维码
&&&&&&&&TscLibDll.INSTANCE.sendcommand(command);
&&&&&&&&//&TscLibDll.INSTANCE.sendcommand(&PUTPCX&550,10,\&UL.PCX\&&);
&&&&&&&&//&TscLibDll.INSTANCE.printerfont(&100&,&&50&,&&TSS24.BF2&,&&0&,&&1&,&&1&,&&Technology&);
&&&&&&&&TscLibDll.INSTANCE.barcode(&70&,&&140&,&&128&,&&90&,&&0&,&&0&,&&2&,&&2&,&&A&);//&打印内容,参数是位置和字体
&&&&&&&&TscLibDll.INSTANCE.windowsfont(15,&15,&40,&0,&2,&1,&&Arial&,&&网络科技公司&);
&&&&&&&&TscLibDll.INSTANCE.windowsfont(30,&90,&32,&0,&2,&0,&&Arial&,&&---&研发部&);
&&&&&&&&TscLibDll.INSTANCE.windowsfont(120,&240,&32,&0,&2,&0,&&Arial&,&&A&);
&&&&&&&&TscLibDll.INSTANCE.printlabel(&1&,&&1&);
&&&&&&&&TscLibDll.INSTANCE.closeport();
}如何能够在线操作打印机呢?还想传递参数,同时打印条码和二维码?这里有一个解决方案。使用applet,再通过java调用dll即可。applet虽然很古老了,但用在这里只需要很少的一些代码即可,整体思路是:applet接收页面传递的参数,调用条码打印机接口打印。&&&&JButton&
&&&&String&image_path&=&&/images/img.jpg&;
&&&&private&String&title&=&&xxxxxxxxxxxxxx&;
&&&&public&void&init()&{
&&&&&&&&ImageIcon&image&=&new&ImageIcon(this.getClass().getResource(this.image_path));
&&&&&&&&button&=&new&JButton(image);
&&&&&&&&button.addActionListener(this);
&&&&&&&&this.getContentPane().add(button);
&&&&@Override
&&&&public&void&actionPerformed(ActionEvent&arg0)&{
&&&&&&&&String&code&=&getParameter(&bar_code&);
&&&&&&&&if&(code&!=&null&&&&code&!=&&&)&{
&&&&&&&&&&&&this.print(code);
&&&&public&void&print(String&code)&{
&&&&&&&&//&TscLibDll.INSTANCE.about();
&&&&&&&&TscLibDll.INSTANCE.openport(&TSC&TTP-244&Pro&);
&&&&&&&&TscLibDll.INSTANCE.setup(&60&,&&40&,&&5&,&&10&,&&0&,&&2&,&&0&);
&&&&&&&&TscLibDll.INSTANCE.sendcommand(&SET&TEAR&ON&);
&&&&&&&&TscLibDll.INSTANCE.clearbuffer();
&&&&&&&&TscLibDll.INSTANCE.sendcommand(&QRCODE&100,200,L,7,M,0,[2,7],'N;&&);
&&&&&&&&//&TscLibDll.INSTANCE.sendcommand(&PUTPCX&550,10,\&UL.PCX\&&);
&&&&&&&&TscLibDll.INSTANCE.barcode(&70&,&&140&,&&128&,&&90&,&&0&,&&0&,&&2&,&&2&,&code);
&&&&&&&&TscLibDll.INSTANCE.windowsfont(55,&20,&48,&0,&2,&1,&&Arial&,&title);
&&&&&&&&TscLibDll.INSTANCE.windowsfont(120,&240,&32,&0,&2,&0,&&Arial&,&code);
&&&&&&&&//&TscLibDll.INSTANCE.windowsfont(400,&200,&48,&90,&3,&1,&&Arial&,&&DEG&90&);
&&&&&&&&//&TscLibDll.INSTANCE.windowsfont(400,&200,&48,&180,&3,&1,&&Arial&,&&DEG&180&);
&&&&&&&&//&TscLibDll.INSTANCE.windowsfont(400,&200,&48,&270,&3,&1,&&Arial&,&&DEG&270&);
&&&&&&&&TscLibDll.INSTANCE.printlabel(&1&,&&1&);
&&&&&&&&TscLibDll.INSTANCE.closeport();
&&&&}这样做呢,代码是没有问题的,而且用java直接执行打印也是可以的,但是在页面上点击打印却不行。为什么呢?调用打印机涉及到打印驱动,由于安全问题在页面上调用代码不能被执行,有个方法是这样:&&&&&&&&SwingUtilities.invokeLater(new&Runnable()&{
&&&&&&&&&&&&public&void&run()&{
&&&&&&&&&&&&&&&&TscLibDll.INSTANCE.openport(&TSC&TTP-244&Pro&);
&&&&&&&&&&&&&&&&//&......
&&&&&&&&&&&&}
&&&&&&&&});你会发现这样还是不行,还需要修改一个文件,位置在:D:\Program Files (x86)\Java\jre7\lib\security\java.security(这个文件是在用户端需要修改的,因为想要打印的人是用户端)在grant中加一行:permission&java.security.AllP这样基本上就行了。打印出来大概是这样子:娆㈣繋鏉ュ埌搴︾偣鏉$爜鍟嗗煄锛}

我要回帖

更多关于 tsc条码打印机软件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信