React Native 版本的商米打印 Demo

Posted 爱coding的卖油翁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React Native 版本的商米打印 Demo相关的知识,希望对你有一定的参考价值。

React Native 版本的商米打印 Demo

React Native 集成商米打印模块。

快速集成

import SunmiPrintModule from './SunmiPrintModule';

SunmiPrintModule.xxx

项目地址:https://github.com/chuwuwang/sunmi-react-native-print-demo

API

1. initPrinter()

初始化商米打印机。

  • 参数
    • None
  • 返回值
    • Promise
      • resolve(): 包含一个 String 类型的 message 字段。
      • reject(): 包含一个 String 类型的 code 和 String 类型的 message 字段。

2. getPrinterStatus()

获取打印机状态。

  • 参数
    • None
  • 返回值
    • Callback,返回一个 Number 类型的 status 字段,status:
      • 1 - 打印机⼯作正常
      • 2 - 打印机准备中
      • 3 - 通讯异常
      • 4 - 缺纸
      • 5 - 过热
      • 6 - 开盖
      • 7 - 切⼑异常
      • 8 - 切⼑恢复
      • 9 - 未检测到⿊标
      • 505 - 未检测到打印机
      • 507 - 打印机固件升级失败

3. reset()

重置打印机的逻辑程序(例如:排版、加粗等样式设置),但不清空缓存区数据,因此未完成的打印作业将在重置后继续。

  • 参数
    • None
  • 返回值
    • Callback,返回 Bool 类型的指令操作结果。

4. setBold()

设置字体是否加粗,默认值是 false。

  • 参数
    • Bool,true:设置字体加粗,false:取消字体加粗。
  • 返回值
    • Callback,返回 Bool 类型的指令操作结果。

5. setFontSize()

设置字体大小。

  • 参数
    • Number,字体大小。
  • 返回值
    • Callback,返回 Bool 类型的指令操作结果。

6. setAlignment()

设置对其模式。

  • 参数
    • Number,对其模式。
      • 0 - 居左
      • 1 - 居中
      • 2 - 居右
  • 返回值
    • Callback,返回 Bool 类型的指令操作结果。

7. printText()

打印文本。

  • 参数
    • String,待打印的文本数据.
  • 返回值
    • Callback,返回 Bool 类型的指令操作结果。该接⼝返回处理结果是指命令处理执⾏结果,⽽不是打印出纸的处理结果。

8. printImage()

打印图片。

  • 参数
    • String,base64 格式的图片数据.
  • 返回值
    • Callback,返回 Bool 类型的指令操作结果。该接⼝返回处理结果是指命令处理执⾏结果,⽽不是打印出纸的处理结果。

Note: 因为商米的 V 系列和 P 系列使用58毫米打印机。如果你希望打印的图像居中,请制作一张宽度为384px的图像。图⽚最⼤像素需要宽x⾼⼩于250万,且宽度根据纸张规格设置(58为384像素, 80为576像素),如果超过纸张宽度将不显示。

9. printBarcode()

打印⼀维条码。

  • 参数
    • String,待打印的一维条码数据。
    • Number,条码类型(0 - 8)
      • 0 - UPC-A
      • 1 - UPC-E
      • 2 - JAN13(EAN13)
      • 3 - JAN8(EAN8)
      • 4 - CODE39
      • 5 - ITF
      • 6 - CODABAR
      • 7 - CODE93
      • 8 - CODE128
    • Number,条码⾼度, 取值 1 - 255, 默认:162。
    • Number,条码宽度, 取值 2 - 6, 默认:2。
    • Number,⽂字位置(0 - 3)
      • 0 - 不打印⽂字
      • 1 - ⽂字在条码上⽅
      • 2 - ⽂字在条码下⽅
      • 3 - 条码上下⽅均打印
  • 返回值
    • Callback,返回 Bool 类型的指令操作结果。该接⼝返回处理结果是指命令处理执⾏结果,⽽不是打印出纸的处理结果。

10. printQRCode()

