小票打印机指令集封装(支持EPSON指令)
最近写了一些关于小票打印机的程序,不难,但是记录下来,作为足迹吧。
现在市场上的小票机基本都支持EPSON指令。指令集文档
对指令集进行了自己的封装,方便以后调用:
package aheiziUtil;
import java.io.UnsupportedEncodingException;
public class PrinterCmdUtils {
public static final byte ESC = 27;//换码
public static final byte FS = 28;//文本分隔符
public static final byte GS = 29;//组分隔符
public static final byte DLE = 16;//数据连接换码
public static final byte EOT = 4;//传输结束
public static final byte ENQ = 5;//询问字符
public static final byte SP = 32;//空格
public static final byte HT = 9;//横向列表
public static final byte LF = 10;//打印并换行(水平定位)
public static final byte CR = 13;//归位键
public static final byte FF = 12;//走纸控制(打印并回到标准模式(在页模式下) )
public static final byte CAN = 24;//作废(页模式下取消打印数据 )
//------------------------换行-----------------------------
/**
* 换行
* @param lineNum要换几行
* @return
*/
public static byte[] nextLine(int lineNum)
{
byte[] result = new byte[lineNum];
for(int i=0;i<lineNum;i++)
{
result[i] = LF;
}
return result;
}
//------------------------加粗-----------------------------
//选择加粗模式
public static String boldOn()
{
byte[] result = new byte[3];
result[0] = ESC;
result[1] = 69;
result[2] = 0xF;
return new String(result);
}
//取消加粗模式
public static String boldOff()
{
byte[] result = new byte[3];
result[0] = ESC;
result[1] = 69;
result[2] = 0;
return new String(result);
}
//------------------------对齐-----------------------------
/**
* 左对齐
* @return
* @throws UnsupportedEncodingException
*/
public static String alignLeft()
{
byte[] result = new byte[3];
result[0] = ESC;
result[1] = 97;
result[2] = 0;
return new String(result);
}
/**
* 居中对齐
* @return
* @throws UnsupportedEncodingException
*/
public static String alignCenter()
{
byte[] result = new byte[3];
result[0] = ESC;
result[1] = 97;
result[2] = 1;
return new String(result);
}
/**
* 右对齐
* @return
*/
public static byte[] alignRight()
{
byte[] result = new byte[3];
result[0] = ESC;
result[1] = 97;
result[2] = 2;
return result;
}
/**
* 水平方向向右移动col列
* @param col
* @return
*/
public static byte[] set_HT_position( byte col )
{
byte[] result = new byte[4];
result[0] = ESC;
result[1] = 68;
result[2] = col;
result[3] = 0;
return result;
}
/**
* Select Font A
* ESC M n
* @return bytes for this command
* @throws UnsupportedEncodingException
*/
public static String select_fontA()
{
byte[] result = new byte[3];
result[0] = ESC;
result[1] = 77;
result[2] = 0;
return new String(result);
}
/**
* Select Font B
* ESC M n
* @return bytes for this command
* @throws UnsupportedEncodingException
*/
public static String select_fontB()
{
byte[] result = new byte[3];
result[0] = ESC;
result[1] = 77;
result[2] = 1;
return new String(result);
}
/**
* Select Font C ( some printers don't have font C )
* ESC M n
* @return bytes for this command
* @throws UnsupportedEncodingException
*/
public static String select_fontC()
{
byte[] result = new byte[3];
result[0] = ESC;
result[1] = 77;
result[2] = 2;
return new String(result);
}
//反显打印
public static String reversePrint(){
byte[] result = new byte[3];
result[0] = GS;
result[1] = 66;
result[2] = 1;
return new String(result);
}
//取消反显
public static String reverseCancel(){
byte[] result = new byte[3];
result[0] = GS;
result[1] = 66;
result[2] = 0;
return new String(result);
}
/****************************下划线*******************************/
//下划线一点宽(不支持汉字)
public static String underlineOne(){
byte[] result = new byte[3];
result[0] = ESC;
result[1] = 45;
result[2] = 1;
return new String(result);
}
//下划线两点宽(不支持汉字)
public static String underlineTwo(){
byte[] result = new byte[3];
result[0] = ESC;
result[1] = 45;
result[2] = 2;
return new String(result);
}
//取消下划线(不支持汉字)
public static String UnderlineCancle(){
byte[] result = new byte[3];
result[0] = ESC;
result[1] = 45;
result[2] = 0;
return new String(result);
}
/****************************跳格*******************************/
//设置横向跳格位置
public static String Jump(){
byte[] result = new byte[3];
result[0] = ESC;
result[1] = 68;
result[2] = 0;
return new String(result);
}
/****************************倍数放大*******************************/
//纵向放大两倍(汉字,英文,数字都支持)
public static String longitudinalDouble(){
byte[] result = new byte[3];
result[0] = GS;
result[1] = 33;
result[2] = 1;
return new String(result);
}
//横向放大两倍(汉字,英文,数字都支持)
public static String transverseDouble(){
byte[] result = new byte[3];
result[0] = GS;
result[1] = 33;
result[2] = 16;
return new String(result);
}
//纵向,横向放大两倍(汉字,英文,数字都支持)
public static String bothDouble(){
byte[] result = new byte[3];
result[0] = GS;
result[1] = 33;
result[2] = 17;
return new String(result);
}
//纵向,横向放大取消(汉字,英文,数字都支持)
public static String ZoomCancel(){
byte[] result = new byte[3];
result[0] = GS;
result[1] = 33;
result[2] = 0;
return new String(result);
}
//倍宽,倍高
public static String doubleFont(){
byte[] result = new byte[3];
result[0] = FS;
result[1] = 87;
result[2] = 1;
return new String(result);
}
//取消倍宽,倍高
public static String doubleCancel(){
byte[] result = new byte[3];
result[0] = FS;
result[1] = 87;
result[2] = 0;
return new String(result);
}
//字體
public static String fontA(){
byte[] result = new byte[3];
result[0] = ESC;
result[1] = 77;
result[2] = 0;
return new String(result);
}
public static String fontB(){
byte[] result = new byte[3];
result[0] = ESC;
result[1] = 77;
result[2] = 1;
return new String(result);
}
//字符集
public static String fontji(){
byte[] result = new byte[3];
result[0] = ESC;
result[1] = 82;
result[2] = 15;
return new String(result);
}
//字符
public static String fontzidingyi(){
byte[] result = new byte[5];
result[0] = FS;
result[1] = 50;
result[2] = 1;
result[3] = 1;
result[4] = 12;
return new String(result);
}
//设置汉字字符左右边距
public static String margin1(){
byte[] result = new byte[4];
result[0] = FS;
result[1] = 83;
result[2] = 1;
result[3] = 1;
return new String(result);
}
//设置汉字字符左右边距
public static String margin2(){
byte[] result = new byte[4];
result[0] = FS;
result[1] = 83;
result[2] = 2;
result[3] = 2;
return new String(result);
}
//设置汉字字符左右边距
public static String marginCancle(){
byte[] result = new byte[4];
result[0] = FS;
result[1] = 83;
result[2] = 0;
result[3] = 0;
return new String(result);
}
//设置行间距1
public static String rowSpacing1(){
byte[] result = new byte[3];
result[0] = ESC;
result[1] = 51;
result[2] = 1;
return new String(result);
}
//设置行间距2
public static String rowSpacing2(){
byte[] result = new byte[3];
result[0] = FS;
result[1] = 51;
result[2] = 2;
return new String(result);
}
//设置行间距
public static String rowSpacingCancel(){
byte[] result = new byte[3];
result[0] = FS;
result[1] = 51;
result[2] = 0;
return new String(result);
}
}
将byte[]转化成了String,方便拼接字符串。
下面是测试方法。
package aheiziUtil;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class TestMain {
private static void print(String ip,String printContent) {
Socket socket = null;
try {
socket = new Socket();
socket.connect(new InetSocketAddress(ip, 9100), 4000);
System.out.println("CashierDesk=====小票机连接成功,IP:" + ip);
OutputStream os = socket.getOutputStream();
// 切纸命令
String text = printContent + "\n\n\n\n\n\n";
byte[] CMD_INIT = { 27, 64 };
os.write(CMD_INIT);
os.write(text.getBytes("GB2312"));
final byte[] CMD_CUT = { 0x1D, 0x56, 0x01 };
os.write(CMD_CUT);
System.out.println("CashierDesk=====小票机打印完成,IP:" + ip);
} catch (UnknownHostException e) {
System.out.println("CashierDesk=====小票机连接失败,IP:" + ip);
e.printStackTrace();
} catch (IOException e) {
System.out.println("CashierDesk=====小票机连接失败,IP:" + ip);
e.printStackTrace();
} finally {
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
String ip = "192.168.80.209";
String printContent = "";
printContent += "********************倍数放大********************\n";
printContent += "纵向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.longitudinalDouble();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "横向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.transverseDouble();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.bothDouble();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "********************加粗加粗********************\n";
printContent += "纵向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.longitudinalDouble();
printContent += PrinterCmdUtils.boldOn();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.boldOff();
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "横向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.transverseDouble();
printContent += PrinterCmdUtils.boldOn();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.boldOff();
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.bothDouble();
printContent += PrinterCmdUtils.boldOn();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.boldOff();
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "********************改变字体********************\n";
printContent += "改变字体(仅支持英文,数字)\n";
printContent += PrinterCmdUtils.fontB();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.fontA();
printContent += "\n";
printContent += "纵向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.longitudinalDouble();
printContent += PrinterCmdUtils.fontB();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.fontA();
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "横向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.transverseDouble();
printContent += PrinterCmdUtils.fontB();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.fontA();
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.bothDouble();
printContent += PrinterCmdUtils.fontB();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.fontA();
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "********************反显打印********************\n";
printContent += "纵向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.longitudinalDouble();
printContent += PrinterCmdUtils.reversePrint();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.reverseCancel();
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "横向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.transverseDouble();
printContent += PrinterCmdUtils.reversePrint();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.reverseCancel();
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.bothDouble();
printContent += PrinterCmdUtils.reversePrint();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.reverseCancel();
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "********************汉字间距1*******************\n";
printContent += "纵向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.longitudinalDouble();
printContent += PrinterCmdUtils.margin1();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.marginCancle();
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "横向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.transverseDouble();
printContent += PrinterCmdUtils.margin1();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.marginCancle();
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.bothDouble();
printContent += PrinterCmdUtils.margin1();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.marginCancle();
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "********************汉字间距2*******************\n";
printContent += "纵向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.longitudinalDouble();
printContent += PrinterCmdUtils.margin2();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.marginCancle();
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "横向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.transverseDouble();
printContent += PrinterCmdUtils.margin2();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.marginCancle();
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";
printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)\n";
printContent += PrinterCmdUtils.bothDouble();
printContent += PrinterCmdUtils.margin2();
printContent += "我是中文\nI'm english\n54123456\n";
printContent += PrinterCmdUtils.marginCancle();
printContent += PrinterCmdUtils.ZoomCancel();
printContent += "\n";*/
print(ip, printContent);
}
}
小票打印机指令集封装(支持EPSON指令)的更多相关文章
- C#调用斑马打印机打印条码标签(支持COM、LPT、USB、TCP连接方式和ZPL、EPL、CPCL指令)【转】
原文地址:http://blog.csdn.net/ldljlq/article/details/7338772 在批量打印商品标签时一般都要加上条码或图片,而这类应用大多是使用斑马打印机,所以我也遇 ...
- 让 Odoo POS 支持廉价小票打印机
为了测试 Odoo 在实际业务中的实施,我们开了一家(马上要开第二家分店)猪肉店.由于预算有限,在实施 Odoo PoS 的时候采购了一台价格为 85 元的爱宝热敏打印机,结果连上 Odoo Posb ...
- C#并口热敏小票打印机打印位图包括芯片的写入
下面是打印所需要调用的代码: class LptControl { private string LptStr = "lpt1"; public LptControl(string ...
- ASP.NET页面支持的指令
页面的处理指令 页面指令的处理用于配置执行该页面的运行时环境.在ASP.NET中,指令可以位于页面的任何位置,但良好且常见的习惯是将其置于文件的开始部分.除此,页面指令的名称是不区分大小写的,且指令的 ...
- C# Lpt 并口热敏小票打印机打印位图
class LptControl { private string LptStr = "lpt1"; public LptControl(string l_LPT_Str) { L ...
- 转:C#并口热敏小票打印机打印位图
最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: class LptControl { private s ...
- C# 热敏打印机 小票打印机 打印图片
最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: 因为我们这里主要是打印条形码和二维码,所以以条形码和二维 ...
- C#并口热敏小票打印机打印位图
原文:C#并口热敏小票打印机打印位图 最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: class ...
- c#调用刀片小票打印机
public static bool Print(int orderId, string orderTime) { bool b = true; string cut = ((char)29).ToS ...
随机推荐
- python27+django数据库配置常见问题
mysql缺乏模块,需要安装,建议去http://sourceforge.net/projects/mysql-python/files/mysql-python/下源码编译,或者安装msi文件htt ...
- C++11 多线程
C++11开始支持多线程编程,之前多线程编程都需要系统的支持,在不同的系统下创建线程需要不同的API如pthread_create(),Createthread(),beginthread()等,使用 ...
- Winform後台如何動態修改App.config文件里的內容
以下方法修改的,自己添加的app.config裡面不會顯示出修改的東西. 方法一:通過使用System.Xml.XmlDocument對象的方法進行bin\debug\~.vshost.exe.Con ...
- phpcms学习总结
文件目录结构 根目录 | – api 接口文件目录 | – caches 缓存文件目录 | – configs 系统配置文件目录 | – caches_* 系统缓存目录 | – phpcms phpc ...
- hadoop的simple认证
目前Hadoop的稳定版本为1.2.1,我们的实验就在hadoop-1.2.1上进行 Hadoop 版本:1.2.1 OS 版本: Centos6.4 环境配置 机器名 Ip地址 功能 用户 Hado ...
- 分享一个自己用的Objective-C的Http接连类
很久没有更新博客了,所以分享一个. @protocol HttpListenerDelegate; @interface BaseHttp : NSObject { } @property (nona ...
- HDU-3872 Dragon Ball 线段树+DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3872 题意:有n个龙珠按顺序放在一列,每个龙珠有一个type和一个权值,要求你把这n个龙珠分成k个段, ...
- ld - linker
[ld - linker] NAME ld -- linker SYNOPSIS ld files... [options] [-o outputfile] DESCRIPTION The ld c ...
- 什么是IntelAMT
IntelAMT 全称为INTEL主动管理技术,该技术允许IT经理们远程管理和修复联网的计算机系统,而且实施过程是对于服务对象完全透明的,从而节省了用户的时间和计 算机维护成本.释放出来的iAMT构架 ...
- MAT(3)获取dump文件
方式一:添加启动参数 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=E:\Java\dump 生成的文件例如:java_pid2080.hprof ...