小票打印机指令集封装(支持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 ...
随机推荐
- LR录制测试脚本
1.录制的业务流程 2.录制脚本 3.查看脚本
- 配置spring管理的bean的作用域
.singleton 在每一个spring Ioc容器中一个bean定义只有一个对象实例.默认情况下会在容器启动时初始化bean,但我们可以指定bean节点的lazy-init = "tru ...
- [转]天龙八部的BillingServer
从字面上看,Billing是计费的,应该处理玩家在线时间或者包月之类.但是天龙八部是免费游戏,不需要算时间来计费.从代码中看,BillingServer也比较简单,它有一个连接到Web服务器,并监听一 ...
- 第三百四十四天 how can I 坚持
三言诗,把自己的心情,想要说的话用三句话诗意的表达出来.像: 烦===>好想睡一觉,待日落,盼天明. 愁====>待到花开花落,闲庭信步,蹋碎一世忧愁. 三句话,可以表达的很好. 老是感觉 ...
- 错误提示:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内 .
错误提示:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内 在做导出数据到EXCEL程序中,出现了错误提示:类型“GridView”的控件“Gr ...
- 关于“未使用GUID分区表”无法安装的解决方案
原帖链接:http://itc.do-johodai.ac.jp/~s0823612/ 原版的Mac不能安装在mbr分区.必须得用GUID分区,其实装在mbr也可以,需要修改两个文件一个是OSInst ...
- [iOS微博项目 - 3.4] - 获取用户信息
github: https://github.com/hellovoidworld/HVWWeibo A.获取用户信息 1.需求 获取用户信息并储存 把用户昵称显示在“首页”界面导航栏的标题上 ...
- 使用timer8秒读取一次方法进行操作
public void TestofTimer() { System.Timers.Timer tt = new System.Timers.Timer(); //获取或设置引发 Elapsed 事件 ...
- Eclipse 和 NetBeans 快捷键即其他常用功能比较
按: 自己用 Eclipse, 常用的也就这些功能, 在用 NetBeans 时, 有些不顺手, 因此列表如下. Eclipse和NetBeans常用快捷键对比: 功能 Eclipse N ...
- VTK序列图像的读取[转][改]
医学图像处理的应用程序中,经常会碰到读取一个序列图像的操作.比如CT.MR等所成的图像都是一个切面一个切面地存储的,医学图像处理程序要处理这些数据,第一步当然是把这些数据从磁盘等外部存储介质中导入内存 ...