小票打印机指令集封装(支持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 ...
随机推荐
- java中子类与基类变量间的赋值
Java中子类与基类变量间的赋值 子类对象可以直接赋给基类变量. 基类对象要赋给子类对象变量,必须执行类型转换, 其语法是: 子类对象变量=(子类名)基类对象名; 也不能乱转换.如果类型转换失败Jav ...
- jQuery文档加载完毕的几种写法
js中文档加载完毕.一般在body加一个onload事件或者window.onload = function () {} jQuery中有好多写法,平时也不注意,别人一问,还真觉得头大. 下面是我整理 ...
- WebService调用一对多关联关系时出现 死循环:A cycle is detected in...
通过WebService调用一对多关联关系时引起的问题:A cycle is detected in the object graph 具体异常信息: org.apache.cxf.intercept ...
- Windows Server 2003单网卡搭建VPN
Windows Server 2003单网卡搭建VPN 1.打开[控制面板] --> [管理工具] --> [路由和远程访问] 2.鼠标右击你要管理的电脑 在弹出式菜单中选中[配置并启 ...
- js运动 多数据运动 含JSON
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- Make the “Check out” function available in the office document opened with Document ID link
I found a solution to make the “Check out” function available in the office document opened with Doc ...
- 如何判断ios设备是否是高清屏幕
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2f) { CGRect winRect = [[UIScreen m ...
- POJ 2888 Magic Bracelet(Burnside引理,矩阵优化)
Magic Bracelet Time Limit: 2000MS Memory Limit: 131072K Total Submissions: 3731 Accepted: 1227 D ...
- 乱侃c++
就在刚才我感觉c++真的好复杂,函数重载,多态,虚函数,虚函数表,模版,继承等一大坨东西好恶心,c++既然完全支持C语言,当然是把它的优缺点统统接下了,C语言中指针本身并不太难,是C语言的精华,当年刚 ...
- 小巧实用js倒计时
<script type="text/javascript"> var intDiff = parseInt(15); //倒计时总秒数量 functi ...