sunmiPrinter

来自于:开发者立即使用

startService printerInit printerSelfChecking printData lineWrap stopService DSKernelListener checkConnection sendDSKernelFile sendDSKernelText sendBalanceList sendPicAndBalanceList sendMp4AndBalanceList

论坛示例

为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码供您参考。

概述

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

SUNMIUI 商米设备运行的是SUNMIUI系统,SUNMIUI是基于Android深度优化改良的操作系统,支持安装普通基于Android系统的app,专为智能商用场景深度定制,从操作体验、性能提升与产品外观设计内外呼应,相得益彰。让用户在使用硬件的同时能享受更加专业系统的软件服务体验。

应用市场 SUNMIUI内部有一个应用市场,合作伙伴可以通过应用市场将自己的应用大规模分发到商米的设备上。部分合作伙伴可以有一个自己管理的应用市场,默认旗下设备用户只能通过应用市场为设备安装应用。

sunmiPrinter 模块概述 商米打印模块,支持商米主推的智能商用硬件V1,V1 设备应用于包括外卖接单,打印小票,扫描,收款,团购核销,点餐预约等一系列商业场景。

商米注册合作伙伴参考商米注册合作伙伴

模块接口

startService

开启打印服务

startService(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true //布尔型;true||false
  3. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. msg: ''
  3. }

