商米外置打印机开发说明

4、打印机SDK接口API说明

1、连接指定打印机类型

方法voidconnectPrinter(Context context, SunmiPrinter sunmiPrinter,ConnectCallback callback)
说明指定打印机连接,局域网打印机请使用connectNetPrinter方法
输入context:上下文会话sunmiPrinter:指定打印机类型 SunmiPrinter.SunmiYKPriner 自助打印机 SunmiPrinter.SunmiNTPrinter NT210商米热敏打印机callback:连接打印机结果回调
返回

2、连接局域网打印机

方法voidconnectPrinter(Context context, String ip,ConnectCallback callback)
说明指定打印机连接,局域网打印机请使用connectNetPrinter方法
输入ontext:上下文会话ip:打印机的ip地址,可通过网络自检获取callback:连接打印机结果回调
返回

3、断开当前打印机

方法voiddisconnectPrinter(Context context)
说明结束并断开当前的打印机,将释放资源
输入context:上下文会话
返回

4、打印机连接状态

方法booleanisConnected()
说明当前API使用的打印机连接状态
输入
返回是否连接

5、指定打印机连接状态

方法booleanisConnected(SunmiPrinter sunmiPrinter)
说明sunmiPrinter:指定打印机的连接状态
输入
返回是否连接

6、获取打印机状态

方法int getPrinterStatus()
说明获取打印机运行状态当打印机处于事务模式时将不支持调用
输入
返回-1 打印机脱机或打印服务还未连接打印机0 打印机运行正常1 打印机开盖2 打印机缺纸3 打印机即将缺纸4 打印机过热

7、打印机初始化

方法voidprinterInit()
说明初始化打印机将使打印机设置状态恢复默认
输入
返回

8、打印机按行高走纸

方法void lineWrap(int n)
说明打印机走纸n行如果打印机打印缓冲区有数据,将输出数据并走纸n行如果行高被设置为0,则走纸距离为0
输入行数( 0 < n < 256 )
返回

9、打印机按像素走纸

方法void pixelWrap(int n)
说明打印机走纸n点行如果打印机打印缓冲区有数据,将输出数据并走纸n点行
输入像素点数( 0 < n < 256 )
返回

10、刷新缓冲区

方法void flush()
说明刷新打印缓冲区,当缓冲区有数据时将输出,如果没有数据将进纸一行
输入
返回

11、水平定位

方法void tab()
说明将打印位置移动到下一个水平定位点位置如果水平定位点超出打印区域则移动到行尾如果此时已经在行尾则会执行换行操作
输入
返回

12、设置横向水平定位点

方法void setHorizontalTab(int[ ] k )
说明将标记水平定位的位置,每个标记点位置由k[n]个ascii字符宽度指定,默认的水平定位点以8个ascii字符宽度为一个定位点
输入k 横向定位点数组k[n], 数组长度n最大可以是32,0 < k[n] < 256数组中必须是升序排列,否则将抛出异常k设置为null时将恢复默认定位点,默认位置为8个字符间隔
返回

13、打印文本内容

方法void printText(String text)
说明此方法会将输入文本转为对应字符集编码的十六进制字节流打印服务默认将文本内容转换为gb18030编码
输入text要打印的文本内容
返回

14、设置gb18030字符集编码

方法voidsetGb18030CharSet(booleanset)
说明打印机默认识别gb18030字符集,当设置关闭时,将不能识别gb18030字符集,会将其当成单字节处理
输入是否设置为GB18030字符集识别
返回

15、设置打印机映射页表

方法voidsetPageTable(int n)
说明此方法映射单字节码0x80-0xff在不同页上的内容,只有setGb18030CharSet(false)此方法才生效
输入n 对应页表
返回

16、设置国际字符集编码

方法voidsetInterCharSet(int n)
说明部分国家的ascii码中特殊字符有所区别,通过选择国家,可以打印对应国家编码的字符
输入n 对应国家
返回

17、设置字符右间距

方法voidsetCharRightSpace(int n)
说明设置字符的右间距空间,仅对ascii码有效,对其它字符无效
输入n 间距像素点
返回

18、设置汉字左右间距

方法voidsetHanziSpace(int m,int n)
说明设置汉字的左右间距
输入m 汉字左边间距n 汉字右边间距
返回

19、设置字体大小

方法voidsetFontZoom(int hori, int veri)
说明由于打印机硬字库限制,字体大小仅能倍数放大,本方法可以控制字体在横向和纵向方向的放大倍数
输入hori 、veri 的范围为1-8,表示在横向、纵向上字体的放大倍数,若设置在范围外将返回错误参数
返回

20、设置对齐方式

方法voidsetAlignMode(int type)
说明设置打印内容的对齐方式
输入0居左(默认)、1居中、2居右
返回

21、设置绝对位置

方法voidmoveAbsolutePos(int pos)
说明将打印距离移动到距离起始位置指定像素点
输入pos 距离起始位置像素点
返回

22、设置相对位置

方法voidmoveRelativePos(int pos)
说明将打印位置移动到相对当前位置指定像素点
输入pos 距离当前位置像素点
返回

