为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码供您参考。
商米科技 上海商米科技有限公司是一家专注为O2O互联网平台,软件开发商、中小型商户提供专业的、高性价比的智能商用硬件设备的创新型科技企业。
SUNMIUI 商米设备运行的是SUNMIUI系统,SUNMIUI是基于Android深度优化改良的操作系统,支持安装普通基于Android系统的app,专为智能商用场景深度定制,从操作体验、性能提升与产品外观设计内外呼应,相得益彰。让用户在使用硬件的同时能享受更加专业系统的软件服务体验。
应用市场 SUNMIUI内部有一个应用市场,合作伙伴可以通过应用市场将自己的应用大规模分发到商米的设备上。部分合作伙伴可以有一个自己管理的应用市场,默认旗下设备用户只能通过应用市场为设备安装应用。
sunmiPrinter 插件概述 商米打印插件,支持商米主推的智能商用硬件V1,V1 设备应用于包括外卖接单,打印小票,扫描,收款,团购核销,点餐预约等一系列商业场景。
商米注册合作伙伴参考商米注册合作伙伴
开启打印服务
startService(callback(ret, err))
ret:
{
    status: true   //布尔型;true||false
}
err:
{
    msg: ''
}
var demo = api.require('sunmiPrinter');
demo.startService(function(ret, err) {
    api.alert({msg: JSON.stringify(ret)});
});
Android系统
可提供的1.0.2及更高版本
初始化打印机
printerInit(callback(ret, err))
ret:
{
    status: true   //布尔型;true||false
}
err:
{
    msg: ''
}
var demo = api.require('sunmiPrinter');
demo.printerInit(function(ret, err) {
    api.alert({msg: JSON.stringify(ret)});
});
Android系统
可提供的1.0.2及更高版本
打印机自检
printerSelfChecking(callback(ret, err))
ret:
{
    status: true,   //布尔型;true||false
    response :     //
}
err:
{
    msg: ''
}
var obj = api.require('sunmiPrinter');
obj.printerSelfChecking(
function(ret, err) {
    api.alert({msg: JSON.stringify(ret)});
});
Android系统
可提供的1.0.2及更高版本
设置打印数据
printData({params}, callback(ret, err))
data:
[{
    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:'',  //条码数据
    symbology:8,//0-8
    width:160, //条码宽度: 取值2至6, 默认2
    height:160, //条码高度:取值1到255, 默认162
    textposition : 2 //文字位置 0--不打印文字, 1--文字在条码上方, 2--文字在条码下方, 3--条码上下方均打印
},{
    rowtype: 'printQRCode',  //打印二维条码
    data:'',  //二维码数据
    size:240 //二维码块大小(单位:点)
},{
    rowtype: 'printBitmap',  //打印图片
    image:'widget://res/Images/1.jpg'  //图片bitmap对象(最大宽度384像素,超过无法打印并且回调callback异常函数) 支持widget:// fs://
},{
    rowtype: 'printTypeHorizontalLine',  //画特殊水平线
    type:0, //水平线类型(0至11)
},{
    rowtype: 'cutPaper'//切纸
}]
ret:
{
    status: true,   //布尔型;true||false
    result :     //
}
err:
{
    code: "",
    msg:""
}
var obj = api.require('sunmiPrinter');
obj.printData({
    data : [{
        rowtype : 'printColumnsText',
        colsTextArr : ['名稱','數量','單價','金額'],
        colsWidthArr : [10, 6, 6, 8],
        colsAlign : [1, 2, 2, 2]
    },{
        rowtype : 'printColumnsText',
        colsTextArr : ['草莓酸奶A布甸','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 : '2016040621001004150224503623\n'
    }, {
        rowtype : 'printText',
        text : '门店名称  正新鸡排(欢乐谷二店)\n'
    }, {
        rowtype : 'printText',
        text : '买家帐号         1id***@21cn.com\n'
    }, {
        rowtype : 'printText',
        text : '--------------------------------\n'
    }, {
        rowtype : 'printText',
        text : '日期           2016-04-06 11:29\n'
    }, {
        rowtype : 'printText',
        text : '--------------------------------\n'
    }, {
        rowtype : 'printText',
        text : '此小票不需要用户签字\n'
    }, {
        rowtype : 'setFontSize',
        fontsize : 32
    }, {
        rowtype : 'printText',
        text : 'http://www.sunmi.com\n'
    }, {
        rowtype : 'printOriginalText',
        text : 'http://www.sunmi.com\n'
    }, {
        rowtype : 'setFontSize',
        fontsize : 24
    }, {
        rowtype : 'printText',
        text : 'http://www.sunmi.com\n'
    }, {
        rowtype : 'printOriginalText',
        text : 'http://www.sunmi.com\n'
    }, {
        rowtype : 'lineWrap',
        n : 2
    }, {
        rowtype : 'setAlignment',
        alignment : 1
    }, {
        rowtype : 'printBarCode',
        data : '6921505036025',
        width : 160,
        height : 160
    }, {
        rowtype : 'setAlignment',
        alignment : 1
    }, {
        rowtype : 'printQRCode',
        data : 'http://www.sunmi.com',
        size : 240
    }, {
        rowtype : 'printTypeHorizontalLine',
        type : 0
    }, {
        rowtype : 'printTypeHorizontalLine',
        type : 1
    }, {
        rowtype : 'printTypeHorizontalLine',
        type : 2
    }, {
        rowtype : 'printTypeHorizontalLine',
        type : 3
    }, {
        rowtype : 'printTypeHorizontalLine',
        type : 4
    }, {
        rowtype : 'printTypeHorizontalLine',
        type : 5
    }, {
        rowtype : 'printTypeHorizontalLine',
        type : 6
    }, {
        rowtype : 'printTypeHorizontalLine',
        type : 7
    }, {
        rowtype : 'printTypeHorizontalLine',
        type : 8
    }, {
        rowtype : 'printTypeHorizontalLine',
        type : 9
    }, {
        rowtype : 'printTypeHorizontalLine',
        type : 10
    }, {
        rowtype : 'printTypeHorizontalLine',
        type : 11
    }, {
        rowtype : 'printBitmap',
        image : 'widget://res/Images/1.jpg'
    }, {
        rowtype : 'lineWrap',
        n : 3
    }]
}, function(ret, err) {
    api.alert({msg: JSON.stringify(ret)});
});
Android系统
可提供的1.0.2及更高版本
走纸行数
lineWrap(callback(ret, err))
ret:
{
    status: true   //布尔型;true||false
}
err:
{
    msg: ''
}
var obj = api.require('sunmiPrinter');
obj.lineWrap(function(ret, err) {
    api.alert({msg: JSON.stringify(ret)});
});
Android系统
可提供的1.0.2及更高版本
停止打印服务
stopService(callback(ret, err))
ret:
{
    status: true   //布尔型;true||false
}
err:
{
    code: -1,
    msg:''
}
var obj = api.require('sunmiPrinter');
obj.stopService(
function(ret, err) {
    alert(JSON.stringify(ret)+" "+JSON.stringify(err));
});
Android系统
可提供的1.0.2及更高版本
双屏通信监听
DSKernelListener(callback(ret))
ret:
{
    evenType: 'DisConnect',//DisConnect Connected
    ConnState : ''
}
var demo = api.require('sunmiPrinter');
demo.DSKernelListener(function(ret, err) {
    api.alert({msg: JSON.stringify(ret)});
});
Android系统
可提供的1.0.2及更高版本
检查连接
checkConnection(callback(ret))
ret:
{
    status: true
}
var demo = api.require('sunmiPrinter');
demo.checkConnection(function(ret, err) {
    api.alert({msg: JSON.stringify(ret)});
});
Android系统
可提供的1.0.2及更高版本
显示图片文件到副屏(多文件或者单文件,描述信息)
sendDSKernelFile({params}, callback(ret, err))
message:
data:
ret:
{
    status: true,   //布尔型;true||false
}
err:
{
    code: "",
    msg:""
}
var obj = api.require('sunmiPrinter');
obj.sendDSKernelFile({
    data : [''],
    message : ''
}, function(ret, err) {
    api.alert({msg: JSON.stringify(ret)});
});
支持以下布局: 全屏显示一张图片,建议图片分辨率1024*600,或者相应长宽比的图片,否则将被等比例缩放。图片是即时传即时显示的,并会将文件缓存在副屏,后续可根据文件ID重复调用,也就是说,理论上可以不用每次向副显程序发送相同图片。
Android系统
可提供的1.0.2及更高版本
显示文字到副屏(标题,内容,二维码)
sendDSKernelText({params}, callback(ret, err))
title:
content:
QRCodeImage:
ret:
{
    status: true,   //布尔型;true||false
}
err:
{
    code: "",
    msg:""
}
var obj = api.require('sunmiPrinter');
obj.sendDSKernelText({
    title : '',
    content : '',
    QRCodeImage : '',
}, function(ret, err) {
    api.alert({msg: JSON.stringify(ret)});
});
支持以下布局: 显示一行文字、显示标题和内容两行文字、显示二维码+两行文字
Android系统
可提供的1.0.2及更高版本
全屏结算清单(14寸屏)
sendBalanceList({params}, callback(ret, err))
data:
ret:
{
    status: true,   //布尔型;true||false
}
err:
{
    code: "",
    msg:""
}
var obj = api.require('sunmiPrinter');
obj.sendBalanceList({
    data : []
}, function(ret, err) {
    api.alert({msg: JSON.stringify(ret)});
});
支持以下布局:
全屏显示结算清单,该模板分为:标题区,清单区,结算区,模板样式不可修改,可修改其中字段文字。
标题:显示一串文字;
清单:显示一个表格,可以定义18列字段,行数不限制。当行数超出显示区域,将自动滚动至最后一行显示。当行数较多时,可通过上下滑动列表查看。
结算:可以定义18个字段。格式是商米固定的,但是字段标题和数据内容是主屏app传递的。
Android系统
可提供的1.0.2及更高版本
全屏含图片结算清单(14寸屏)
sendPicAndBalanceList({params}, callback(ret, err))
pics:
ret:
{
    status: true,   //布尔型;true||false
}
err:
{
    code: "",
    msg:""
}
var obj = api.require('sunmiPrinter');
obj.sendPicAndBalanceList({
    data : []
}, function(ret, err) {
    api.alert({msg: JSON.stringify(ret)});
});
支持以下布局: 左边显示单张图片,建议的图片分辨率为1186*1080。 右边显示结算清单,分为:标题区,清单区,结算区。 标题:显示一串字符。 清单:显示一个表格,可定义4列字段,行数不限制。当行数超出显示区域,将自动滚动至最后一行显示。当行数较多时,可通过上下滑动列表查看。 结算:可定义1~4个字段。 单张图片+结算清单 幻灯片+结算清单 全屏幻灯片
Android系统
可提供的1.0.2及更高版本
全屏含视频结算清单(14寸屏)
sendMp4AndBalanceList({params}, callback(ret, err))
mp4:
data:
ret:
{
    status: true,   //布尔型;true||false
}
err:
{
    code: "",
    msg:""
}
var obj = api.require('sunmiPrinter');
obj.sendMp4AndBalanceList({
    data : [],
    mp4 : ''
}, function(ret, err) {
    api.alert({msg: JSON.stringify(ret)});
});
支持以下布局: 左边区域显示单个视频,建议的分辨率大小为1186*1080。右边区域显示结算清单,分为:标题区,清单区,结算区。 标题:显示一串字符。 清单:显示一个表格,最多可定义4列字段,超过容器范围的行数据可滚动显示。 结算:可定义1到4个字段。 单个视频+结算清单 全屏单个视频
Android系统
可提供的1.0.2及更高版本