2.3.0 • Published 9 months ago
@mitsuharu/react-native-sunmi-printer-library v2.3.0
@mitsuharu/react-native-sunmi-printer-library
React Native module that supports for SUNMI mobile printer devices.
Verification devices
I validate it with GMS enable and developable SUNMI V2 PRO and SUNMI V2s as follows. Though I do not have other devices, users report to work with V1s and V2.
| Android | SUNMI OS | firmware | storage | memory | NFC | |
|---|---|---|---|---|---|---|
| SUNMI V2 PRO | 7.1 | 3.6.23 | 754 | 16 GB | 2 GB | enable |
| SUNMI V2 PRO (foodpanda) | 7.1 | 1.0.33 | 138 | 8 GB | 1 GB | disable |
| SUNMI V2s | 11 | 3.0.11 | 242 | 32 GB | 3 GB | enable |
^GMS: Google Mobile Services https://www.android.com/gms
Installation
npm install @mitsuharu/react-native-sunmi-printer-libraryor
yarn add @mitsuharu/react-native-sunmi-printer-libraryUsage
You see example directory for details.
prepare
import * as SunmiPrinterLibrary from '@mitsuharu/react-native-sunmi-printer-library'try {
await SunmiPrinterLibrary.prepare()
} catch (error: any) {
console.warn("This device is not supported.")
}print Text
await SunmiPrinterLibrary.printText('Hello World')or
SunmiPrinterLibrary.printText('Hello World')!WARNING Printing without
awaitis faster, but may be interrupted by other printing. When it use withoutawait, it is better to use with Transaction.
change style
await SunmiPrinterLibrary.setAlignment('center')
await SunmiPrinterLibrary.setTextStyle('bold', true)
await SunmiPrinterLibrary.setParagraphStyle('textRightSpacing', 5)
await SunmiPrinterLibrary.setFontSize(32)
await SunmiPrinterLibrary.printText('Hello World')print Image (Base64)
const base64 = 'data:image/png;base64,iVBORw0KGgoAAAA...'
await SunmiPrinterLibrary.printImage(base64, 384, 'binary')
await SunmiPrinterLibrary.printImage(base64, 384, 'grayscale')print QR code
await SunmiPrinterLibrary.printQRCode('Hello World', 8, 'middle')scan QR code
const result = await SunmiPrinterLibrary.scan()or
SunmiPrinterLibrary.scan()useEffect(() => {
DeviceEventEmitter.addListener(
SunmiPrinterLibrary.EventType.onScanSuccess,
(message) => {
console.log(`[onScanSuccess] ${message}`)
})
DeviceEventEmitter.addListener(
SunmiPrinterLibrary.EventType.onScanFailed,
(message) => {
console.log(`[onScanFailed] ${message}`)
})
return () => {
DeviceEventEmitter.removeAllListeners(SunmiPrinterLibrary.EventType.onScanSuccess)
DeviceEventEmitter.removeAllListeners(SunmiPrinterLibrary.EventType.onScanFailed)
}
}, [])Transaction
await SunmiPrinterLibrary.enterPrinterBuffer(true)
SunmiPrinterLibrary.printText('Transaction Test 0')
await SunmiPrinterLibrary.commitPrinterBuffer()
SunmiPrinterLibrary.printText('Transaction Test 1')
SunmiPrinterLibrary.printText('Transaction Test 2')
SunmiPrinterLibrary.printText('Transaction Test 3')
SunmiPrinterLibrary.lineWrap(4)
await SunmiPrinterLibrary.exitPrinterBuffer(true)Raw Data (ESC/POS command)
// use to convert data to Base 64
import { Buffer } from 'buffer'
// ESC/POS command
// see: https://developer.sunmi.com/docs/en-US/index
const boldOn = new Uint8Array([0x1B, 0x45, 0x01])
const boldOnBase64 = Buffer.from(boldOn).toString('base64')
await SunmiPrinterLibrary.sendRAWData(boldOnBase64)
await SunmiPrinterLibrary.printText('Bold is ON')
const boldOff = new Uint8Array([0x1B, 0x45, 0x00])
const boldOffBase64= Buffer.from(boldOff).toString('base64')
await SunmiPrinterLibrary.sendRAWData(boldOffBase64)
await SunmiPrinterLibrary.printText('Bold is OFF')not support
- Cash Drawer API
- Black Mark Print API
Contributing
See the contributing guide to learn how to contribute to the repository and the development workflow.
Develop
yarn
yarn example androidexample
- Example supports React Native 0.74.
- It uses this example to develop this library.
Guides
- It creates Pull Requests to be merged into the develop branch.
- I recommend that add or fix test, readme and example.
リリース
(管理者のみ)develop ブランチのバージョン更新して、main ブランチへPRを作ってください。マージを行うと、自動で npm にリリースされます。
License
MIT
Made with create-react-native-library