打印二维码条码。

  • 参数
    • String,待打印的二维码数据
    • Number,QR码块⼤⼩,单位:点,取值 4 ⾄ 16。
    • Number,⼆维码纠错等级(0 - 3)
      • 0 - 纠错级别 L (7%)
      • 1 - 纠错级别 M (15%)
      • 2 - 纠错级别 Q (25%)
      • 3 - 纠错级别 H (30%)
  • 返回值
    • Callback,返回 Bool 类型的指令操作结果。该接⼝返回处理结果是指命令处理执⾏结果,⽽不是打印出纸的处理结果。

11. printTable()

打印表格。

  • 参数
    • Array, 各列⽂本字符串数组。
    • Array, 各列宽度数组,以英⽂字符计算,每个中⽂字符占两个英⽂字符,每个宽度⼤于 0。
    • Array, 各列对⻬⽅式:0 居左,1 居中,2 居右。
  • 返回值
    • Callback,返回 Bool 类型的指令操作结果。该接⼝返回处理结果是指命令处理执⾏结果,⽽不是打印出纸的处理结果。

12. printLine()

打印机⾛纸 N ⾏。

  • 参数
    • Number, 走纸的行数。
  • 返回值
    • Callback,返回 Bool 类型的指令操作结果。该接⼝返回处理结果是指命令处理执⾏结果,⽽不是打印出纸的处理结果。

13. enterPrinterBuffer()

进⼊事务打印模式。

事务打印模式适⽤于需要控制打印内容并得到打印结果反馈(是否打印出⼩票)的需求,此模式相当于建⽴⼀个事务队列缓冲区,当开发者进⼊事务打印模式,将开启⼀个事务队列,可以向其中增加打印⽅法,此时打印机不会⽴刻打印内容,当提交事务后,打印机才会依次执⾏队列中的任务,执⾏结束将获得此次事务的结果反馈。

事务打印注意事项:

  • 当进⼊缓冲(事务)打印后,提交打印成功将返回成功结果,但遇到打印机异常如缺纸、过热等,将会丢掉本次提交事务中所有指令任务,同时反馈异常,即当⼀单任务执⾏前或执⾏中打印机异常,则此单不会打出。
  • 当指令打印和缓冲(事务)打印交替使⽤时,如果打印机异常,不会清除指令打印的内容。
  • 进⼊事务打印模式后,同样使⽤1.2.x.中的其它接⼝⽅法输出内容,但不会⽴即打印输出,会将输出内容缓存到缓存区,当调⽤ exitPrinterBuffer() ⽅法才会进⾏打印输出。
  • 事务打印结果回调在 Promise ⽅法中的 resolve(String code, String message) ⽅法(会有⼀定的耗时,要等物理打印出纸,不推荐单⾏频繁使⽤事务打印,将会影响打印速度,推荐整张⼩票使⽤事务打印),对应返回 code 和 message 如下:
    • a) 0 ! 打印成功,message 为 “Transaction print successful!”
    • b) 1 ! 打印失败,message 为 “Transaction print failed!”
  • 参数
    • None
  • 返回值
    • None

14. exitPrinterBuffer()

退出事务打印模式并回调结果。

  • 参数
    • None
  • 返回值
    • Promise
      • resolve(): 包含一个 String 类型的 code 和 String 类型的 message 字段。code 为 0 表示打印成功,其他值表示打印失败。
      • reject(): 包含一个 String 类型的 code 和 String 类型的 message 字段。

备注

此 Demo 仅适用于商米 P 系列和 V 系列产品,不适用于其他产品。也没有包含支付、扫码、客显、人脸、指纹等其他模块,如果有其他需求,请与我联系。

Email: chuwuwang@126.com

以上是关于React Native 版本的商米打印 Demo的主要内容,如果未能解决你的问题,请参考以下文章

React Native 版本的商米打印 Demo

React Native 版本的商米打印 Demo

Uniapp 原生插件商米内置打印机插件

React-Native在gitHub下载的Demo不能运行问题!!!

React Native DEMO for Android

react-native-router-flux