sunmiPrinterInner

概述

本插件适用于商米设备调用商米打印机

注意:
本插件适用于带打印机的所有商米机器及商米58热敏票据打印机

插件使用

//连接商米一体机(如V1、V2、T1、T2等等),通过如下方式
var sunmi_print = api.require('sunmiPrinterInner')
//连接商米自助终端(如K1、H1等等),通过如下方式
var sunmi_print = api.require('sunmiPrinterSelf')
//连接商米58热敏票据打印机(小黑盒),通过如下方式
var sunmi_print = api.require('sunmiPrinterOutter')

初始化打印机方法和释放方法

//使用前连接打印机
sunmi_print.connect(function(ret, err) {
  if(ret.connect == "hello"){
    alert("打印机连接")
  }else{
    alert("打印机未连接")
  }
});
//使用后断开打印机
sunmi_print.disconnect()

connect

连接打印机

connect(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    connect:  //字符串类型;连接结果 
              //hello   打印机连接
              //bye     打印机断开
              //unknown 无打印机
}

示例代码

var printer = api.require('sunmiPrinterInner');
printer.connect(function(ret, err) {
        alert(ret.connect)
});

可用性

Android系统
可提供的1.0.0及更高版本

disconnect

断开打印机

disconnect()

示例代码

var printer = api.require('sunmiPrinterInner');
printer.disconnect();

可用性

Android系统
可提供的1.0.0及更高版本

getPrinterStatus

获取打印机状态

getPrinterStatus(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:  //字符串类型;打印机的实时状态 
              //offline   打印机离线
              //running   打印机正常
              //fault     打印机故障
              //outpaper  打印机缺纸
              //hot       打印机过热
              //open      打印机开盖(58打印机不支持)
              //error     打印机未知错误
}

示例代码

var printer = api.require('sunmiPrinterInner');
printer.getPrinterStatus(function(ret, err) {
        alert(ret.status)
});

可用性

Android系统
可提供的1.0.0及更高版本

printInit

打印机初始化

printInit()

示例代码

var printer = api.require('sunmiPrinterInner');
printer.printInit();

可用性

Android系统
可提供的1.0.0及更高版本

printSelfCheck

可通过自检页查看打印效果、打印机信息

printSelfCheck()

示例代码

var printer = api.require('sunmiPrinterInner');
printer.printSelfCheck();

备注说明

商米自助打印机和58热敏打印机不支持打印自检页

可用性

Android系统
可提供的1.0.0及更高版本

printRawData

接收ESC指令内容并执行打印(参考ESC指令)

printRawData([arrays])

arrays

  • 类型:数组
  • 描述:下发的十六进制数据

示例代码

    var printer = api.require('sunmiPrinterInner');
    //主动初始化打印机
    printer.printInit()
    //打印一张自检页
    printer.printSelfCheck()
    //设置加粗指令,之后的文本内容会加粗
    var cmd1 = [0x1b, 0x45, 0x01] 
    //设置行高指令,之后的文本内容行间距改变
    var cmd2 = [0x1b, 0x33, 0x00]
    //打印12345678
    var data = [0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x0a]
    printer.printRawData(cmd1);
    printer.printRawData(cmd2);
    printer.printRawData(data)
    printer.printRawData(data);

可用性

Android系统
可提供的1.0.0及更高版本

printText

打印富含样式的文本内容

printText({params})

params

text

  • 类型:字符串
  • 描述:要打印的文本内容

align

  • 类型:数值
  • 描述:对齐方式
  • 取值范围:0居左 1居中 2居右

size

  • 类型:数值
  • 描述:打印文本的字体大小
  • 取值范围:12~60
  • 说明:商米内置打印机的字体大小支持12~60,商米自助打印机和58打印机仅支持默认字体24的倍数大小

bold

  • 类型:布尔值
  • 描述:文本内容是否加粗

underline

  • 类型:布尔值
  • 描述:文本内容是否下划线

compact

  • 类型:布尔值
  • 描述:文本内容是否紧凑模式

skip

  • 类型:布尔值
  • 描述:文本内容当不满一行时是否直接输出

示例代码

    var printer = api.require('sunmiPrinterInner');
    printer.printText({
            text:"商米打印测试",
            align:1,
            size:30,
            bold:true,
            underline:true,
            compact:true,
            skip:true
    })
    printer.printText({
            text:"商米打印测试",
            align:2,
            size:12,
            compact:true,
            skip:true
    })

可用性

Android系统
可提供的1.0.0及更高版本

printColumnsText

按列打印文本内容

printColumnsText({params})

params

texts

  • 类型:数组
  • 描述:字符串数组表示每一列的文本内容

lengths

  • 类型:数组
  • 描述:整型数组表示每一列占的字符数量

aligns

  • 类型:数组
  • 描述:整型数组表示每一列的对齐方式

bold

  • 类型:布尔值
  • 描述:文本内容是否加粗