23、启用或关闭下划线

方法voidenableUnderline(boolean enable)
说明启用或关闭字符下划线功能
输入enable 是否开启或关闭
返回

24、启用或关闭加粗

方法voidenableBold(booleanenable)
说明启用或关闭字符加粗功能
输入enable 是否开启或关闭
返回

25、启用或关闭重叠效果(一般同加粗)

方法voidenableDouble(boolean enable)
说明启用或关闭字符重叠效果
输入enable 是否开启或关闭
返回

26、设置打印机的行间距

方法voidsetLineSpace(int value)
说明设置打印机行间当行间距小于字符高度时将按字符高度
输入value 当设置小于0时将恢复默认行间距否则设置行间距为对应值
返回

27、设置打印机的左边距

方法voidsetLeftSpace(int value)
说明设置打印左边距大小像素点设置值过大可能导致打印区域小时
输入value 左边距大小
返回

28、设置打印宽度

方法voidsetPrintWidth(int width)
说明设置可打印区域大小像素点
输入width 可打印大小
返回

29、打印条形码

方法void printBarCode(String code, int type, int width, int height, int hriPos)
说明打印自定内容的条形码
输入code 条形码内容 (根据条码类型不同,条码内容需满足其格式)type 条形码类型 0:UPC-A; 1:UPC-E; 2:EAN13; 3:EAN8; 4:CODE39; 5:ITF; 6:CODABAR; 7:CODE93; 8:CODE128width 条形码宽度 2-6 像素 (若条码宽度设置过宽,整个条码超过纸张宽度将不会输出条码内容)height 条形码高度 1-255 像素hriPos HRI位置 0:不打印; 1:条形码上方; 2:条形码下方; 3:条形码上下方
返回

30、打印二维码

方法void printQrCode(String code, int modeSize, int errorlevel)
说明打印二维码
输入code 要打印的二维码内容,默认为utf-8字符集modeSize 二维码块大小 1-16 像素点errorlevel 二维码纠错等级 0-3 四个等级
返回

31、打印图片方法1

方法void printBitmap(Bitmap bitmap, int mode)
说明将bitmap图转成光栅位图方式打印此方法适合打印宽度在打印纸内的图片注意数据过大时可能会导致发送失败,此时建议通过mode设置倍数放大
输入bitmap 要打印的bitmap非透明图像mode 0:普通 1:倍宽 2:倍高 3:倍高倍宽
返回

32、打印图片方法2

方法void printBitmap2(Bitmap bitmap, int mode)
说明将bitmap图转成位图模式发送此方法需要将行间距设置为0此方法与printBitmap区别是不会造成数据失败后打印机未初始化的乱码注意数据过大时可能会导致发送失败,此时建议通过mode设置倍数放大
输入bitmap 要打印的bitmap非透明图像mode 0:8点单密度 1:8点双密度 32:24点单密度 33:24点双密度(原始大小)
返回

33、切刀切纸

方法void cutPaper(int m, int n)
说明切纸
输入m 切纸模式 0:全切; 1:半切; 2:进纸切纸n 进纸距离 此参数只有在设置 m=2时有效, 由于打印机型号不同切刀到打印头距离不同,当n=0时将自动走纸此距离,n>0将走额外设置距离
返回

34、表格打印

方法void printColumnsText(String[] colsTextArr, int[] colsWidthArr, int[] colsAlign)
说明以表格方式输出打印内容,每个数组表示在此列上的数据及格式,需要多次调用此方法才可以达到表格输出的样式效果
⚠️注意:调用此方法后会将之前设置样式初始化!
输入colsTextArr: 每列要打印的内容,支持中文及ascii码colsWidthArr:每列可容纳的最大字符数量,字符数以ascii码个数为单位(一个中文等于两个ascii码数量),当文本内容超出可容纳的最大数量时将移动到本列下一行,当所有列的最大字符数量超出一行所能容纳的字符数时,将不会打印colsAlign:每列内容的对齐方式,仅当内容字符数小于最大字符数量时才有效果
返回

35、发送数据指令

方法void sendRawData(byte[] cmd)
说明发送原始esc控制指令
输入cmd 发送的epson指令
返回

36、启用事务模式

方法voidstartTransBuffer(boolean isClear)
说明启用事务模式,用于控制打印内容的执行顺序和执行状态,只有在事务模式下才可以精确的获取打印内容的结果当进入事务模式后所有的打印指令会缓存待提交时发给打印机,所以未提交数据时将不会打印机
⚠️注意:暂时只有云打印机局域网打印支持事务模式
输入isClear是否清除未提交的缓存数据
返回

37、提交事务数据

方法voidcommitTransBuffer(TransCallback callback)
说明提交本次事务获取本次事务打印的执行情况建议等待提交事务结果后再执行下一次的事务提交注意:暂时只有云打印机局域网打印支持事务模式
输入callback 事务提交的执行结果
返回

38、退出事务模式

方法voidendTransBuffer()
说明退出事务模式之后的打印指令均直接发给打印机,不再关注打印执行情况注意:暂时只有云打印机局域网打印支持事务模式
输入
返回