示例代码

  1. var demo = api.require('sunmiPrinter');
  2. demo.startService(function(ret, err) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

Android系统

可提供的1.0.2及更高版本

printerInit

初始化打印机

printerInit(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true //布尔型;true||false
  3. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. msg: ''
  3. }

示例代码

  1. var demo = api.require('sunmiPrinter');
  2. demo.printerInit(function(ret, err) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

Android系统

可提供的1.0.2及更高版本

printerSelfChecking

打印机自检

printerSelfChecking(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false
  3. response : //
  4. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. msg: ''
  3. }

示例代码

  1. var obj = api.require('sunmiPrinter');
  2. obj.printerSelfChecking(
  3. function(ret, err) {
  4. alert(JSON.stringify(ret));
  5. });

可用性

Android系统

可提供的1.0.2及更高版本

printData

设置打印数据

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

params

data:

  • 类型:数组
  • 描述:(必输项)打印数据。
  1. [{
  2. rowtype: 'printText',//打印文字,文字宽度满一行自动换行排版,不满一整行不打印除非强制换行
  3. text : '' //要打印的文字字符串
  4. },{
  5. rowtype: 'printOriginalText', //文字按矢量文字宽度原样输出,即每个字符不等宽
  6. text : '' //要打印的文字字符串
  7. },{
  8. rowtype: 'printTextWithFont', //打印指定字体的文本,字体设置只对本次有效
  9. text : '', //要打印的文字字符串
  10. typeface:'', //字体名称(目前只支持"gh"字体)
  11. fontsize:12 //字体大小
  12. },{
  13. rowtype: 'printColumnsText', //打印表格的一行,可以指定列宽、对齐方式
  14. colsTextArr : ['名稱','數量','單價','金額'], //各列文本字符串数组
  15. colsWidthArr : [10, 6, 6, 8], //各列宽度数组(以英文字符计算, 每个中文字符占两个英文字符, 每个宽度大于0)
  16. colsAlign : [0, 2, 2, 2] //各列对齐方式(0居左, 1居中, 2居右)
  17. //备注: 三个参数的数组长度应该一致, 如果colsText[i]的宽度大于colsWidth[i], 则文本换行
  18. },{
  19. rowtype: 'setFontSize', //设置字体大小, 对之后打印有影响,除非初始化
  20. fontsize:12 //字体大小
  21. },{
  22. rowtype: 'lineWrap', //打印机走纸(强制换行,结束之前的打印内容后走纸n行)
  23. n:3 //走纸行数
  24. },{
  25. rowtype: 'setAlignment', //设置对齐模式,对之后打印有影响,除非初始化
  26. alignment:0 //对齐方式 0--居左 , 1--居中, 2--居右
  27. },{
  28. rowtype: 'printBarCode', //打印一维条码
  29. data:'', //条码数据
  30. symbology:8,//0-8
  31. width:160, //条码宽度: 取值2至6, 默认2
  32. height:160, //条码高度:取值1到255, 默认162
  33. textposition : 2 //文字位置 0--不打印文字, 1--文字在条码上方, 2--文字在条码下方, 3--条码上下方均打印
  34. },{
  35. rowtype: 'printQRCode', //打印二维条码
  36. data:'', //二维码数据
  37. size:240 //二维码块大小(单位:点)
  38. },{
  39. rowtype: 'printBitmap', //打印图片
  40. image:'widget://res/Images/1.jpg' //图片bitmap对象(最大宽度384像素,超过无法打印并且回调callback异常函数) 支持widget:// fs://
  41. },{
  42. rowtype: 'printTypeHorizontalLine', //画特殊水平线
  43. type:0, //水平线类型(0至11)
  44. },{
  45. rowtype: 'cutPaper'//切纸
  46. }]

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false
  3. result : //
  4. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. code: "",
  3. msg:""
  4. }

示例代码

  1. var obj = api.require('sunmiPrinter');
  2. obj.printData({
  3. data : [{
  4. rowtype : 'printColumnsText',
  5. colsTextArr : ['名稱','數量','單價','金額'],
  6. colsWidthArr : [10, 6, 6, 8],
  7. colsAlign : [1, 2, 2, 2]
  8. },{
  9. rowtype : 'printColumnsText',
  10. colsTextArr : ['草莓酸奶A布甸','4','12.00','48.00'],
  11. colsWidthArr : [10, 6, 6, 8],
  12. colsAlign : [0, 2, 2, 2]
  13. },{
  14. rowtype : 'printText',
  15. text : '支付宝\n'
  16. }, {
  17. rowtype : 'printText',
  18. text : 'Alipay\n'
  19. }, {
  20. rowtype : 'printText',
  21. text : '===============================\n'
  22. }, {
  23. rowtype : 'printText',
  24. text : '订单金额 0.01元\n'
  25. }, {
  26. rowtype : 'printText',
  27. text : ' 参与优惠金额 0.01元\n'
  28. }, {
  29. rowtype : 'printText',
  30. text : '商家实收\n'
  31. }, {
  32. rowtype : 'printText',
  33. text : '-------------------------------\n'
  34. }, {
  35. rowtype : 'printText',
  36. text : '开票金额(用户实付) 0.01元\n'
  37. }, {
  38. rowtype : 'printText',
  39. text : '--------------------------------\n'
  40. }, {
  41. rowtype : 'printText',
  42. text : '交易号:\n'
  43. }, {
  44. rowtype : 'printText',
  45. text : '2016040621001004150224503623\n'
  46. }, {
  47. rowtype : 'printText',
  48. text : '门店名称 正新鸡排(欢乐谷二店)\n'
  49. }, {
  50. rowtype : 'printText',
  51. text : '买家帐号 1id***@21cn.com\n'
  52. }, {
  53. rowtype : 'printText',
  54. text : '--------------------------------\n'
  55. }, {
  56. rowtype : 'printText',
  57. text : '日期 2016-04-06 11:29\n'
  58. }, {
  59. rowtype : 'printText',
  60. text : '--------------------------------\n'
  61. }, {
  62. rowtype : 'printText',
  63. text : '此小票不需要用户签字\n'
  64. }, {
  65. rowtype : 'setFontSize',
  66. fontsize : 32
  67. }, {
  68. rowtype : 'printText',
  69. text : 'http://www.sunmi.com\n'
  70. }, {
  71. rowtype : 'printOriginalText',
  72. text : 'http://www.sunmi.com\n'
  73. }, {
  74. rowtype : 'setFontSize',
  75. fontsize : 24
  76. }, {
  77. rowtype : 'printText',
  78. text : 'http://www.sunmi.com\n'
  79. }, {
  80. rowtype : 'printOriginalText',
  81. text : 'http://www.sunmi.com\n'
  82. }, {
  83. rowtype : 'lineWrap',
  84. n : 2
  85. }, {
  86. rowtype : 'setAlignment',
  87. alignment : 1
  88. }, {
  89. rowtype : 'printBarCode',
  90. data : '6921505036025',
  91. width : 160,
  92. height : 160
  93. }, {
  94. rowtype : 'setAlignment',
  95. alignment : 1
  96. }, {
  97. rowtype : 'printQRCode',
  98. data : 'http://www.sunmi.com',
  99. size : 240
  100. }, {
  101. rowtype : 'printTypeHorizontalLine',
  102. type : 0
  103. }, {
  104. rowtype : 'printTypeHorizontalLine',
  105. type : 1
  106. }, {
  107. rowtype : 'printTypeHorizontalLine',
  108. type : 2
  109. }, {
  110. rowtype : 'printTypeHorizontalLine',
  111. type : 3
  112. }, {
  113. rowtype : 'printTypeHorizontalLine',
  114. type : 4
  115. }, {
  116. rowtype : 'printTypeHorizontalLine',
  117. type : 5
  118. }, {
  119. rowtype : 'printTypeHorizontalLine',
  120. type : 6
  121. }, {
  122. rowtype : 'printTypeHorizontalLine',
  123. type : 7
  124. }, {
  125. rowtype : 'printTypeHorizontalLine',
  126. type : 8
  127. }, {
  128. rowtype : 'printTypeHorizontalLine',
  129. type : 9
  130. }, {
  131. rowtype : 'printTypeHorizontalLine',
  132. type : 10
  133. }, {
  134. rowtype : 'printTypeHorizontalLine',
  135. type : 11
  136. }, {
  137. rowtype : 'printBitmap',
  138. image : 'widget://res/Images/1.jpg'
  139. }, {
  140. rowtype : 'lineWrap',
  141. n : 3
  142. }]
  143. }, function(ret, err) {
  144. alert(JSON.stringify(ret));
  145. });

可用性

Android系统

可提供的1.0.2及更高版本

lineWrap

走纸行数

lineWrap(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true //布尔型;true||false
  3. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. msg: ''
  3. }

示例代码

  1. var obj = api.require('sunmiPrinter');
  2. obj.lineWrap(function(ret, err) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

Android系统

可提供的1.0.2及更高版本

stopService

停止打印服务

stopService(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true //布尔型;true||false
  3. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. code: -1,
  3. msg:''
  4. }

示例代码

  1. var obj = api.require('sunmiPrinter');
  2. obj.stopService(
  3. function(ret, err) {
  4. alert(JSON.stringify(ret)+" "+JSON.stringify(err));
  5. });

可用性

Android系统

可提供的1.0.2及更高版本

DSKernelListener

双屏通信监听

DSKernelListener(callback(ret))

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. evenType: 'DisConnect',//DisConnect Connected
  3. ConnState : ''
  4. }

示例代码

  1. var demo = api.require('sunmiPrinter');
  2. demo.DSKernelListener(function(ret, err) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

Android系统

可提供的1.0.2及更高版本

checkConnection

检查连接

checkConnection(callback(ret))

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true
  3. }

示例代码

  1. var demo = api.require('sunmiPrinter');
  2. demo.checkConnection(function(ret, err) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

Android系统

可提供的1.0.2及更高版本

sendDSKernelFile

显示图片文件到副屏(多文件或者单文件,描述信息)

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

params

message:

  • 类型:字符串
  • 描述:(可选项)描述信息。

data:

  • 类型:数组
  • 描述:(必输项)这个是要显示的图片的本地路径信息。(支持:fs://)。

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false
  3. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. code: "",
  3. msg:""
  4. }

示例代码

  1. var obj = api.require('sunmiPrinter');
  2. obj.sendDSKernelFile({
  3. data : [''],
  4. message : ''
  5. }, function(ret, err) {
  6. alert(JSON.stringify(ret));
  7. });

备注说明

支持以下布局: 全屏显示一张图片,建议图片分辨率1024*600,或者相应长宽比的图片,否则将被等比例缩放。图片是即时传即时显示的,并会将文件缓存在副屏,后续可根据文件ID重复调用,也就是说,理论上可以不用每次向副显程序发送相同图片。

可用性

Android系统

可提供的1.0.2及更高版本

sendDSKernelText

显示文字到副屏(标题,内容,二维码)

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

params

title:

  • 类型:字符串
  • 描述:(可选项)标题。

content:

  • 类型:字符串
  • 描述:(可选项)内容。

QRCodeImage:

  • 类型:字符串
  • 描述:(可选项)二维码图片文件路径(支持:fs://)。

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false
  3. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. code: "",
  3. msg:""
  4. }

示例代码

  1. var obj = api.require('sunmiPrinter');
  2. obj.sendDSKernelText({
  3. title : '',
  4. content : '',
  5. QRCodeImage : '',
  6. }, function(ret, err) {
  7. alert(JSON.stringify(ret));
  8. });

备注说明

支持以下布局: 显示一行文字、显示标题和内容两行文字、显示二维码+两行文字

可用性

Android系统

可提供的1.0.2及更高版本

sendBalanceList

全屏结算清单(14寸屏)

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

params

data:

  • 类型:数组
  • 描述:(必填项)清单内容(具体字段请参考商米接口文档)。

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false
  3. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. code: "",
  3. msg:""
  4. }

示例代码

  1. var obj = api.require('sunmiPrinter');
  2. obj.sendBalanceList({
  3. data : []
  4. }, function(ret, err) {
  5. alert(JSON.stringify(ret));
  6. });

备注说明

支持以下布局: 全屏显示结算清单,该模板分为:标题区,清单区,结算区,模板样式不可修改,可修改其中字段文字。 标题:显示一串文字; 清单:显示一个表格,可以定义1~8列字段,行数不限制。当行数超出显示区域,将自动滚动至最后一行显示。当行数较多时,可通过上下滑动列表查看。 结算:可以定义1~8个字段。格式是商米固定的,但是字段标题和数据内容是主屏app传递的。

可用性

Android系统

可提供的1.0.2及更高版本

sendPicAndBalanceList

全屏含图片结算清单(14寸屏)

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

params

pics:

  • 类型:数组
  • 描述:(必填项)图片内容(支持fs://)。

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false
  3. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. code: "",
  3. msg:""
  4. }

示例代码

  1. var obj = api.require('sunmiPrinter');
  2. obj.sendPicAndBalanceList({
  3. data : []
  4. }, function(ret, err) {
  5. alert(JSON.stringify(ret));
  6. });

备注说明

支持以下布局: 左边显示单张图片,建议的图片分辨率为1186*1080。 右边显示结算清单,分为:标题区,清单区,结算区。 标题:显示一串字符。 清单:显示一个表格,可定义4列字段,行数不限制。当行数超出显示区域,将自动滚动至最后一行显示。当行数较多时,可通过上下滑动列表查看。 结算:可定义1~4个字段。 单张图片+结算清单 幻灯片+结算清单 全屏幻灯片

可用性

Android系统

可提供的1.0.2及更高版本

sendMp4AndBalanceList

全屏含视频结算清单(14寸屏)

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

params

mp4:

  • 类型:字符串
  • 描述:(必填项)视频文件(支持fs://)。

data:

  • 类型:数组
  • 描述:(必填项)清单内容(具体字段请参考商米接口文档)。

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false
  3. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. code: "",
  3. msg:""
  4. }

示例代码

  1. var obj = api.require('sunmiPrinter');
  2. obj.sendMp4AndBalanceList({
  3. data : [],
  4. mp4 : ''
  5. }, function(ret, err) {
  6. alert(JSON.stringify(ret));
  7. });

备注说明

支持以下布局: 左边区域显示单个视频,建议的分辨率大小为1186*1080。右边区域显示结算清单,分为:标题区,清单区,结算区。 标题:显示一串字符。 清单:显示一个表格,最多可定义4列字段,超过容器范围的行数据可滚动显示。 结算:可定义1到4个字段。 单个视频+结算清单 全屏单个视频

可用性

Android系统

可提供的1.0.2及更高版本