sunmiT1Printer
来自于:开发者立即使用
startService printerInit printerSelfChecking printData lineWrap stopService openMoney cutPaper openMoneyCount openUSB openBrand openFilter closeFilter Usb
概述
商米科技
上海商米科技有限公司是一家专注为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及更高版本