sunmiT1Printer

来自于:开发者立即使用

概述

商米科技

上海商米科技有限公司是一家专注为O2O互联网平台,软件开发商、中小型商户提供专业的、高性价比的智能商用硬件设备的创新型科技企业。 商米硬件设备

目前商米主推的智能商用硬件包括 V1 , T1 , P1 , M1 ,D1 。设备应用于包括外卖接单,打印小票,扫描,收款,团购核销,点餐预约等一系列商业场景。

SUNMI OS商米设备运行的是SUNMIUI系统,SUNMIUI是基于Android深度优化改良的操作系统,支持安装普通基于Android系统的app,专为智能商用场景深度定制,从操作体验、性能提升与产品外观设计内外呼应,相得益彰。让用户在使用硬件的同时能享受更加专业系统的软件服务体验。 T1是一款面向互联网环境商业场景的多功能一体机,广泛应用于零售、餐饮。 sunmiT1Printer 支持商米主推的智能商用硬件包括 V1,T1,P1的打印功能以及P1打开钱箱,切纸等特殊功能。

官方文档:https://docs.sunmi.com/htmls/index.html?lang=zh##T1%E6%96%87%E6%A1%A3%E8%B5%84%E6%BA%90

注意

使用该模块时需要使用升级后的编译环境,请在云编译的时候勾选“使用升级环境编译”,并且在控制台 “高级设置” 中将固件版本设置为5.0或以上

startService

开启打印服务

startService(callback(ret, err))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:status 布尔型
{
    status: true, //false
}

示例代码

