示例程序下载地址:
Sample2:Caysn打印机Linux打印示例程序 - Sample2_20161007
接口说明文档:
一 概述
1 PrinterLibs是在Linux平台用C++编写的静态库,导出C风格的函数。
2 PrinterLibs函数有以下几类
A PORT_XXX
以PORT开头的函数,主要是打开端口,关闭端口,写入端口。
支持通过串口,并口,USB口,网口进行打印。
备注:Port_SetPort:该函数可以指定POS_XXX系列函数所使用的通讯端口。
B POS_XXX
以POS开头的函数,主要是封装了ESC/POS指令,可以控制打印机打印。
① 进纸系列函数可以控制打印机进纸
② 设置系列函数可以设置打印的格式等
③ 打印系列函数可以打印文本,条码,QR码,图片等
④ 查询系列函数可以查询打印机状态
⑤ 其他函数可以控制钱箱、切刀、蜂鸣器等
二 函数说明
PORT Function
PORT_Open
描述:打开端口
Syntax
bool PORT_Open(int type, const char *pszName, int para)
Parameters
type
端口类型。
例如:
0x1 串口
0x2 网口
0x4 USB口
0x8 并口
pszName
端口名称
串口名称举例:/dev/ttyS0 /dev/ttyUSB0等
网口名称举例:192.168.1.87
USB口举例:/dev/usb/lp0
并口举例:/dev/lp0
para
参数
对串口来说,此处填波特率。如115200。
对网口来说,此处填端口号。固定9100端口。
对USB和并口来说,此处参数不使用。
Return value
如果打开成功,返回TRUE。否则,返回FALSE
Remarks
如果打开的端口是并口,则无法使用查询系列函数,因为我们的并口是单向通讯的。
PORT_Close
描述:关闭端口
Syntax
void PORT_Close()
Parameters
Return value
Remarks
关闭端口
PORT_Write
描述:向端口写数据
Syntax
int PORT_Write(const char * buffer, int count, int timeout)
Parameters
buffer
要写入的数据
count
要写入的字节数
timeout
超时时间
Return value
如果写入成功,返回写入的字节数。如果失败,返回-1。
Remarks
使用该函数可以直接发送命令给打印机,例如写入”\x12\x54”,打印机会打印一张自测页。
Pos Function
POS_PrintText
描述:打印文本
Syntax
void POS_PrintText(const char *pszString,int x, int nWidthTimes, int nHeightTimes, int nFontType, int nFontStyle)
Parameters
pszString
要打印的内容。UNICODE编码字符串。
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x | 含义 |
-1 | 左对齐 |
-2 | 居中对齐 |
-3 | 右对齐 |
大于等于0 | 横坐标 |
nWidthScale
指定宽度放大倍数 [0,7]
nHeightScale
指定高度放大倍数 [0,7]
nFontType
字体类型
0 标准字体
1 压缩字体
nFontStyle
指定字体风格,可以为下表中的一个或者若干个(相加即可)
Value | Meaning |
0x00 | 正常 |
0x08 | 加粗 |
0x80 | 1点粗的下划线 |
0x100 | 2点粗的下划线 |
0x200 | 倒置(只在行首有效) |
0x400 | 反显(黑底白字) |
0x1000 | 每个字符顺时针旋转 90 度 |
Return value
Remarks
POS_PrintText并不立刻打印,需要调用POS_FeedXXX系列函数,才会把行缓冲区中的内容打印出来。
同一行不支持多种对齐方式。
POS_PrintBarcode
打印条码
Syntax
void POS_PrintBarcode(const char *pszString, int x, int nType, int nUnitWidth, int nHeight, int nHriFontType, int nHriFontPosition)
Parameters
pszString
条码内容
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x | 含义 |
-1 | 左对齐 |
-2 | 居中对齐 |
-3 | 右对齐 |
大于等于0 | 横坐标 |
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 |
nUnitWidth
指定条码的基本元素宽度。
可以为以下列表中所列值(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 |
nHeight
条码高度
8点即1mm,填入80即可打印高度为1CM的条码。
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_PrintQRCode
打印二维码(QR码)
Syntax
void POS_PrintQRcode(const char *pszString, int x, int nUnitWidth, int nVersion, int nECCLevel)
Parameters
pszString
二维码文本
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x | 含义 |
-1 | 左对齐 |
-2 | 居中对齐 |
-3 | 右对齐 |
大于等于0 | 横坐标 |
nUnitWidth
QR码单元宽度,范围[1,16]。
QR码单元宽度越大,QR码越大。
nVersion
QR码版本。0表示自动计算版本。
QR码版本越大,能编码的字符就越多,QR码也越大。
nECCLevel
QR码纠错等级。[1,4]
Return value
Remarks
部分机型不支持指定起始位置,请使用左对齐,居中对齐,右对齐进行排版布局。
POS_PrintBitmap
打印BMP位图
Syntax
void POS_PrintBitmap(const char *pszFile, int x, int nBinaryAlgorithm, int nCompressMethod)
Parameters
pszFile
位图文件路径
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x | 含义 |
-1 | 左对齐 |
-2 | 居中对齐 |
-3 | 右对齐 |
大于等于0 | 横坐标 |
nBinaryAlgorithm
二值化算法
0 使用抖动算法,对彩色图片有较好的效果。
1 使用平均阀值算法,对文本类图片有较好的效果
nCompressMethod
压缩算法
0 不使用压缩算法
1 使用压缩算法
Return value
Remarks
部分机型不支持指定起始位置,请使用左对齐,居中对齐,右对齐进行排版布局。
POS_FeedLine
Syntax
BOOL POS_FeedLine()
Parameters
Return value
Remarks
打印机进纸一行
POS_Reset
复位打印机。会清空设置。
Syntax
void POS_Reset()
Parameters
Return value
Remarks
POS_SetMotionUnit
设置水平和垂直移动单位
Syntax
void POS_SetMotionUnit(int nHorizontalMU, int nVerticalMU)
Parameters
nHorizontalMU
水平移动单位
nVertnVerticalMUical
垂直移动单位
Return value
Remarks
当nHorizontal和nVertical都设置为200时,1点就是0.125mm。
POS_SetRightSpacing
设置字符右边空白
Syntax
void POS_SetRightSpacing(int nDistance)
Parameters
nDistance
字符右边空白
Return value
Remarks
POS_SetLineHeight
设置行高
Syntax
void POS_SetLineHeight(int nHeight)
Parameters
nHeight
行高
Return value
Remarks
POS_SetPrintSpeed
设置打印速度注:如果打印速度大于发送速度,打印会有卡顿感。
Syntax
void POS_SetPrintSpeed(int nSpeed)
Parameters
nSpeed
打印速度(mm/s)
Return value
Remarks
将打印速度设置为数据发送速度,可以是打印效果达到最好。
可以通过打印一张单据,测量单据的长度和所用时间,用长度/时间,即可。
POS_CutPaper
切纸
Syntax
void POS_CutPaper()
Parameters
Return value
Remarks
只对带切刀的机器有效
POS_Beep
蜂鸣器鸣叫
Syntax
void POS_Beep(int nBeepCount, int nBeepMillis)
Parameters
nBeepCount
鸣叫次数
nBeepMillis
每次鸣叫的时间 = 100 * nBeemMillisms
Return value
Remarks
POS_KickDrawer
打开钱箱
Syntax
void POS_KickDrawer(int nDrawerIndex,int nPulseTime)
Parameters
nDrawerIndex
0表示:脉冲发送到钱箱输出引脚2
1表示:脉冲发送到钱箱输出引脚5
nPulseTime
脉冲时间
高电平时间:nPulseTime*2ms
低电平时间:nPulseTime*2ms
Return value
Remarks
POS_QueryStatus
查询状态
打印机忙时,该命令会一直阻塞
返回的状态保存在status中
Syntax
bool POS_QueryStatus(int type, char * status, int timeout, int MaxRetry)
Parameters
type
当前固定为1
status
status 该值目前无意义
timeout
单次查询状态的超时毫秒时间
MaxRetry
失败重试次数
Return value
返回true,表明打印机状态OK。否则,打印机未联机或打印机正忙。
Remarks
POS_RTQueryStatus
实时状态查询
无论打印机处于何种状态,只要打印机收到该命令就立刻回送状态
返回的状态保存在status中
Syntax
bool POS_RTQueryStatus(int type, char * status, int timeout, int MaxRetry)
Parameters
type
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 |
status
status 对应含义见上表
timeout
单次查询状态的超时毫秒时间
MaxRetry
失败重试次数
Return value
返回true,表明打印机通讯正常,查询的状态保存在status中。
Remarks
POS_TicketSucceed
发送单据查询命令
Syntax
bool POS_TicketSucceed(int dwSendIndex, int timeout)
Parameters
dwSendIndex
单据索引:
可以从1开始依次递增,目前并无实际意义
timeout
等待单据打印完成的超时ms时间
Return value
单据打印完成,并且没有因为缺纸而中断,则返回true。
否则,没有查到状态,或返回因为缺纸或其他错误导致打印中断,则返回false。
Remarks
为了保证单据打印的可靠性,请每批次打印任务完成之后,调用一次该函数确认单据打印结果。
POS_CheckAndQuery
检查打印机
Syntax
bool POS_CheckAndQuery(bool * pResult, int timeout)
Parameters
pResult
pResult保存检查结果,true表示打印机正确,false表示打印机未知。
timeout
超时毫秒时间
Return value
返回true,表明检查完毕,检查结果保存在pResult中,返回false,表明检查失败。
Remarks