示例代码

    var  = api.require('sunmiPrinterInner');
    //按列打印一行简单的内容,每列分别居左、居中、居右
    printer.printColumnsText({
        texts:["一", "二二", "三三三"],
        lengths:[10, 10, 10],
        aligns:[0, 1, 2]
    })
    //左右两列打印商品列表
    printer.printColumnsText({
        texts:["商品", "价格"],
        lengths:[15, 15],
        aligns:[0, 2],
        bold:true
    })
    printer.printColumnsText({
        texts:["汉堡", "15元"],
        lengths:[15, 15],
        aligns:[0, 2],
    })
    printer.printColumnsText({
        texts:["可乐", "8元"],
        lengths:[15, 15],
        aligns:[0, 2],
    })

备注说明

0.本接口将按列打印文本内容,方便打印出特殊排版格式的文本,为了排版固定本接口只能打印默认字体大小的文本,不能改变字体大小
1.各个数组的长度必须一致否则将打印失败
2.字符数量lengths表示ascii码的数量,中文汉字占两个ascii码
3.58mm的打印纸lengths和不超过30,80mm的lengths和不超过46

可用性

Android系统
可提供的1.0.0及更高版本

printBarCode

打印条码内容

printBarCode({params})

params

text

  • 类型:字符串
  • 描述:要打印的条形码内容需搭配条形码类型

symbology

  • 类型:数值
  • 描述:条形码类型
  • 取值范围:0~8

height

  • 类型:数值
  • 描述:条形码高度
  • 取值范围:1~255

width

  • 类型:数值
  • 描述:条形码宽度
  • 取值范围:2~6

hri

  • 类型:数值
  • 描述:HRI位置
  • 取值范围:0:不打印 1:上方 2:下方 3:上下

align

  • 类型:数值
  • 描述:对齐方式
  • 取值范围:0居左 1居中 2居右

示例代码

    var printer = api.require('sunmiPrinterInner');
    printer.printBarCode({
                    text:"1234567890",
                    symbolgy:8,
                    height:100,
                    width:3,
                    hri:0,
                    align:1
      })

备注说明

symbology说明 0 UPC-A编码 1 UPC-E编码 2 EAN13编码 3 EAN8编码 4 CODE39编码 5 ITF编码 6 CODABAR编码 7 CODE93编码 8 CODE128编码

注意Code128分三种类型: A类:包含⼤写字⺟、数字、标点等; B类:⼤⼩写字⺟,数字; C类:纯数字,复数字符,若为单数位,最后⼀个将忽略; 接⼝默认使⽤B类编码,若要使⽤A类、C类编码需在内容前⾯加“{A”、“{C”
例如:
默认B类 “1234567”
使用A类 “{A2344A”
使用C类 “{C123123”
混合使用 ”{A1A{B13B{C12”

可用性

Android系统
可提供的1.0.0及更高版本

printQrCode

打印二维码码内容

printQrCode({params})

params

text

  • 类型:字符串
  • 描述:二维码内容

size

  • 类型:数值
  • 描述:二维码块大小
  • 取值范围:4~16

errorlevel

  • 类型:数值
  • 描述:纠错等级
  • 取值范围:0:L 1:M 2:Q 3:H

align

  • 类型:数值
  • 描述:对齐方式
  • 取值范围:0居左 1居中 2居右

示例代码

    var printer = api.require('sunmiPrinterInner');
    printer.printQrCode({
                text:"1234567890",
                size:5,
                errorlevel:0,
                align:1
    })

可用性

Android系统
可提供的1.0.0及更高版本

printBitmap

打印富含样式的文本内容

printBitmap({params})

params

path

  • 类型:字符串
  • 描述:图片的存储路径
  • 说明:路径必须是image目录下的图片

url

  • 类型:字符串
  • 描述:来自网络的图片url
  • 说明: 当同时有path参数时将会使用本地存储的图片,而不使用来自网络的图片,图片最好不要超过打印纸宽度,否则将不能打印

align

  • 类型:数值
  • 描述:对齐方式
  • 取值范围:0居左 1居中 2居右

示例代码

    var printer = api.require('sunmiPrinterInner');
     //打印本地存储的图片logo
    printer.printBitmap({
            path:"/image/logo.png",
          align:1
      })
    //打印网络端的图片logo
    printer.printBitmap({
        url:"http://img.pconline.com.cn/images/upload/upc/tx/itbbs/1607/06/c3/23806812_1467754402821_1024x1024.jpg",
        align:1
    })

可用性

Android系统
可提供的1.0.0及更高版本

cutPaper

切刀切纸

cutPaper()

示例代码

    var printer = api.require('sunmiPrinterInner');
    printer.cutPaper()

备注说明

一般仅支持带切刀的80打印机而58打印机不带切刀

可用性

Android系统
可提供的1.0.0及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2024/11/18