React Native module that supports for SUNMI mobile printer 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 |
npm install @mitsuharu/react-native-sunmi-printer-libraryor
yarn add @mitsuharu/react-native-sunmi-printer-libraryYou see example directory for details.
import * as SunmiPrinterLibrary from '@mitsuharu/react-native-sunmi-printer-library'try {
await SunmiPrinterLibrary.prepare()
} catch (error: any) {
console.warn("This device is not supported.")
}await SunmiPrinterLibrary.printText('Hello World')or
SunmiPrinterLibrary.printText('Hello World')Warning
Printing without await is faster, but may be interrupted by other printing. When it use without await, it is better to use with Transaction.
await SunmiPrinterLibrary.setAlignment('center')
await SunmiPrinterLibrary.setTextStyle('bold', true)
await SunmiPrinterLibrary.setParagraphStyle('textRightSpacing', 5)
await SunmiPrinterLibrary.setFontSize(32)
await SunmiPrinterLibrary.printText('Hello World')const base64 = 'data:image/png;base64,iVBORw0KGgoAAAA...'
await SunmiPrinterLibrary.printImage(base64, 384, 'binary')
await SunmiPrinterLibrary.printImage(base64, 384, 'grayscale')await SunmiPrinterLibrary.printQRCode('Hello World', 8, 'middle')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)
}
}, [])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)// 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')- Cash Drawer API
- Black Mark Print API
See the contributing guide to learn how to contribute to the repository and the development workflow.
yarn
yarn example android- Example supports React Native 0.74.
- It uses this example to develop this library.
- 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 にリリースされます。
MIT
Made with create-react-native-library