[计算机]java实例:java实现pos打印机无驱打印

[计算机]java实例:java实现pos打印机无驱打印

ID:22934157

大小:54.50 KB

页数:9页

时间:2018-11-02

[计算机]java实例:java实现pos打印机无驱打印_第1页
[计算机]java实例:java实现pos打印机无驱打印_第2页
[计算机]java实例:java实现pos打印机无驱打印_第3页
[计算机]java实例:java实现pos打印机无驱打印_第4页
[计算机]java实例:java实现pos打印机无驱打印_第5页
资源描述:

《[计算机]java实例:java实现pos打印机无驱打印》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Java实例:Java实现POS打印机无驱打印(1)发布时间:2009.07.0307:43    来源:赛迪网    作者:于丙超【赛迪网-IT技术报道】Java对硬件的控制一直以来都不是其强项,特别是打印,Java很难实现对POS打印机的直接控制,并判断打印是否成功。本文将探讨一种方法,讲述如何使用Java技术与网口的POS打印机连接,通过Socket技术直接将爱普生指令写入打印机端口,打印出相应的内容或者条形码,并实现字体的放大,打印完毕自动走纸等功能。行业需求我们是一家专业做酒店餐饮软件的公司,餐饮软件一个重要的功能就是后厨打印问题,前台点菜完毕,后厨立刻打印出单子,这样

2、就减少人工递单的麻烦,节省时间,提高翻台率。这种信息化解决方案对打印技术要求很高,理论上最好100%不丢单,也就是每次点菜后厨都会相应出单子,但是实际上行不通,为什么呢?因为网线、打印机、网卡等都有可能有问题,别说打印机等硬件因为厨房油烟问题损坏,我们甚至碰到过网线被老鼠咬断的情况,总之硬件网络故障防不胜防,所以只能退而求其次,就是有问题不可怕,程序能够判断是否出了问题,并能给出提示,便于服务员处理,及时补单。如果我们用安装Windows驱动的方法来实现后厨打印,那么肯定是不行的,因为我们只能单向向驱动程序抛包,不能从驱动程序获得任何返回值,没有办法了解是否打印成功。而且更为严重

3、的是,有时候因为后厨打印机过多,Windows驱动甚至会因为网络堵塞自作主张将包丢弃,没有任何提示。这在行业应用中是不行的,会给用户带来损失,所以想到了绕过Windows驱动,直接写端口的方法。无驱打印的可行性所谓直接写端口的方法,就是不用安装打印机驱动,不使用PrinterJob获得打印机的名字的方法进行打印。众所周知,之所以安装打印机驱动,一个重要的原因就是打印机厂商千差万别,不同的打印机往往都有各自的驱动,很难实现万能驱动。但是,在POS打印机行业却有一条捷径,就是现在市面上的POS打印机基本上都支持爱普生指令,也就是说,只要将程序和打印机联通,直接向端口里面写爱普生指令就

4、可以控制打印机。打印机接受到爱普生指令以后,自行进行解析,然后打印出相应的内容。爱普生指令日本的EPSON公司在目前的POS打印机市场,尤其是针式打印机市场占有很大一部分份额。它所推行的ESC打印控制命令(EPSONStandardCodeforPr5nter)已经成为了针式打印机控制语言事实上的工业标准,ESC/POS打印命令集是ESC打印控制命令的简化版本,现在大多数POS打印都采用ESC/POS指令集。绝大多数打印机都有EPSONESC的软件命令仿真功能,而且其它打印控制命令的格式和功能也都与ESC代码集类似。由于早期的操作系统DOS与现在Windows的结构不同,在打印机

5、内部软件和应用软件之间没有由硬件厂商提供的打印驱动程序,必须由应用软件直接通过硬件接口来控制打印机,所以从ESC指令出现开始,它就是公开的,否则没有应用软件可以使用它,而除了标准的ESC指令外,每种型号的打印机其指令又不太一样,所以在DOS软件中,你可以看到每个应用软件都只是支持为数不多的几种常用打印机。ESC指令在形式上分为两种格式,一种是文本方式控制码,一种是Escape转义序列码。文本方式控制码由一字节字符码表示,实现的是与打印机硬件操作有关的指令,Escape序列码由转义字符和参数字符或打印数据组成。建立打印连接通过上面的介绍,了解了实现无驱打印原来只是一层窗户纸,具体的

6、方法就是首先建立打印机连接,然后写入爱普生指令即可。那么如何建立打印机连接?以网口POS打印机举例。第一步,首先要给网口打印机赋一个IP地址,例如叫做192.168.0.18。第二步,编写连接代码。Socketclient=newjava.net.Socket();PrintWritersocketWriter;client.connect(newInetSocketAddress("192.168.0.18",9100),1000);//创建一个socketsocketWriter=newPrintWriter(client.getOutputStream());//创建输入输

7、出数据流看起来跟一般的socket连接没有很大的区别,就是赋一个IP地址和一个端口号,并设置一下超时时间即可,只需要说明的是,一般POS打印机的端口都是9100。写入打印内容连接建立完毕,写入内容就非常容易,只要使用write或者println方法写入即可,其中write方法是写入数字或字符,println写入一行字符串。例如:写入数字socketWriter.write(0);写入一行字符串socketWriter.println(“巧富餐饮软件后厨单据”);再入一行字符串so

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。