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 布尔型 js { status: true, //false } ##示例代码 js 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 布尔型 js { status: true, //false } ##示例代码 js 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 布尔型 js { status: true, //false } ##示例代码 js 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 对象 - 描述:(必填项)打印数据 - 内部字段: js [{ 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 为返回结果各参数可参考以上参数 js { status: true, //false print:"打印完毕" } ##示例代码 js 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 布尔型 js { status: true, //false } ##示例代码 js 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 布尔型 js { status: true, //false } ##示例代码 js 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 布尔型 js { status: true, //false } ##示例代码 js 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 布尔型 js { status: true, //false } ##示例代码 js 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 布尔型 js { status: true, //false count:1, } ##示例代码 js 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对象 js { "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": " " } } } ##示例代码 js 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及更高版本