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 布尔型
  1. {
  2. status: true, //false
  3. }

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

printerInit

初始化打印机

printerInit(callback(ret, err))

callback(ret)

ret:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

printerSelfChecking

打印机自检

printerSelfChecking(callback(ret, err))

callback(ret)

ret:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

printData

设置打印数据并打印

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

params

data:

  • 类型:JSON 对象
  • 描述:(必填项)打印数据
  • 内部字段:

    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:'123456', //条码数据
    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:'www.hanchao9999.com', //二维码数据
    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. }]

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

编码说明
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 为返回结果各参数可参考以上参数
  1. {
  2. status: true, //false
  3. print:"打印完毕"
  4. }

示例代码

  1. var obj = api.require('sunmiT1Printer');
  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 : ['大白兔奶糖','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 : '201805291136661631631\n'
  46. }, {
  47. rowtype : 'printText',
  48. text : '门店名称 北国超市(新石店)\n'
  49. }, {
  50. rowtype : 'printText',
  51. text : '买家帐号 service@hanchao9999.com\n'
  52. }, {
  53. rowtype : 'printText',
  54. text : '--------------------------------\n'
  55. }, {
  56. rowtype : 'printText',
  57. text : '日期 2018-05-26 11:36\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.hanchao9999.com\n'
  70. }, {
  71. rowtype : 'printOriginalText',
  72. text : 'http://www.hanchao9999.com\n'
  73. }, {
  74. rowtype : 'setFontSize',
  75. fontsize : 24
  76. }, {
  77. rowtype : 'printText',
  78. text : 'http://www.hanchao9999.com\n'
  79. }, {
  80. rowtype : 'printOriginalText',
  81. text : 'http://www.hanchao9999.com\n'
  82. }, {
  83. rowtype : 'lineWrap',
  84. n : 2
  85. }, {
  86. rowtype : 'setAlignment',
  87. alignment : 1
  88. }, {
  89. rowtype : 'printBarCode',
  90. data : '123456',
  91. width : 160,
  92. height : 160
  93. }, {
  94. rowtype : 'setAlignment',
  95. alignment : 1
  96. }, {
  97. rowtype : 'printQRCode',
  98. data : 'http://www.hanchao9999.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 : 'printBitmap',
  114. image : 'widget://res/Images/1.jpg'
  115. }, {
  116. rowtype : 'lineWrap',
  117. n : 3
  118. }]
  119. }, function(ret, err) {
  120. alert(JSON.stringify(ret));
  121. });

可用性

Android系统

可提供的1.0.0及更高版本

lineWrap

走纸

lineWrap(callback(ret, err))

callback(ret)

ret:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

stopService

停止打印服务

stopService(callback(ret, err))

callback(ret)

ret:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

openMoney

打开钱箱

openMoney(callback(ret, err))

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

callback(ret)

ret:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

cutPaper

切纸

cutPaper(callback(ret, err))

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

callback(ret)

ret:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

openMoneyCount

打开钱箱次数

openMoneyCount(callback(ret, err))

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

callback(ret)

ret:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

openUSB

获取USB设备信息

openUSB(callback(ret, err))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:status 布尔型
  • 内部字段:deviceinfo JSON对象
  1. {
  2. "deviceInfo": {
  3. "0": {
  4. "0": "Bus=0001 Vendor=80ee Product=cafe Version=0500 ",
  5. "1": "Name=\"VirtualBox mouse integration\" ",
  6. "2": "Phys= ",
  7. "3": "Sysfs=/devices/pci0000:00/0000:00:04.0/input/input3 ",
  8. "4": "Uniq= ",
  9. "5": "Handlers=event3 ",
  10. "6": "PROP=0 ",
  11. "7": "EV=b ",
  12. "8": "KEY=10000 0 0 0 0 0 0 0 0 ",
  13. "9": "ABS=3 ",
  14. "10": " "
  15. },
  16. "1": {
  17. "0": "Bus=0000 Vendor=dbdb Product=0002 Version=0001 ",
  18. "1": "Name=\"gpio\" ",
  19. "2": "Phys= ",
  20. "3": "Sysfs=/devices/virtual/input/input6 ",
  21. "4": "Uniq= ",
  22. "5": "Handlers=kbd event6 ",
  23. "6": "PROP=0 ",
  24. "7": "EV=23 ",
  25. "8": "KEY=c0000 0 0 0 ",
  26. "9": "SW=1 ",
  27. "10": " "
  28. }
  29. }
  30. }

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

openBrand

获取品牌名

openBrand(callback(ret, err))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:status 布尔型
  1. {
  2. status: true, //false
  3. brand:'品牌名称',
  4. model:'',
  5. versionname:'',
  6. versioncode:'',
  7. }

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

openFilter

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

openFilter(callback(ret, err))

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

callback(ret)

ret:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

closeFilter

解除广播

closeFilter(callback(ret, err))

callback(ret)

ret:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

Usb

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

Usb(callback(ret, err))

callback(ret)

同步返回

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

  1. 8

异步返回

ret:

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

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

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

  1. {
  2. interfaceClass: 3,
  3. }

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本