react-native-sunmi-printer-hk
Version:
123 lines (91 loc) • 7.17 kB
Markdown
# @heasy/react-native-sunmi-printer
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
## TOC
- [Installation](#Installation)
- [Linking](#Linking)
- [Usage](#Usage)
- [API](#API)
- [Broadcast Events Listener](#Broadcast-Event-Listener)
## Installation:
Using npm:
```bash
npm install @heasy/react-native-sunmi-printer --save
```
or using yarn:
```bash
yarn add @heasy/react-native-sunmi-printer
```
## Linking
Automatic linking is supported for all platforms (even windows on React native >= 0.63!)
Previous versions need to do manual linking.
## Usage
```js
import SunmiPrinter from '@heasy/react-native-sunmi-printer';
SunmiPrinter.printerText('Hello World\n');
```
## Scan
```js
import { SunmiScan } from '@heasy/react-native-sunmi-printer';
useEffect(() => {
DeviceEventEmitter.addListener('onScanSuccess', (msg) => {
console.log('result', msg);
});
return () => DeviceEventEmitter.removeAllListeners('onScanSuccess');
}, []);
SunmiScan.scan();
```
## API
The example app in this repository shows an example usage of every single API, consult the example app if you have questions, and if you think you see a problem make sure you can reproduce it using the example app before reporting it, thank you.
| Method | Return Type | iOS | Android | Windows | Web |
| ----------------------------------------------------------------------- | ----------------- | :-: | :-----: | :-----: | :-: |
| [printerInit()](#printerInit) | `null` | ❌ | ✅ | ❌ | ❌ |
| [printerSelfChecking()](#printerSelfChecking) | `null` | ❌ | ✅ | ❌ | ❌ |
| [getPrinterSerialNo()](#getPrinterSerialNo) | `Promise<string>` | ❌ | ✅ | ❌ | ❌ |
| [getPrinterVersion()](#getPrinterVersion) | `Promise<string>` | ❌ | ✅ | ❌ | ❌ |
| [getServiceVersion()](#getServiceVersion) | `Promise<string>` | ❌ | ✅ | ❌ | ❌ |
| [getPrinterModal()](#getPrinterModal) | `Promise<string>` | ❌ | ✅ | ❌ | ❌ |
| [getPrinterPaper()](#getPrinterPaper) | `Promise<string>` | ❌ | ✅ | ❌ | ❌ |
| [getPrintedLength()](#getPrintedLength) | `null` | ❌ | ✅ | ❌ | ❌ |
| [updatePrinterState()](#updatePrinterState) | `Promise<number>` | ❌ | ✅ | ❌ | ❌ |
| [sendRAWData()](#sendRAWData) | `null` | ❌ | ✅ | ❌ | ❌ |
| [setPrinterStyle()](#setPrinterStyle) | `null` | ❌ | ✅ | ❌ | ❌ |
| [setAlignment()](#setAlignment) | `null` | ❌ | ✅ | ❌ | ❌ |
| [setFontName()](#setFontName) | `null` | ❌ | ✅ | ❌ | ❌ |
| [setFontSize()](#setFontSize) | `null` | ❌ | ✅ | ❌ | ❌ |
| [setFontWeight()](#setFontWeight) | `null` | ❌ | ✅ | ❌ | ❌ |
| [printerText()](#printerText) | `null` | ❌ | ✅ | ❌ | ❌ |
| [printTextWithFont()](#printTextWithFont) | `null` | ❌ | ✅ | ❌ | ❌ |
| [printOriginalText()](#printOriginalText) | `null` | ❌ | ✅ | ❌ | ❌ |
| [printColumnsText()](#printColumnsText) | `null` | ❌ | ✅ | ❌ | ❌ |
| [printColumnsString()](#printColumnsString) | `null` | ❌ | ✅ | ❌ | ❌ |
| [printBarCode()](#printBarCode) | `null` | ❌ | ✅ | ❌ | ❌ |
| [printQRCode()](#printQRCode) | `null` | ❌ | ✅ | ❌ | ❌ |
| [print2DCode()](#print2DCode) | `null` | ❌ | ✅ | ❌ | ❌ |
| [commitPrint()](#commitPrint) | `null` | ❌ | ✅ | ❌ | ❌ |
| [enterPrinterBuffer()](#enterPrinterBuffer) | `null` | ❌ | ✅ | ❌ | ❌ |
| [exitPrinterBuffer()](#exitPrinterBuffer) | `null` | ❌ | ✅ | ❌ | ❌ |
| [commitPrinterBuffer()](#commitPrinterBuffer) | `null` | ❌ | ✅ | ❌ | ❌ |
| [commitPrinterBufferWithCallbacka()](#commitPrinterBufferWithCallbacka) | `null` | ❌ | ✅ | ❌ | ❌ |
| [lineWrap()](#lineWrap) | `null` | ❌ | ✅ | ❌ | ❌ |
| [cutPaper()](#cutPaper) | `null` | ❌ | ✅ | ❌ | ❌ |
| [getCutPaperTimes()](#getCutPaperTimes) | `Promise<number>` | ❌ | ✅ | ❌ | ❌ |
| [openDrawer()](#openDrawer) | `null` | ❌ | ✅ | ❌ | ❌ |
| [getDrawerStatus()](#getCutPaperTimes) | `null` | ❌ | ✅ | ❌ | ❌ |
| [printBitmap()](#printBitmap) | `null` | ❌ | ✅ | ❌ | ❌ |
| [printBitmapCustom()](#printBitmapCustom) | `null` | ❌ | ✅ | ❌ | ❌ |
## Broadcast-Event-Listener
You can enable `Output Via Broadcast` option in your SUNMI Device `Scanner's Settings` and then listen the `onScanSuccess` Event with the `result`.
You have to use physical special key buttons on your SUNMI device or soft floating button on your device (if you enabled that) to trigger infrared scanning for the barcodes . And then afterwards , you can get the result in the `onScanSuccess` event.
```js
useEffect(() => {
DeviceEventEmitter.addListener('onScanSuccess', (msg) => {
console.log('result', msg);
});
return () => DeviceEventEmitter.removeAllListeners('onScanSuccess');
}, []);
```
## Contributing
See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.
## License
MIT