https://docs.sunmi.com/en/ (React native plugin Referring the sunmi V1 printer document and demos)
Caution: this is not the official project. I share it because I am working on this device but no any official support in react-native It's welcome to ask any question about the usage,problems or feature required, I will support ASAP.
Offical Demos plz refer: https://github.com/shangmisunmi/SunmiPrinterDemo
for scanner, refer this: https://github.com/januslo/react-native-sunmi-inner-scanner
Step 1.
install with npm: Check in NPM
npm install react-native-sunmi-inner-printer --save
or you may need to install via the clone address directly:
npm install https://github.com/januslo/react-native-sunmi-inner-printer.git --save
Step 2:
Links this plugin to your project.
react-native link react-native-sunmi-inner-printer
or you may need to link manually
- modify settings.gradle
include ':react-native-sunmi-inner-printer'
project(':react-native-sunmi-inner-printer').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-sunmi-inner-printer/android')
- modify app/build.gradle,add dependenceie:
compile project(':react-native-sunmi-inner-printer')
- adds package references to MainPackage.java
import com.sunmi.innerprinter.SunmiInnerPrinterPackage;
...
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new SunmiInnerPrinterPackage()
);
}
Step 3:
refer in the javascript:
import SunmiInnerPrinter from 'react-native-sunmi-inner-printer';
See examples folder of the source code that you can find a simple example of printing receipt. // TODO
Name | Description |
---|---|
Constants | 打印状态常量 |
hasPrinter | boolean,是否有打印机 |
printerVersion | 打印机固件版本 |
printerSerialNo | 打印机序列号 |
printerModal | 打印机型号 |
Name | Description |
---|---|
OUT_OF_PAPER_ACTION | 缺纸异常 |
ERROR_ACTION | 打印错误 |
NORMAL_ACTION | 可以打印 |
COVER_OPEN_ACTION | 开盖子 |
COVER_ERROR_ACTION | 关盖子异常 |
KNIFE_ERROR_1_ACTION | 切刀异常1-卡切刀 |
KNIFE_ERROR_2_ACTION | 切刀异常2-切刀修复 |
OVER_HEATING_ACITON | 打印头过热异常 |
FIRMWARE_UPDATING_ACITON | 打印机固件开始升级 |
import React, { Component } from 'react';
import { View, Text, DeviceEventEmitter } from 'react-native';
import SunmiInnerPrinter from 'react-native-sunmi-inner-printer';
class PrinterComponent extends Component {
componentWillMount() {
this._printerStatusListener = DeviceEventEmitter.addListener('PrinterStatus', action => {
switch(action) {
case SunmiInnerPrinter.Constants.NORMAL_ACTION: // 可以打印
// your code
break;
case SunmiInnerPrinter.Constants.OUT_OF_PAPER_ACTION: // 缺纸异常
// your code
break;
case SunmiInnerPrinter.Constants.COVER_OPEN_ACTION: // 开盖子
// your code
break;
default:
// your code
}
});
}
componentWillUnmount() {
this._printerStatusListener.remove();
}
render() {
return (
<View>
<Text>Hello World!</Text>
</View>
)
}
}