Original repo: https://github.com/januslo/react-native-sunmi-inner-printer
This fork contains fixes from other developers who have updated the original repo further since it isn't updated anymore. The fixes are mainly React Native and gradle version updates.
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_ACTION | 打印头过热异常 |
FIRMWARE_UPDATING_ACTION | 打印机固件开始升级 |
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>
);
}
}