var demo = api.require('sunmiT1Printer');
demo.startService(function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

printerInit

初始化打印机

printerInit(callback(ret, err))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:status 布尔型
{
    status: true, //false
}

示例代码

var demo = api.require('sunmiT1Printer');
demo.printerInit(function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

printerSelfChecking

打印机自检

printerSelfChecking(callback(ret, err))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:status 布尔型
{
    status: true, //false
}

示例代码

var demo = api.require('sunmiT1Printer');
demo.printerSelfChecking(function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

printData

设置打印数据并打印

printData({params}, callback(ret, err))

params

data:

  • 类型:JSON 对象
  • 描述:(必填项)打印数据
  • 内部字段:
    [{
      rowtype: 'printText',//打印文字,文字宽度满一行自动换行排版,不满一整行不打印除非强制换行
      text : '要打印的文字字符串'    //要打印的文字字符串
    },{
      rowtype: 'printOriginalText',   //文字按矢量文字宽度原样输出,即每个字符不等宽
      text : '要打印的文字字符串'    //要打印的文字字符串
    },{
      rowtype: 'printTextWithFont',   //打印指定字体的文本,字体设置只对本次有效
      text : '要打印的文字字符串',    //要打印的文字字符串
      typeface:'', //字体名称(目前只支持"gh"字体)
      fontsize:12 //字体大小
    },{
      rowtype: 'printColumnsText',   //打印表格的一行,可以指定列宽、对齐方式
      colsTextArr : ['商品名称','数量','单位','金额'],  //各列文本字符串数组
      colsWidthArr : [10, 6, 6, 8], //各列宽度数组(以英文字符计算, 每个中文字符占两个英文字符, 每个宽度大于0)
      colsAlign : [0, 2, 2, 2] //各列对齐方式(0居左, 1居中, 2居右)
      //备注: 三个参数的数组长度应该一致, 如果colsText[i]的宽度大于colsWidth[i], 则文本换行
    },{
      rowtype: 'setFontSize',   //设置字体大小, 对之后打印有影响,除非初始化
      fontsize:12 //字体大小
    },{
      rowtype: 'lineWrap',  //打印机走纸(强制换行,结束之前的打印内容后走纸n行)
      n:3  //走纸行数
    },{
      rowtype: 'setAlignment',  //设置对齐模式,对之后打印有影响,除非初始化
      alignment:0  //对齐方式 0--居左 , 1--居中, 2--居右
    },{
      rowtype: 'printBarCode',  //打印一维条码
      data:'123456',  //条码数据
      symbology:8,//0-8
      width:160, //条码宽度: 取值2至6, 默认2
      height:160, //条码高度:取值1到255, 默认162
      textposition : 2 //文字位置 0--不打印文字, 1--文字在条码上方, 2--文字在条码下方, 3--条码上下方均打印
    },{
      rowtype: 'printQRCode',  //打印二维条码
      data:'www.hanchao9999.com',  //二维码数据
      size:240 //二维码块大小(单位:点)
    },{
      rowtype: 'printBitmap',  //打印图片
      image:'widget://res/Images/1.jpg'  //图片bitmap对象(最大宽度384像素,超过无法打印并且回调callback异常函数) 支持widget:// fs://
    },{
      rowtype: 'printTypeHorizontalLine',  //画特殊水平线
      type:0, //水平线类型(0至11)
    }]
    

条码说明(不同机型略有不同)

编码 说明
code39 最长打印 13 个数字
code93 最长打印 17 个数字
code128 最长打印 15 个数字
ean8 要求 8 位数字(最后一位校验位) ,有效长度 8 个数字
ean13 有效长度 13 个数字,其中最后一位为校验位
ITF 要求输入数字,且有效小于 14 位,必须是偶数位
Codebar 要求 0-9 及 6 个特殊字符,最长打印 18 个数字
UPC-E 要求 8 位数字(最后一位校验位)
UPC-A 要求 12 位数字(最后一位校验位)

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:result 为返回结果各参数可参考以上参数
{
    status: true, //false
    print:"打印完毕"
}

示例代码

var obj = api.require('sunmiT1Printer');
obj.printData({
                data : [{
                    rowtype : 'printColumnsText',
                    colsTextArr : ['名称','数量','单价','金额'],
                    colsWidthArr : [10, 6, 6, 8],
                    colsAlign : [1, 2, 2, 2]
                },{
                    rowtype : 'printColumnsText',
                    colsTextArr : ['大白兔奶糖','4','12.00','48.00'],
                    colsWidthArr : [10, 6, 6, 8],
                    colsAlign : [0, 2, 2, 2]
                },{
                    rowtype : 'printText',
                    text : '支付宝\n'
                }, {
                    rowtype : 'printText',
                    text : 'Alipay\n'
                }, {
                    rowtype : 'printText',
                    text : '===============================\n'
                }, {
                    rowtype : 'printText',
                    text : '订单金额                 0.01元\n'
                }, {
                    rowtype : 'printText',
                    text : '    参与优惠金额        0.01元\n'
                }, {
                    rowtype : 'printText',
                    text : '商家实收\n'
                }, {
                    rowtype : 'printText',
                    text : '-------------------------------\n'
                }, {
                    rowtype : 'printText',
                    text : '开票金额(用户实付)   0.01元\n'
                }, {
                    rowtype : 'printText',
                    text : '--------------------------------\n'
                }, {
                    rowtype : 'printText',
                    text : '交易号:\n'
                }, {
                    rowtype : 'printText',
                    text : '201805291136661631631\n'
                }, {
                    rowtype : 'printText',
                    text : '门店名称  北国超市(新石店)\n'
                }, {
                    rowtype : 'printText',
                    text : '买家帐号   service@hanchao9999.com\n'
                }, {
                    rowtype : 'printText',
                    text : '--------------------------------\n'
                }, {
                    rowtype : 'printText',
                    text : '日期           2018-05-26 11:36\n'
                }, {
                    rowtype : 'printText',
                    text : '--------------------------------\n'
                }, {
                    rowtype : 'printText',
                    text : '此小票不需要用户签字\n'
                }, {
                    rowtype : 'setFontSize',
                    fontsize : 32
                }, {
                    rowtype : 'printText',
                    text : 'http://www.hanchao9999.com\n'
                }, {
                    rowtype : 'printOriginalText',
                    text : 'http://www.hanchao9999.com\n'
                }, {
                    rowtype : 'setFontSize',
                    fontsize : 24
                }, {
                    rowtype : 'printText',
                    text : 'http://www.hanchao9999.com\n'
                }, {
                    rowtype : 'printOriginalText',
                    text : 'http://www.hanchao9999.com\n'
                }, {
                    rowtype : 'lineWrap',
                    n : 2
                }, {
                    rowtype : 'setAlignment',
                    alignment : 1
                }, {
                    rowtype : 'printBarCode',
                    data : '123456',
                    width : 160,
                    height : 160
                }, {
                    rowtype : 'setAlignment',
                    alignment : 1
                }, {
                    rowtype : 'printQRCode',
                    data : 'http://www.hanchao9999.com',
                    size : 240
                }, {
                    rowtype : 'printTypeHorizontalLine',
                    type : 0
                }, {
                    rowtype : 'printTypeHorizontalLine',
                    type : 1
                }, {
                    rowtype : 'printTypeHorizontalLine',
                    type : 2
                }, {
                    rowtype : 'printTypeHorizontalLine',
                    type : 3
                }, {
                    rowtype : 'printBitmap',
                    image : 'widget://res/Images/1.jpg'
                }, {
                    rowtype : 'lineWrap',
                    n : 3
                }]
            }, function(ret, err) {
                alert(JSON.stringify(ret));
            });

可用性

Android系统

可提供的1.0.0及更高版本

lineWrap

走纸

lineWrap(callback(ret, err))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:status 布尔型
{
    status: true, //false
}

示例代码

var demo = api.require('sunmiT1Printer');
demo.lineWrap(function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

stopService

停止打印服务

stopService(callback(ret, err))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:status 布尔型
{
    status: true, //false
}

示例代码

var demo = api.require('sunmiT1Printer');
demo.stopService(function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

openMoney

打开钱箱

openMoney(callback(ret, err))

需要先调用startService后才能使用,调用stopService以后将不能使用

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:status 布尔型
{
    status: true, //false
}

示例代码

var demo = api.require('sunmiT1Printer');
demo.openMoney(function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

cutPaper

切纸

cutPaper(callback(ret, err))

需要先调用startService后才能使用,调用stopService以后将不能使用

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:status 布尔型
{
    status: true, //false
}

示例代码

var demo = api.require('sunmiT1Printer');
demo.cutPaper(function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

openMoneyCount

打开钱箱次数

openMoneyCount(callback(ret, err))

需要先调用startService后才能使用,调用stopService以后将不能使用

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:status 布尔型
{
    status: true, //false
    count:1,
}

示例代码

var demo = api.require('sunmiT1Printer');
demo.openMoneyCount(function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

openUSB

获取USB设备信息

openUSB(callback(ret, err))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:status 布尔型
  • 内部字段:deviceinfo JSON对象
{
    "deviceInfo": {
        "0": {
            "0": "Bus=0001 Vendor=80ee Product=cafe Version=0500 ",
            "1": "Name=\"VirtualBox mouse integration\" ",
            "2": "Phys= ",
            "3": "Sysfs=/devices/pci0000:00/0000:00:04.0/input/input3 ",
            "4": "Uniq= ",
            "5": "Handlers=event3 ",
            "6": "PROP=0 ",
            "7": "EV=b ",
            "8": "KEY=10000 0 0 0 0 0 0 0 0 ",
            "9": "ABS=3 ",
            "10": " "
        },
        "1": {
            "0": "Bus=0000 Vendor=dbdb Product=0002 Version=0001 ",
            "1": "Name=\"gpio\" ",
            "2": "Phys= ",
            "3": "Sysfs=/devices/virtual/input/input6 ",
            "4": "Uniq= ",
            "5": "Handlers=kbd event6 ",
            "6": "PROP=0 ",
            "7": "EV=23 ",
            "8": "KEY=c0000 0 0 0 ",
            "9": "SW=1 ",
            "10": " "
        }
    }
}

示例代码

var demo = api.require('sunmiT1Printer');
demo.openUSB(function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

openBrand

获取品牌名

openBrand(callback(ret, err))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:status 布尔型
{
    status: true, //false
    brand:'品牌名称',
    model:'',
    versionname:'',
    versioncode:'',
}

示例代码

var demo = api.require('sunmiT1Printer');
demo.openBrand(function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

openFilter

注册广播(监听硬件拔插)

openFilter(callback(ret, err))

每次拔插硬件之后需要重新注册广播才能重新获取

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:status 布尔型
{
    status: true, //false  true 代表插入设备 false 代表拔出设备
}

示例代码

var demo = api.require('sunmiT1Printer');
demo.openFilter(function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

closeFilter

解除广播

closeFilter(callback(ret, err))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:status 布尔型
{
    status: false //false 代表拔出设备 不再监听
}

示例代码

var demo = api.require('sunmiT1Printer');
demo.closeFilter(function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

Usb

获取USB类型(支持同步和异步返回)

Usb(callback(ret, err))

callback(ret)

同步返回

类型:成功返回具体数据,多个设备会用,分开如255,8,3 失败返回false

8

异步返回

ret:

  • 类型:JSON对象
  • 内部字段:interfaceClass 布尔型/字符串

返回false则没有usb设备其它数据表示不同意思

如:3 扫码枪或键盘 8 U盘 更多参考http://www.usb.org/developers/defined_class

{
    interfaceClass: 3, 
}

示例代码

var demo = api.require('sunmiT1Printer');
var ret = demo.Usb(function(ret, err) {
    alert('异步返回'+JSON.stringify(ret));
});
alert('同步返回'+JSON.stringify(ret));

可用性

Android系统

可提供的1.0.0及更高版本