博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android连接网络打印机,jSocket连接网络打印机
阅读量:4577 次
发布时间:2019-06-08

本文共 15277 字,大约阅读时间需要 50 分钟。

老大写的一个打印工具类,记录一下。

package com.Ieasy.Tool;import android.annotation.SuppressLint;import java.io.IOException ;import java.io.OutputStream ;import java.io.PrintWriter ;import java.net.InetSocketAddress ;import java.net.Socket ;import java.net.SocketAddress ;import java.nio.charset.Charset ;@SuppressLint("NewApi")public class NetPrinter{    public Socket socket;    public int POS_OPEN_NETPORT = 9100;// 0X238c    public boolean IFOpen = false;    public int Net_SendTimeout = 1000;    public int Net_ReceiveTimeout = 1500;    public String command = ""; //打印命令字符串    public byte[] outbytes; //传输的命令集    PrinterCMD pcmd = new PrinterCMD();        ///     /// 网络打印机 打开网络打印机     ///     ///     /// 
public boolean Open(String ipaddress, int netport) { if (socket == null) { try { SocketAddress ipe = new InetSocketAddress(ipaddress,netport); socket = new Socket(); //Socket(ipaddress, netport,true); socket.connect(ipe); socket.setSoTimeout(Net_ReceiveTimeout); //socket.SendTimeout = Net_SendTimeout; IFOpen = true; //System.out.print("连接成功"); } catch(Exception e) { //MessageBox.Show("连接不成功"); e.printStackTrace(); IFOpen = false; } } else { try { socket.close(); SocketAddress ipe = new InetSocketAddress(ipaddress,netport); socket = new Socket(); //Socket(ipaddress, netport,true); socket.connect(ipe); socket.setSoTimeout(Net_ReceiveTimeout); //socket.SendTimeout = Net_SendTimeout; IFOpen = true; } catch(Exception e) { e.printStackTrace(); IFOpen = false; } } return IFOpen; } /// /// 网络打印机 关闭 /// /// ///
public void Close() { try { socket.close(); socket = null; } catch(Exception e) { e.printStackTrace(); } } /// /// 网络打印机 初始化打印机 /// public void Set() { try { command = pcmd.CMD_SetPos(); OutputStream stream = socket.getOutputStream(); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /// /// 网络打印机 打印的文本 /// /// /// 0:居左 1:居中 2:居右 /// 字体大小0:正常大小 1:两倍高 2:两倍宽 3:两倍大小 4:三倍高 5:三倍宽 6:三倍大小 7:四倍高 8:四倍宽 9:四倍大小 10:五倍高 11:五倍宽 12:五倍大小 /// 0:非针打 1:针打 public void PrintText(String pszString, int nFontAlign, int nFontSize,int ifzhenda) { try { OutputStream stream = socket.getOutputStream(); command = pcmd.CMD_TextAlign(nFontAlign); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); if (ifzhenda == 1) { command = pcmd.CMD_FontSize_BTP_M280(nFontSize); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); command = pcmd.CMD_FontSize_BTP_M2801(nFontSize); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); } else { command = pcmd.CMD_FontSize(nFontSize); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); } command = pszString;// +CMD_Enter(); outbytes = command.getBytes(Charset.forName("GB2312")); //Charset.defaultCharset()); //forName("UTF-8") stream.write(outbytes); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); return; } } /// /// 网络打印机 回车 /// public void PrintEnter() { try { command = pcmd.CMD_Enter(); OutputStream stream = socket.getOutputStream(); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /// /// 网络打印机 切割 /// /// 切割时,走纸行数 public void CutPage(int pagenum) { try { OutputStream stream = socket.getOutputStream(); command = pcmd.CMD_PageGO(pagenum) + pcmd.CMD_Enter(); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); command = pcmd.CMD_CutPage() + pcmd.CMD_Enter(); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /// /// 网络打印机换行 /// /// public void PrintNewLines(int lines) { try { OutputStream stream = socket.getOutputStream(); command = pcmd.CMD_FontSize(0); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); for (int i = 0; i < lines; i++) { command = "" + pcmd.CMD_Enter(); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /// /// 打开钱箱 /// public void OpenQianXiang() { try { OutputStream stream = socket.getOutputStream(); command = "" + pcmd.CMC_QianXiang(); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /// /// 打印条码 /// /// /// /// /// 1:上方 2:下方 0:不打印数字 /// 0:居左 1:居中 2:居右 /// 字体大小0:正常大小 1:两倍高 2:两倍宽 3:两倍大小 4:三倍高 5:三倍宽 6:三倍大小 7:四倍高 8:四倍宽 9:四倍大小 10:五倍高 11:五倍宽 12:五倍大小 public void PrintTiaoMa(String numstr, int height, int width, int numweizi, int fontalign, int fontsize) { try { OutputStream stream = socket.getOutputStream(); command = pcmd.CMD_TiaoMaHeight(height); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); command = pcmd.CMD_TiaoMaWidth(width); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); command = pcmd.CMD_TiaoMaWeiZi(numweizi); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); command = pcmd.CMD_TextAlign(fontalign); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); command = pcmd.CMD_FontSize(fontsize); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); command = pcmd.CMD_TiaoMaPrint(numstr); outbytes = command.getBytes(Charset.forName("ASCII")); stream.write(outbytes); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}class PrinterCMD{ /// /// 初始化打印机 /// ///
public String CMD_SetPos() { return new StringBuffer().append((char)27).append((char)64).toString(); } /// /// 换行(回车) /// ///
public String CMD_Enter() { return new StringBuffer().append((char)10).toString(); } /// /// 对齐模式 /// /// 0:左对齐 1:中对齐 2:右对齐 ///
public String CMD_TextAlign(int align) { return new StringBuffer().append((char)27).append((char)97).append((char)align).toString(); } /// /// 字体的大小 /// /// 0:正常大小 1:两倍高 2:两倍宽 3:两倍大小 4:三倍高 5:三倍宽 6:三倍大小 7:四倍高 8:四倍宽 9:四倍大小 10:五倍高 11:五倍宽 12:五倍大小 ///
public String CMD_FontSize(int nfontsize) { String _cmdstr = ""; //设置字体大小 switch (nfontsize) { case -1: _cmdstr = new StringBuffer().append((char)29).append((char)33).append((char)0).toString();//29 33 break; case 0: _cmdstr = new StringBuffer().append((char)29).append((char)33).append((char)0).toString();//29 33 break; case 1: _cmdstr = new StringBuffer().append((char)29).append((char)33).append((char)1).toString(); break; case 2: _cmdstr = new StringBuffer().append((char)29).append((char)33).append((char)16).toString(); break; case 3: _cmdstr = new StringBuffer().append((char)29).append((char)33).append((char)17).toString(); break; case 4: _cmdstr = new StringBuffer().append((char)29).append((char)33).append((char)2).toString(); break; case 5: _cmdstr = new StringBuffer().append((char)29).append((char)33).append((char)32).toString(); break; case 6: _cmdstr = new StringBuffer().append((char)29).append((char)33).append((char)34).toString(); break; case 7: _cmdstr = new StringBuffer().append((char)29).append((char)33).append((char)3).toString(); break; case 8: _cmdstr = new StringBuffer().append((char)29).append((char)33).append((char)48).toString(); break; case 9: _cmdstr = new StringBuffer().append((char)29).append((char)33).append((char)51).toString(); break; case 10: _cmdstr = new StringBuffer().append((char)29).append((char)33).append((char)4).toString(); break; case 11: _cmdstr = new StringBuffer().append((char)29).append((char)33).append((char)64).toString(); break; case 12: _cmdstr = new StringBuffer().append((char)29).append((char)33).append((char)68).toString(); break; } return _cmdstr; } /// /// BTP-M280(针打) 倍宽倍高 /// /// 0:取消倍宽倍高模式 1:倍高模式 2:倍宽模式 3:两倍大小 ///
public String CMD_FontSize_BTP_M280(int size) { String _cmdstr = ""; //只有0和1两种模式 int fontsize = size; switch (fontsize) { case 1: _cmdstr = new StringBuffer().append((char)28).append((char)33).append((char)8).toString(); break; case 2: _cmdstr = new StringBuffer().append((char)28).append((char)33).append((char)4).toString(); break; case 3: _cmdstr = new StringBuffer().append((char)28).append((char)87).append((char)1).toString(); break; default: _cmdstr = new StringBuffer().append((char)28).append((char)87).append((char)0).toString(); break; } return _cmdstr; } /// /// BTP-M280(针打) 倍宽倍高 /// /// 0:取消倍宽倍高模式 1:倍高模式 2:倍宽模式 3:两倍大小 ///
public String CMD_FontSize_BTP_M2801(int size) { String _cmdstr = ""; //只有0和1两种模式 int fontsize = size; switch (fontsize) { case 1: _cmdstr = new StringBuffer().append((char)27).append((char)33).append((char)17).toString(); break; case 2: _cmdstr = new StringBuffer().append((char)27).append((char)33).append((char)33).toString(); break; case 3: _cmdstr = new StringBuffer().append((char)27).append((char)33).append((char)49).toString(); break; default: _cmdstr = new StringBuffer().append((char)27).append((char)33).append((char)1).toString(); break; } return _cmdstr; } /// /// 走纸 /// /// 走纸的行数 ///
public String CMD_PageGO(int line) { return new StringBuffer().append((char)27).append((char)100).append((char)line).toString(); } /// /// 切割 /// ///
public String CMD_CutPage() { return new StringBuffer().append((char)27).append((char)109).toString(); } /// /// 返回状态(返回8位的二进制) /// /// 1:打印机状态 2:脱机状态 3:错误状态 4:传送纸状态 /// 返回打印机状态如下: /// 第一位:固定为0 /// 第二位:固定为1 /// 第三位:0:一个或两个钱箱打开 1:两个钱箱都关闭 /// 第四位:0:联机 1:脱机 /// 第五位:固定为1 /// 第六位:未定义 /// 第七位:未定义 /// 第八位:固定为0 /// /// 返回脱机状态如下: /// 第一位:固定为0 /// 第二位:固定为1 /// 第三位:0:上盖关 1:上盖开 /// 第四位:0:未按走纸键 1:按下走纸键 /// 第五位:固定为1 /// 第六位:0:打印机不缺纸 1: 打印机缺纸 /// 第七位:0:没有出错情况 1:有错误情况 /// 第八位:固定为0 /// /// 返回错误状态如下: /// 第一位:固定为0 /// 第二位:固定为1 /// 第三位:未定义 /// 第四位:0:切刀无错误 1:切刀有错误 /// 第五位:固定为1 /// 第六位:0:无不可恢复错误 1: 有不可恢复错误 /// 第七位:0:打印头温度和电压正常 1:打印头温度或电压超出范围 /// 第八位:固定为0 /// /// 返回传送纸状态如下: /// 第一位:固定为0 /// 第二位:固定为1 /// 第三位:0:有纸 1:纸将尽 /// 第四位:0:有纸 1:纸将尽 /// 第五位:固定为1 /// 第六位:0:有纸 1:纸尽 /// 第七位:0:有纸 1:纸尽 /// 第八位:固定为0 ///
public String CMD_ReturnStatus(int num) { return new StringBuffer().append((char)16).append((char)4).append((char)num).toString(); } /// /// 条码高宽 /// /// ///
public String CMD_TiaoMaHeight(int num) { //return ((char)29).append"h" + ((char)num).toString(); return new StringBuffer().append((char)29).append((char)104).append((char)num).toString(); } /// /// 条码宽度 /// /// ///
public String CMD_TiaoMaWidth(int num) { //return ((char)29).append"w" + ((char)num).toString(); return new StringBuffer().append((char)29).append((char)119).append((char)num).toString(); } /// /// 条码数字打印的位置 /// /// 1:上方 2:下方 0:不打印数字 ///
public String CMD_TiaoMaWeiZi(int num) { return new StringBuffer().append((char)29).append("H").append((char)num).toString(); } /// /// 开始打印(条码类型为CODE39) /// /// ///
public String CMD_TiaoMaPrint(String numstr) { //return ((char)29).append"k" + ((char)4).appendnumstr + ((char)0).toString(); return new StringBuffer().append((char)29).append((char)107).append((char)4).append(numstr).append ((char)0).toString(); } /// /// 打开钱箱 /// ///
public String CMC_QianXiang() { return new StringBuffer().append((char)27).append((char)112).append((char)0).append((char)60).append((char)255).toString(); }}

 

转载于:https://www.cnblogs.com/LIANQQ/p/4186234.html

你可能感兴趣的文章
自我介绍以及关于软件工程的问题
查看>>
struts (一)
查看>>
【新番推荐】工作细胞
查看>>
开发过程中遇到的崩溃信息及原因,崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃崩溃...
查看>>
C#简单的tcpserver
查看>>
提高(Android)开发效率的工具与网站
查看>>
web.xml里welcome-file欢迎页面配置及web.xml简介
查看>>
[转]Fedora8 Linux下安装mapguide
查看>>
你在用MapGuide/Map 3D做什么?
查看>>
bzoj1296 [SCOI2009]粉刷匠
查看>>
Freemarker网页静态化
查看>>
大话重构连载18:最常见的问题
查看>>
使用charles过滤网络请求
查看>>
C# WinForm实现Windows 7 Aero磨砂玻璃效果
查看>>
Java SpringMVC框架学习(一)入门
查看>>
JAVA 多线程和并发学习笔记(四)
查看>>
redis学习笔记(一)
查看>>
将Form置入splitContainer的panel中
查看>>
两个字符窜,在母窜中查找子窜的位置
查看>>
understanding recursion——loop under control
查看>>