<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
一 概述
1 PrinterLibs是Android平台下控制Caysn打印机的jar库
2 PrinterLibs有以下几个公共类
A IO类
包括IO、BLEPrinting、BTPrinting、NETPrinting、USBPrinting
实现基本的Open、Close、Write、Read等功能
IOCallBack提供了Open和Close的回调接口、便于获取当前的连接状况
B 打印类
包括Pos、Label、Page、Canvas
Pos类实现了诸如打印文本、打印条码、打印二维码、打印图片等功能
Label类实现了标签打印功能,需要标签打印机支持
Page类实现了页模式打印功能,需要页模式打印机支持
Canvas类封装了安卓画布函数,使用图片的方式打印,支持所有打印机
C 使用方法
Android代码片段:
Pos mPos = new Pos();
BTPrinting mBt = new BTPrinting();
mPos.Set(mBt);
mBt.SetCallBack(this);
之后启用异步调用:
public class TaskOpenimplements Runnable
{
BTPrinting bt = null;
String address = null;
Context context = null;
public TaskOpen(BTPrinting bt, String address,
Context context)
{
this.bt
this.address
this.context
}
@Override
public void run() {
// TODO Auto-generated method stub
bt.Open(address,context);
}
}
连接成功之后,调用相应的函数即可打印。
二 接口
IO
Write
Syntax
public int Write(byte[] buffer,int offset,int count)
Parameters
buffer
发送缓冲区
offset
从指定偏移开始发送数据
count
要发送的字节数
Return value
如果写入成功,返回成功写入的字节数、如果写入失败,返回-1
Remarks
IO类的Write函数为空实现,始终返回-1
Read
Syntax
public int Read(byte[] buffer,int offset,int count,int timeout)
Parameters
buffer
接收缓冲区
offset
从指定偏移开始存放收到的数据
count
要接收的字节数
timeout
超时毫秒时间
Return value
如果读取成功,返回成功读入的字节数、如果读取失败,返回-1。
Remarks
IO类的Read函数为空实现,始终返回-1
IsOpened
Syntax
public boolean IsOpened()
Parameters
Return value
如果以连接到打印机,返回true、否则,返回false
Remarks
IO类的IsOpened函数为空实现,始终返回false
IOCallBack
处理底层连接的4个类:
BLEPrinting BTPrinting NETPrinting USBPrinting
Open成功时,会调用OnOpen
Open失败时,会调用OnOpenFailed
Close或异常断开时,会调用OnClose
OnOpen
连接成功之后,会调用OnOpen
Syntax
void OnOpen()
Parameters
Return value
Remarks
OnOpenFailed
连接失败,会调用OnOpenFailed
Syntax
void OnOpenFailed()
Parameters
Return value
Remarks
OnClose
连接断开(主动断开或异常中断),会调用OnClose
Syntax
void OnClose()
Parameters
Return value
Remarks
BTPrinting
蓝牙2.0连接、读写封装
Open
连接指定蓝牙打印机
Syntax
public boolean Open(String BTAddress, Context mContext)
Parameters
BTAddress
蓝牙打印机地址:形如00:11:22:33:44:55
mContext
Application Context
Return value
连接成功,返回true、否则,返回false。
Remarks
连接成功之后,会调用回调接口OnOpen,连接失败会调用OnOpenFailed
Listen
连接2.0蓝牙打印机(作为主模式,等待打印机主动上连)
Syntax
public boolean Listen(String BTAddress,int timeout, ContextmContext)
Parameters
BTAddress
蓝牙打印机地址:形如00:11:22:33:44:55,暂不使用
timeout
等待超时毫秒时间
mContext
Application Context
Return value
连接成功,返回true、否则,返回false。
Remarks
连接成功之后,会调用回调接口OnOpen,连接失败会调用OnOpenFailed
Close
关闭连接
Syntax
public void Close()
Parameters
Return value
Remarks
关闭连接,会调用回调接口OnClose,重复Close不会多次调用回调。
Write
通过蓝牙写入数据
Syntax
public int Write(byte[] buffer,int offset,int count)
Parameters
buffer
发送缓冲区
offset
从指定偏移开始发送数据
count
要发送的字节数
Return value
如果写入成功,返回成功写入的字节数、如果写入失败,返回-1
Remarks
Read
读数据
Syntax
public int Read(byte[] buffer,int offset,int count,int timeout)
Parameters
buffer
接收缓冲区
offset
从指定偏移开始存放收到的数据
count
要接收的字节数
timeout
超时毫秒时间
Return value
如果读取成功,返回成功读入的字节数、如果读取失败,返回-1。
Remarks
SkipAvailable
忽略缓冲区中的数据
Syntax
public void SkipAvailable()
Parameters
Return value
Remarks
IsOpened
是否已连接
Syntax
public boolean IsOpened()
Parameters
Return value
返回true,表示已经连接、返回false,表示未连接。
Remarks
IsOpened函数是建立在心跳的基础上,并不能实时获取连接状态。
如果打印机突然关机,IsOpened可能需要几秒钟,才能返回正确的结果。
如果想确定打印机是否已连接,可以使用POS系列函数中的RTQeuryStatus。
SetCallBack
设置回调接口
Syntax
public void SetCallBack(IOCallBack callBack)
Parameters
callBack
回调接口,只有设置了该项,在连接成功或连接断开的时候,才会有回调。
Return value
Remarks
BLEPrinting
蓝牙4.0连接、读写封装
Open
连接指定蓝牙打印机
Syntax
public boolean Open(String BTAddress)
Parameters
BTAddress
蓝牙打印机地址:形如00:11:22:33:44:55
Return value
连接成功,返回true、否则,返回false。
Remarks
连接成功之后,会调用回调接口OnOpen,连接失败会调用OnOpenFailed
Close
关闭连接
Syntax
public void Close()
Parameters
Return value
Remarks
关闭连接,会调用回调接口OnClose,重复Close不会多次调用回调。
Write
通过蓝牙写入数据
Syntax
public int Write(byte[] buffer,int offset,int count)
Parameters
buffer
发送缓冲区
offset
从指定偏移开始发送数据
count
要发送的字节数
Return value
如果写入成功,返回成功写入的字节数、如果写入失败,返回-1
Remarks
蓝牙4.0由于标准限制,速度会比2.0慢不少。
Read
读数据
Syntax
public int Read(byte[] buffer,int offset,int count,int timeout)
Parameters
buffer
接收缓冲区
offset
从指定偏移开始存放收到的数据
count
要接收的字节数
timeout
超时毫秒时间
Return value
如果读取成功,返回成功读入的字节数、如果读取失败,返回-1。
Remarks
SkipAvailable
忽略缓冲区中的数据
Syntax
public void SkipAvailable()
Parameters
Return value
Remarks
IsOpened
是否已连接
Syntax
public boolean IsOpened()
Parameters
Return value
返回true,表示已经连接、返回false,表示未连接。
Remarks
IsOpened可能会有延时。
如果想确定打印机是否已连接,可以使用POS系列函数中的RTQeuryStatus。
SetCallBack
设置回调接口
Syntax
public void SetCallBack(IOCallBack callBack)
Parameters
callBack
回调接口,只有设置了该项,在连接成功或连接断开的时候,才会有回调。
Return value
Remarks
NETPrinting
WIFI底层连接、读写封装
Open
连接指定网络打印机
Syntax
public boolean Open(String IPAddress,int PortNumber)
Parameters
IPAddress
打印机IP地址:可以在打印机自检页中获取,打印机默认IP:192.168.1.87
PortNumber
打印机端口号:固定为9100
Return value
连接成功,返回true、否则,返回false。
Remarks
连接成功之后,会调用回调接口OnOpen,连接失败会调用OnOpenFailed
Close
关闭连接
Syntax
public void Close()
Parameters
Return value
Remarks
关闭连接,会调用回调接口OnClose,重复Close不会多次调用回调。
Write
通过网口写入数据
Syntax
public int Write(byte[] buffer,int offset,int count)
Parameters
buffer
发送缓冲区
offset
从指定偏移开始发送数据
count
要发送的字节数
Return value
如果写入成功,返回成功写入的字节数、如果写入失败,返回-1
Remarks
如果无线路由器信号不好,或网络环境不佳,可能会造成卡顿。正常情况下,打印巨量数据都不会有问题。
Read
读数据
Syntax
public int Read(byte[] buffer,int offset,int count,int timeout)
Parameters
buffer
接收缓冲区
offset
从指定偏移开始存放收到的数据
count
要接收的字节数
timeout
超时毫秒时间
Return value
如果读取成功,返回成功读入的字节数、如果读取失败,返回-1。
Remarks
SkipAvailable
忽略缓冲区中的数据
Syntax
public void SkipAvailable()
Parameters
Return value
Remarks
IsOpened
是否已连接
Syntax
public boolean IsOpened()
Parameters
Return value
返回true,表示已经连接、返回false,表示未连接。
Remarks
IsOpened函数是建立在心跳的基础上,并不能实时获取连接状态。
如果打印机突然关机,IsOpened可能需要几秒钟,才能返回正确的结果。
如果想确定打印机是否已连接,可以使用POS系列函数中的RTQeuryStatus。
USBPrinting
USB底层连接、读写封装
Open
连接指定USB打印机
Syntax
public boolean Open(UsbManager manager, UsbDevice device)
Parameters
manager
UsbManager
使用(UsbManager) getSystemService(Context.USB_SERVICE)获得
device
UsbDevice
通过枚举USB设备获得UsbDevice(mUsbManager.getDeviceList())
Return value
连接成功,返回true、否则,返回false。
Remarks
连接成功之后,会调用回调接口OnOpen,连接失败会调用OnOpenFailed
Close
关闭连接
Syntax
public void Close()
Parameters
Return value
Remarks
关闭连接,会调用回调接口OnClose,重复Close不会多次调用回调。
Write
通过USB写入数据
Syntax
public int Write(byte[] buffer,int offset,int count)
Parameters
buffer
发送缓冲区
offset
从指定偏移开始发送数据
count
要发送的字节数
Return value
如果写入成功,返回成功写入的字节数、如果写入失败,返回-1
Remarks
USB发送数据速度最快最稳定,建议使用USB进行打印。
Read
读数据
Syntax
public int Read(byte[] buffer,int offset,int count,int timeout)
Parameters
buffer
接收缓冲区
offset
从指定偏移开始存放收到的数据
count
要接收的字节数
timeout
超时毫秒时间
Return value
如果读取成功,返回成功读入的字节数、如果读取失败,返回-1。
Remarks
SkipAvailable
忽略缓冲区中的数据
Syntax
public void SkipAvailable()
Parameters
Return value
Remarks
IsOpened
是否已连接
Syntax
public boolean IsOpened()
Parameters
Return value
返回true,表示已经连接、返回false,表示未连接。
Remarks
IsOpened函数是建立在心跳的基础上,并不能实时获取连接状态。
如果打印机突然关机,IsOpened可能需要几秒钟,才能返回正确的结果。
如果想确定打印机是否已连接,可以使用POS系列函数中的RTQeuryStatus。
Pos
POS通过持有一个IO对象来与打印机通信
使用Set(IO)即可设置POS持有的IO对象
后续一系列指令,都是通过指定IO传达
Set
指定IO对象
Syntax
public void Set(IO io)
Parameters
io
需要使用的IO对象
Return value
Remarks
调用该函数,将一个底层读写类绑定到Pos这个上层逻辑处理类。
GetIO
获取当前的IO对象
Syntax
public IO GetIO()()
Parameters
Return value
当前IO对象
Remarks
POS_PrintPicture
打印图片
Syntax
public void POS_PrintPicture(Bitmap mBitmap, int nWidth, int nBinaryAlgorithm, int nCompressMethod)
Parameters
mBitmap
需要打印的位图
nWidth
需要打印的宽度
如果nWidth和Bitmap的宽度不一致,会等比例缩放到nWidth宽
2寸打印机(58mm打印机)最大宽度不超过384点
3寸打印机(80mm打印机)最大宽度不超过576点
nBinaryAlgorithm
二值化算法
0 使用抖动算法,对彩色图片有较好的效果。
1 使用平均阀值算法,对文本类图片有较好的效果
nCompressMethod
压缩算法
0 不使用压缩算法
1 使用压缩算法
Return value
Remarks
打印图片使用抖动算法,对彩色图片打印效果较好,打印的图片有灰阶的效果。
POS_S_TextOut
按照一定的格式打印字符串
Syntax
public void POS_S_TextOut(String pszString,int nOrgx, int nWidthTimes,
int nHeightTimes, int nFontType, int nFontStyle)
Parameters
pszString
需要打印的字符串
nOrgx
指定 X 方向(水平)的起始点位置离左边界的点数。
2寸打印机一行384点,3寸打印机一行576点。
nWidthTimes
指定字符的宽度方向上的放大倍数。
可以为 0到1。
nHeightTimes
指定字符高度方向上的放大倍数。
可以为 0 到 1。
nFontType
指定字符的字体类型。
(0x00 标准ASCII 12x24)
(0x01 压缩ASCII 9x17)
nFontStyle
指定字符的字体风格。可以为以下列表中的一个或若干个。
(0x00 正常)
(0x08 加粗)
(0x80 1点粗的下划线)
(0x100 2点粗的下划线)
(0x200 倒置、只在行首有效)
(0x400 反显、黑底白字)
(0x1000每个字符顺时针旋转 90度)
Return value
Remarks
POS_S_SetBarcode
打印条码
Syntax
public void POS_S_SetBarcode(String strCodedata,int nOrgx,int nType,
int nWidthX, int nHeight, int nHriFontType,
int nHriFontPosition)
Parameters
strCodedata
需要打印的条码的字符串
部分条码有格式要求,请按照条码规范打印条码
nOrgx
指定 X 方向(水平)的起始点位置离左边界的点数。
2寸打印机一行384点,3寸打印机一行576点。
nType
指定条码的类型。
可以为以下列表中所列值之一。
Value | Meaning |
0x41 | UPC-A |
0x42 | UPC-C |
0x43 | JAN13(EAN13) |
0x44 | JAN8(EAN8) |
0x45 | CODE39 |
0x46 | ITF |
0x47 | CODEBAR |
0x48 | CODE93 |
0x49 | CODE 128 |
nWidthX
指定条码的基本元素宽度
范围:[2,6]
nHeight
指定条码的高度点数
可以为 1 到 255
nHriFontType
指定 HRI(Human Readable Interpretation)字符的字体类型。
可以为以下列表中所列值之一。
Value | Meaning |
0x00 | 标准ASCII |
0x01 | 压缩ASCII |
nHriFontPosition
指定HRI(Human Readable Interpretation)字符的位置。
可以为以下列表中所列值之一。
Value | Meaning |
0x00 | 不打印 |
0x01 | 只在条码上方打印 |
0x02 | 只在条码下方打印 |
0x03 | 条码上、下方都打印 |
Return value
Remarks
如果条码太宽超出打印机最大打印宽度,则条码不会被打印。
如果条码格式有误,条码也不会打印。
POS_S_SetQRcode
打印二维码
Syntax
public void POS_S_SetQRcode(String strCodedata,int nWidthX,
int nVersion, int nErrorCorrectionLevel)
Parameters
strCodedata
二维码字符串
nWidthX
二维码每个模块的单元宽度,[1,16]
适当设置模块宽度,可以使得二维码看起来更漂亮
nVersion
二维码版本大小,该值和二维码大小相关。
设置为0自动计算二维码版本大小。
如果希望二维码大小固定不变,请设置该值为合适的值。
nErrorCorrectionLevel
纠错等级。
[1,4]
Return value
Remarks
POS_FeedLine
走纸一行
Syntax
public void POS_FeedLine()
Parameters
Return value
Remarks
POS_S_Align
设置对齐方式
Syntax
public void POS_S_Align(int align)
Parameters
Align
设置对其方式
(0 左对齐)
(1 居中对齐)
(2 右对齐)
Return value
Remarks
POS_SetLineHeight
设置行高
Syntax
public void POS_SetLineHeight(int nHeight)
Parameters
nHeight
行高 (0,255]
Return value
Remarks
POS_Reset
复位打印机(软件复位)
Syntax
public void POS_Reset()
Parameters
Return value
Remarks
POS_SetMotionUnit
设置打印机的移动单位
Syntax
public void POS_SetMotionUnit(int nHorizontalMU,int nVerticalMU)
Parameters
nHorizontalMU
把水平方向上的移动单位设置为 25.4 / nHorizontalMU毫米。
nVerticalMU
把垂直方向上的移动单位设置为 25.4 / nVerticalMU毫米。
Return value
Remarks
POS_S_SetAreaWidth
设置标准模式下的打印区域宽度
Syntax
public void POS_S_SetAreaWidth(int nWidth)
Parameters
nWidth
指定打印区域的宽度
Return value
Remarks
POS_CutPaper
切纸
Syntax
public void POS_CutPaper()
Parameters
Return value
Remarks
只对带切刀的机器有效
POS_Beep
蜂鸣器鸣叫
Syntax
public void POS_Beep(int nBeepCount,int nBeepMillis)
Parameters
nBeepCount
鸣叫次数
nBeepMillis
每次鸣叫的时间ms
Return value
Remarks
POS_KickDrawer
打开钱箱
Syntax
public void POS_KickDrawer(int nDrawerIndex,int nPulseTime)
Parameters
nDrawerIndex
0表示:脉冲发送到钱箱输出引脚2
1表示:脉冲发送到钱箱输出引脚5
nPulseTime
脉冲时间
高电平时间:nPulseTime*2ms
低电平时间:nPulseTime*2ms
Return value
Remarks
POS_SetPrintSpeed
设置打印速度 注:如果打印速度大于发送速度,打印会有卡顿感。
Syntax
public void POS_SetPrintSpeed(int nSpeed)
Parameters
nSpeed
打印速度(mm/s)
Return value
Remarks
将打印速度设置为数据发送速度,可以是打印效果达到最好。
可以通过打印一张单据,测量单据的长度和所用时间,用长度/时间,即可。
POS_QueryStatus
查询状态
打印机忙时,该命令会一直阻塞
返回的状态保存在status中
Syntax
public boolean POS_QueryStatus(byte[] status,int timeout,int MaxRetry)
Parameters
status
status = new byte[1] 该值目前无意义
timeout
单次查询状态的超时毫秒时间
MaxRetry
失败重试次数
Return value
返回true,表明打印机状态OK。否则,打印机未联机或打印机正忙。
Remarks
POS_QueryStatus
实时状态查询
无论打印机处于何种状态,只要打印机收到该命令就立刻回送状态
返回的状态保存在status中
Syntax
public boolean POS_RTQueryStatus(byte[] status,int type,int timeout,
int MaxRetry)
Parameters
status
status = new byte[1]
timeout
type可取值 [1,4]
1:打印机状态
位 | 0/1 | 十六进制码 | 十进制码 | 功能 |
0 | 0 | 00 | 0 | 固定为0 |
1 | 1 | 02 | 2 | 固定为1 |
2 | 0 | 00 | 0 | 一个或两个钱箱打开 (没有钱箱的机器该位固定为零) |
1 | 04 | 4 | 两个钱箱都关闭 | |
3 | 0 | 00 | 0 | 联机 |
1 | 08 | 8 | 脱机 | |
4 | 1 | 10 | 16 | 固定为1 |
5,6 |
| -- | -- | 未定义 |
7 | 0 | 00 | 00 | 纸已撕走 |
1 | 80 | 96 | 纸未撕走 |
2:传送脱机状态
位 | 0/1 | 十六进制码 | 十进制码 | 功能 |
0 | 0 | 00 | 0 | 固定为0 |
1 | 1 | 02 | 2 | 固定为1 |
2 | 0 | 00 | 0 | 上盖关 |
1 | 04 | 4 | 上盖开 | |
3 | 0 | 00 | 0 | 未按走纸键 |
1 | 08 | 8 | 按下走纸键 | |
4 | 1 | 10 | 16 | 固定为1 |
5 | 0 | 00 | 0 | 打印机不缺纸 |
1 | 20 | 32 | 打印机缺纸 | |
6 | 0 | 00 | 00 | 没有出错情况 |
1 | 40 | 64 | 有错误情况 | |
7 | 0 | 00 | 0 | 固定为0 |
3:传送错误状态
位 | 0/1 | 十六进制码 | 十进制码 | 功能 |
0 | 0 | 00 | 0 | 固定为0 |
1 | 1 | 02 | 2 | 固定为1 |
2 |
| -- | -- | 未定义 |
3 | 0 | 00 | 0 | 切刀无错误 |
1 | 08 | 8 | 切刀有错误 | |
4 | 1 | 10 | 16 | 固定为1 |
5 | 0 | 00 | 0 | 无不可恢复错误 |
1 | 20 | 32 | 有不可恢复错误 | |
6 | 0 | 00 | 00 | 打印头温度和电压正常 |
1 | 40 | 64 | 打印头温度或电压超出范围 | |
7 | 0 | 00 | 0 | 固定为0 |
4:传送纸传感器状态
位 | 0/1 | 十六进制码 | 十进制码 | 功能 |
0 | 0 | 00 | 0 | 固定为0 |
1 | 1 | 02 | 2 | 固定为1 |
2,3 | 0 | 00 | 0 | 有纸 |
1 | 0C | 12 | 纸将近 | |
4 | 1 | 10 | 16 | 固定为1 |
5,6 | 0 | 00 | 0 | 有纸 |
1 | 60 | 96 | 纸尽 | |
7 | 0 | 00 | 0 | 固定为0 |
MaxRetry
失败重试次数
Return value
返回true,表明打印机通讯正常,查询的状态保存在status中。
Remarks
POS_TicketSucceed
发送单据查询命令
Syntax
public boolean POS_TicketSucceed(int dwSendIndex,int timeout)
Parameters
dwSendIndex
单据索引:
可以从1开始依次递增,目前并无实际意义
timeout
等待单据打印完成的超时ms时间
Return value
单据打印完成,并且没有因为缺纸而中断,则返回true。
否则,没有查到状态,或返回因为缺纸或其他错误导致打印中断,则返回false。
Remarks
为了保证单据打印的可靠性,请每批次打印任务完成之后,调用一次该函数确认单据打印结果。
Label
Label通过持有一个IO对象来与打印机通信
使用Set(IO)即可设置Label持有的IO对象
后续一系列指令,都是通过指定IO传达
Set
指定IO对象
Syntax
public void Set(IO io)
Parameters
io
需要使用的IO对象
Return value
Remarks
调用该函数,将一个底层读写类绑定到Label这个上层逻辑处理类。
GetIO
获取当前的IO对象
Syntax
public IO GetIO()
Parameters
Return value
当前IO对象
Remarks
PageBegin
描述: 指示一个 Page 页面的开始,并设置Page页的大小,参考点坐标和页面旋转角度。
Syntax
public void PageBegin(int startx,int starty,int width,int height,
int rotate)
Parameters
startx
页面起始点x坐标
starty
页面起始点y坐标
width
页面页宽
startx + width的范围为[1,384]。编写SDK的时候,该打印机一行的打印点数为384点。如果你不确定每行打印点数,请参考打印机规格书。一般来说有384,576,832这三种规格。
height
页面页高
starty + height的范围[1,936]。编写SDK的时候,限制是936,但是这个值并不确定,这和打印机的资源有关。即便如此,也不建议把页高设置过大。建议页宽和页高设置和标签纸匹配即可。
rotate
页面旋转。 rotate的取值范围为{0,1}。为0,页面不旋转打印,为1,页面旋转90度打印。
Return value
Remarks
PageEnd
描述: 指示一个 Page 页面的结束。
Syntax
public void PageEnd()
Parameters
Return value
Remarks
PagePrint
描述: 将 Page 页上的内容打印到标签纸上。
Syntax
public void PagePrint(int num)
Parameters
num
打印的次数,1-255。
Return value
Remarks
PageFeed
描述: 走纸到标签缝隙处。
Syntax
public void PageFeed()
Parameters
Return value
Remarks
DrawPlainText
描述: 在 Page 页面上指定位置绘制文本。只能单行打印。
Syntax
public void DrawPlainText(int startx,int starty,int font,int style,
byte[] str)
Parameters
startx
定义文本起始位置 x坐标,取值范围:[0, Page_Width-1]
starty
定义文本起始位置 y坐标,取值范围:[0, Page_Height-1]
font
选择字体,有效值范围为{16, 24, 32, 48, 64, 80, 96},当前打印机只可以使用24。
style
字符风格。
数据位定义
0 加粗标志位:置 1字体加粗,清零则字体不加粗。
1 下划线标志位:置 1文本带下划线,清零则无下划线。
2 反白标志位:置 1文本反白(黑底白字),清零不反白。
3 删除线标志位:置 1文本带删除线,清零则无删除线。
[5,4] 旋转标志位:00旋转0° ;
01 旋转 90°;
10 旋转 180°;
11 旋转 270°;
[11,8] 字体宽度放大倍数;
[15,12] 字体高度放大倍数;
str
字符串数据流
Return value
Remarks
DrawLine
描述: 在 Page 页指定两点间绘制一条直线段。
Syntax
public void DrawLine(int startx,int starty,int endx,int endy,int width,
int color)
Parameters
startx
直线段起始点 x坐标值,取值范围:[0, Page_Width-1]。
starty
直线段起始点 y坐标值,取值范围:[0,Page_Height-1]。
endx
直线段终止点 x坐标值,取值范围:[0, Page_Width-1]。
endy
直线段终止点 y坐标值,取值范围:[0,Page_Height-1]。
width
直线段线宽,取值范围:[1,Page_Height-1]。
color
直线段颜色,取值范围:{0, 1}。
当 Color为1时,线段为黑色。
当 Color为0时,线段为白色。
Return value
Remarks
DrawBox
描述: 在 Page 页指定位置绘制指定大小的矩形框。
Syntax
public void DrawBox(int left,int top,int right,int bottom,
int borderwidth, int bordercolor)
Parameters
left
矩形框左上角 x坐标值,取值范围:[0, Page_Width-1]。
top
矩形框左上角 y坐标值。取值范围:[0, Page_Height-1]。
right
矩形框右下角 x坐标值。取值范围:[0, Page_Width-1]。
bottom
矩形框右下角 y坐标值。取值范围:[0, Page_Height-1]。
borderwidth
矩形框线宽。
bordercolor
矩形框线颜色,曲直范围{0,1}。当Color = 1时,绘制黑色矩形宽,Color = 0时,绘制白色矩形框。
Return value
Remarks
DrawRectangel
描述: 在 Page 页指定位置绘制矩形块。
Syntax
public void DrawRectangel(int left,int top,int right,int bottom,
int color)
Parameters
left
矩形块左上角 x坐标值,取值范围:[0, Page_Width-1]。
top
矩形块左上角 y坐标值。取值范围:[0, Page_Height-1]。
right
矩形块右下角 x坐标值。取值范围:[0, Page_Width-1]。
bottom
矩形块右下角 y坐标值。取值范围:[0, Page_Height-1]。
color
矩形块颜色,取值范围:{0, 1}。当Color为1时,矩形块为黑色。当Color为0时,矩形块为白色。
Return value
Remarks
DrawBarcode
描述: 在 Page 页指定位置绘制一维条码。
Syntax
public void DrawBarcode(int startx,int starty,int type,int height,
int unitwidth, int rotate, byte[] str)
Parameters
startx
条码左上角 x坐标值,取值范围:[0, Page_Width-1]。
starty
条码左上角 y坐标值,取值范围:[0, Page_Height-1]。
type
标识条码类型,取值范围:[0, 29]。 各值定义如下:
type类型长度条码值范围(十进制)
0 UPC-A1148-57
1 UPC-E648-57
2 EAN131248-57
3 EAN8748-57
4 CODE391- 48-57,65-90,32,36,37,43,45,46,47
5 I251-偶数-57
6 CODABAR1- 48-57,65-68,36,43,45,46,47,58
7 CODE931-2550-127
8CODE1282-2550-127
9 CODE11
10 MSI
11 "128M", //可以根据数据切换编码模式-> !096- !105
12 "EAN128", //自动切换编码模式
13 "25C",// 25C Check use mod 10->奇数先在前面补0,10的倍数-[(奇数位的数字之和<从左至右)+(偶数位数字之和)*3]
14"39C", //39碼的檢查碼必須搭配「檢查碼相對值對照表」,如表所示,將查出的相對值累加後再除以43,得到的餘數再查出相對的編碼字元,即為檢查碼字元。
15 "39", //Full ASCII 39 Code,特殊字符用两个可表示的字来表示, 39C同样是包含Full ASCII,注意宽窄比处理
16 "EAN13+2", //附加码与主码间隔7-12单位,起始为1011间隔为01,(_0*10+_1) Mod 4-> 0--AA 1--AB 2--BA 3--BB
17 "EAN13+5", //附加码部分同上,模式((_0+_2+_4)*3+(_1+_3)*9) mod 10->"bbaaa", "babaa","baaba", "baaab", "abbaa", "aabba", "aaabb", "ababa", "abaab","aabab
18 "EAN8+2", //同EAN13+2
19 "EAN8+5", //同EAN13+5
20"POST", //详见规格说明,是高低条码,不是宽窄条码
21 "UPCA+2", //附加码见EAN
22"UPCA+5", //附加码见EAN
23 "UPCE+2", //附加码见EAN
24 "UPCE+5", //附加码见EAN
25 "CPOST", //测试不打印。。。
26 "MSIC", //将检查码作为数据再计算一次检查码
27 "PLESSEY", //测试不打印。。。
28 "ITF14", // 25C变种, 第一个数前补0,检查码计算时需扣除最后一个数,但仍填充为最尾端
29 "EAN14"
height
定义条码高度。
unitwidth
定义条码码宽。取值范围:[1, 4]。
各值定义如下:
Width取值 多级条码单位宽度(mm)二进制条码窄线条宽度 二进制条码宽线条宽度
1 0.125 0.125 0.25
2 0.25 0.25 0.50
3 0.375 0.375 0.75
4 0.50 0.50 1.0
rotate
表示条码旋转角度。取值范围:[0, 3]。各值定义如下:
Rotate取值 定义
0 条码不旋转绘制。
1 条码旋转90°绘制。
2 条码旋转 180°绘制。
3 条码旋转 270°绘制。
str
文本字符数据流
Return value
Remarks
DrawQRCode
描述: 在 Page 页指定位置绘制 QRCode 码。
Syntax
public void DrawQRCode(int startx,int starty,int version,int ecc,
int unitwidth, int rotate, byte[] str)
Parameters
startx
QRCode 码左上角 x 坐标值,取值范围:[0,Page_Width-1]。
starty
QRCode 码左上角 y 坐标值,取值范围:[0, Page_Height-1]。
version
指定字符版本。取值范围:[0,20]。当version为0时,打印机根据字符串长度自动计算版本号。
ecc
指定纠错等级。取值范围:[1, 4]。各值定义如下:
ECC纠错等级
1 L:7%,低纠错,数据多。
2M:15%,中纠错
3 Q:优化纠错
4 H:30%,最高纠错,数据少。
unitwidth
QRCode 码码块,取值范围:[1, 4]。各值定义与一维条码指令输入参数UniWidth相同。
rotate
QRCode 码旋转角度,取值范围:[0, 3]。各值定义与一维条码指令输入参数Rotate相同。
str
QRCode 文本字符数据流
Return value
Remarks
DrawPDF417
描述: 在 Page 页指定位置绘制 PDF417 条码 。
Syntax
public void DrawPDF417(int startx,int starty,int colnum,int lwratio,
int ecc, int unitwidth,int rotate,byte[] str)
Parameters
startx
PDF417 码左上角 x 坐标值,取值范围:[0,Page_Width-1]。
starty
PDF417 码左上角 y 坐标值,取值范围:[0, Page_Height-1]。
colnum
ColNum 为列数,表述每行容纳多少码字。一个码字为17*UnitWidth个点。行数由打印机自动产生,行数范围限定为3~90。ColNum的取值范围:[1,30]。
lwratio
宽高比。取值范围:[3,5]。
ecc
纠错等级,取值范围:[0. 8]。
ecc取值 纠错码数 可存资料量(字节)
0 2 1108
1 4 1106
2 8 1101
3 16 1092
4 32 1072
5 64 1024
6 128 957
7 256 804
8 512 496
unitwidth
PDF417 码码块,取值范围:[1, 3]。各值定义与一维条码指令输入参数UniWidth相同。
rotate
PDF417 码旋转角度,取值范围:[0, 3]。各值定义与一维条码指令输入参数Rotate相同。
str
PDF417 文本字符数据流。
Return value
Remarks
DrawBitmap
描述: 在 Page 页指定位置绘制位图。
Syntax
public void DrawBitmap(int startx,int starty,int width,int height,
int style, byte[] pdata)
Parameters
startx
位图左上角 x坐标值,取值范围:[0, Page_Width]。
starty
位图左上角 y坐标值,取值范围:[0, Page_Height]。
width
位图的像素宽度。
height
位图的像素高度。
style
位图打印特效,各位定义如下:
位 定义
0 反白标志位,置 1位图反白打印,清零正常打印。
[2:1] 旋转标志位:
00旋转 0° ;
01 旋转 90°;
10 旋转 180°;
11 旋转 270°
[7:3] 保留。
[11:8]位图宽度放大倍数。
[12:15]位图高度放大倍数。
pdata
位图的点阵数据。
Return value
Remarks
DrawBitmap
描述: 在 Page 页指定位置绘制位图。
Syntax
DrawBitmap(int startx,int starty,int dstWidth,int dstHeight,int style, Bitmap mBitmap,int nBinaryAlgorithm)
Parameters
startx
位图左上角 x坐标值,取值范围:[0, Page_Width]。
starty
位图左上角 y坐标值,取值范围:[0, Page_Height]。
dstWidth
要打印的像素宽度。
dstHeight
要打印的像素高度。
style
同上
mBitmap
要打印的位图
nBinaryAlgorithm
二值化算法,彩色图片无法直接打印,需要二值化为黑白图像才可以打印。
0 使用抖动算法
1 使用平均阀值算法
Return value
Remarks
Page
Page通过持有一个IO对象来与打印机通信
使用Set(IO)即可设置Page持有的IO对象
后续一系列指令,都是通过指定IO传达
Set
指定IO对象
Syntax
public void Set(IO io)
Parameters
io
需要使用的IO对象
Return value
Remarks
调用该函数,将一个底层读写类绑定到Page这个上层逻辑处理类。
GetIO
获取当前的IO对象
Syntax
public IO GetIO()
Parameters
Return value
当前IO对象
Remarks
PageEnter
选择页模式
Syntax
public boolean PageEnter()
Parameters
Return value
如果指令写入成功,返回true。否则,返回false。
Remarks
PagePrint
页模式下打印页面内容
Syntax
public boolean PagePrint()
Parameters
Return value
如果指令写入成功,返回true。否则,返回false。
Remarks
PageExit
退出页模式
Syntax
public boolean PageExit()
Parameters
Return value
如果指令写入成功,返回true。否则,返回false。
Remarks
SetPrintArea
页模式下设置打印区域
Syntax
public boolean SetPrintArea(int left,int top,int right,int bottom,int direction)
Parameters
left
打印区域左上角x坐标
top
打印区域左上角y坐标
right
打印区域右下角x坐标
bottom
打印区域右下角y坐标
direction
打印区域方向
direction | 打印方向 | 起始位置 |
0 | 自左向右 | 左上角(图中的A) |
1 | 自下向上 | 左下角(图中的B) |
2 | 自右向左 | 右下角(图中的C) |
3 | 自上向下 | 右上角(图中的D) |
Return value
如果指令写入成功,返回true。否则,返回false。
Remarks
下图展示了打印区域的概念
DrawText
画文本
Syntax
public boolean DrawText(String pszString,int x,int y,int nWidthScale,int nHeightScale,int nFontType,int nFontStyle)
Parameters
pszString
要打印的内容。
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x | 含义 |
-1 | 左对齐 |
-2 | 居中对齐 |
-3 | 右对齐 |
大于等于0 | 横坐标 |
y
指定垂直方向的起始点位置离打印区域上边界的点数。(纵坐标)
nWidthScale
指定宽度放大倍数
nHeightScale
指定高度放大倍数
nFontType
字体类型
0 标准字体
1 压缩字体
nFontStyle
指定字体风格,可以为下表中的一个或者若干个(相加即可)
Value | Meaning |
0x00 | 正常 |
0x08 | 加粗 |
0x100 | 下划线 |
0x200 | 倒置(只在行首有效) |
0x400 | 反显(黑底白字) |
Return value
如果指令写入成功,返回true。否则,返回false。
Remarks
页模式Draw函数并不立刻打印,只是填在页面中,直到调用了PagePrint,才开始打印。
DrawBarcode
画条码
Syntax
public boolean DrawBarcode(String pszString,int x,int y,int nBarcodeUnitWidth,int nBarcodeHeight,int nHriFontType,int nHriFontPosition,int nBarcodeType)
Parameters
pszString
条码内容
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x | 含义 |
-1 | 左对齐 |
-2 | 居中对齐 |
-3 | 右对齐 |
大于等于0 | 横坐标 |
y
指定垂直方向的起始点位置离打印区域上边界的点数。(纵坐标)
nBarcodeUnitWidth
指定条码的基本元素宽度。
可以为以下列表中所列值(n)之一。
n | 单基本模块宽度 | 双基本模块宽度(离散型) | |
窄元素宽度 | 宽元素宽度 | ||
2 | 0.25mm | 0.25mm | 0.625mm |
3 | 0.375mm | 0.375mm | 1.0mm |
4 | 0.5mm | 0.5mm | 1.25mm |
5 | 0.625mm | 0.625mm | 1.625mm |
6 | 0.75mm | 0.75mm | 1.875mm |
nBarcodeHeight
条码高度
nHriFontType
指定 HRI(Human Readable Interpretation)字符的字体类型。
可以为以下列表中所列值之一。
Value | Meaning |
0x00 | 标准ASCII |
0x01 | 压缩ASCII |
nHriFontPosition
指定HRI(Human Readable Interpretation)字符的位置。
可以为以下列表中所列值之一。
Value | Meaning |
0x00 | 不打印 |
0x01 | 只在条码上方打印 |
0x02 | 只在条码下方打印 |
0x03 | 条码上、下方都打印 |
nBarcodeType
可以为以下列表中所列值之一。
Value | Meaning |
0x41 | UPC-A |
0x42 | UPC-C |
0x43 | JAN13(EAN13) |
0x44 | JAN8(EAN8) |
0x45 | CODE39 |
0x46 | ITF |
0x47 | CODEBAR |
0x48 | CODE93 |
0x49 | CODE 128 |
Return value
如果指令写入成功,返回true。否则,返回false。
Remarks
!!!时间比较赶,条码的对齐还没有做进去。下一个版本会加上。
DrawQRCode
画二维码
Syntax
public boolean DrawQRCode(String pszString,int x,int y,int nQRCodeUnitWidth,int nVersion,int nEcLevel)
Parameters
pszString
二维码文本
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x | 含义 |
-1 | 左对齐 |
-2 | 居中对齐 |
-3 | 右对齐 |
大于等于0 | 横坐标 |
y
指定垂直方向的起始点位置离打印区域上边界的点数。(纵坐标)
nQRCodeUnitWidth
QR码单元宽度,范围[1,16]。
QR码单元宽度越大,QR码越大。
nVersion
QR码版本。0表示自动计算版本。
QR码版本越大,能编码的字符就越多,QR码也越大。
nEcLevel
QR码纠错等级。[1,4]
Return value
如果指令写入成功,返回true。否则,返回false。
Remarks
DrawBitmap
画Bitmap位图
Syntax
public boolean DrawBitmap(Bitmap mBitmap,int x,int y,int dwWidth,int dwHeight,int nBinaryAlgorithm)
Parameters
mBitmap
位图
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x | 含义 |
-1 | 左对齐 |
-2 | 居中对齐 |
-3 | 右对齐 |
大于等于0 | 横坐标 |
y
指定垂直方向的起始点位置离打印区域上边界的点数。(纵坐标)
dwWidth
要打印的宽度
dwHeight
要打印的高度
nBinaryAlgorithm
二值化算法
0 使用抖动算法,对彩色图片有较好的效果。
1 使用平均阀值算法,对文本类图片有较好的效果
Return value
如果指令写入成功,返回true。否则,返回false。
Remarks
Canvas
Canvas通过持有一个IO对象来与打印机通信
使用Set(IO)即可设置Canvas持有的IO对象
后续一系列指令,都是通过指定IO传达
Set
指定IO对象
Syntax
public void Set(IO io)
Parameters
io
需要使用的IO对象
Return value
Remarks
调用该函数,将一个底层读写类绑定到Canvas这个上层逻辑处理类。
GetIO
获取当前的IO对象
Syntax
public IO GetIO()
Parameters
Return value
当前IO对象
Remarks
CanvasBegin
初始化指定宽高的画布。后续画图都在此画布范围内展开。
Syntax
public void CanvasBegin(int width,int height)
Parameters
width
画布宽度(像素为单位,不超过打印机可打印宽度。建议58毫米打印机使用384,80毫米打印机使用576)
height
画布高度
Return value
Remarks
CanvasEnd
结束该画布。结束之后,只可以调用CanvasPrint进行打印操作。不可做其他操作。
Syntax
public void CanvasEnd()
Parameters
Return value
Remarks
CanvasPrint
打印画布内容
Syntax
public void CanvasPrint(int nBinaryAlgorithm,int nCompressMethod)
Parameters
nBinaryAlgorithm
二值化算法
0 使用抖动算法,对彩色图片有较好的效果。
1 使用平均阀值算法,对文本类图片有较好的效果
nCompressMethod
压缩算法
0 不使用压缩算法
1 使用压缩算法
Return value
Remarks
SetPrintDirection
设置打印区域方向
Syntax
public void SetPrintDirection(int direction)
Parameters
direction
0 自左向右,
1 自下向上,
2自右向左,
3自上向下
Return value
Remarks
DrawText
画文本到画布指定位置
Syntax
public void DrawText(String text,float x,float y,float rotation, Typeface typeface,float textSize,int nFontStyle)
Parameters
text
文本内容
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x | 含义 |
-1 | 左对齐 |
-2 | 居中对齐 |
-3 | 右对齐 |
大于等于0 | 横坐标 |
y
指定垂直方向的起始点位置离打印区域上边界的点数。(纵坐标)
支持上对齐,居中,下对齐
传入y见下表
y | 含义 |
-1 | 上对齐 |
-2 | 居中对齐 |
-3 | 下对齐 |
大于等于0 | 纵坐标 |
rotation
旋转角度(顺时针方向)
typeface
字体类型
textSize
字体大小
nFontStyle
字体风格
0x00 普通
0x08 加粗
0x80 下划线
Return value
Remarks
DrawLine
画一条线段
Syntax
public void DrawLine(float startX,float startY,float stopX,float stopY)
Parameters
startX
线段起点横坐标
startY
线段起点纵坐标
stopX
线段终点横坐标
stopY
线段终点纵坐标
Return value
Remarks
DrawBox
画方框(方框线条粗细为1个像素点)
Syntax
public void DrawBox(float left,float top,float right,float bottom)
Parameters
left
矩形框左上角横坐标
top
矩形框左上角纵坐标
right
矩形框右下角横坐标
bottom
矩形框右下角纵坐标
Return value
Remarks
DrawRect
画矩形
Syntax
public void DrawRect(float left,float top,float right,float bottom)
Parameters
left
矩形左上角横坐标
top
矩形左上角纵坐标
right
矩形右下角横坐标
bottom
矩形右下角纵坐标
Return value
Remarks
DrawBitmap
画Bitmap位图
Syntax
public void DrawBitmap(Bitmap bitmap,float x,float y,float rotation)
Parameters
bitmap
位图
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x | 含义 |
-1 | 左对齐 |
-2 | 居中对齐 |
-3 | 右对齐 |
大于等于0 | 横坐标 |
y
指定垂直方向的起始点位置离打印区域上边界的点数。(纵坐标)
支持上对齐,居中,下对齐
传入y见下表
y | 含义 |
-1 | 上对齐 |
-2 | 居中对齐 |
-3 | 下对齐 |
大于等于0 | 纵坐标 |
rotation
旋转角度(顺时针方向)
Return value
Remarks
DrawQRCode
画二维码
Syntax
public void DrawQRCode(String text,float x,float y,float rotation,int unitWidth,int version,int ecc)
Parameters
text
二维码文本
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x | 含义 |
-1 | 左对齐 |
-2 | 居中对齐 |
-3 | 右对齐 |
大于等于0 | 横坐标 |
y
指定垂直方向的起始点位置离打印区域上边界的点数。(纵坐标)
支持上对齐,居中,下对齐
传入y见下表
y | 含义 |
-1 | 上对齐 |
-2 | 居中对齐 |
-3 | 下对齐 |
大于等于0 | 纵坐标 |
rotation
旋转角度(顺时针方向)
unitWidth
QR码单元宽度,范围[1,16]。QR码单元宽度越大,QR码越大。
version
QR码版本。0表示自动计算版本。QR码版本越大,能编码的字符就越多,QR码也越大。
ecc
QR码纠错等级。[1,4]
Return value
Remarks
DrawBarcode
画条码
Syntax
public void DrawBarcode(String text,float x,float y,float rotation,int unitWidth,int height,int barcodeType)
Parameters
text
条码文本
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x | 含义 |
-1 | 左对齐 |
-2 | 居中对齐 |
-3 | 右对齐 |
大于等于0 | 横坐标 |
y
指定垂直方向的起始点位置离打印区域上边界的点数。(纵坐标)
支持上对齐,居中,下对齐
传入y见下表
y | 含义 |
-1 | 上对齐 |
-2 | 居中对齐 |
-3 | 下对齐 |
大于等于0 | 纵坐标 |
rotation
旋转角度(顺时针方向)
unitWidth
条形码单元宽度,范围[1,16]。 条形码单元宽度越大,条形码越大。
height
条码高度。(打印机dpi一般是203,这时候8点就是1mm)。设置为80点就是1CM。
barcodeType
条码类型。当前只支持CODE128条码,更多条码,后续支持。
可以为以下列表中所列值之一。
Value | Meaning |
0x49 | CODE 128 |
Return value
Remarks