@orders.co/epson-tm-epos-sdk
Version:
React Native SDK for Epson ePOS-Print TM printers
219 lines (173 loc) • 5.34 kB
Markdown
# @orders.co/epson-tm-epos-sdk
A React Native wrapper for the Epson ePOS-Print SDK, allowing you to interact with Epson TM series POS printers from your React Native applications.
## Installation
```bash
npm install @orders.co/epson-tm-epos-sdk --save
# or
yarn add @orders.co/epson-tm-epos-sdk
```
### Android Setup
1. Add the following to your `android/settings.gradle`:
```gradle
include ':epson-tm-epos-sdk'
project(':epson-tm-epos-sdk').projectDir = new File(rootProject.projectDir, '../node_modules/@orders.co/epson-tm-epos-sdk/android')
```
2. Add the implementation to your `android/app/build.gradle` dependencies:
```gradle
dependencies {
// ...
implementation project(':epson-tm-epos-sdk')
}
```
3. Import and add the package to your `MainApplication.java`:
```java
import com.reactnative.eposprint.EposPrintPackage;
// ...
@Override
protected List<ReactPackage> getPackages() {
return Arrays.asList(
new MainReactPackage(),
new EposPrintPackage() // <-- Add this line
);
}
```
4. Add permissions to your `AndroidManifest.xml`:
```xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
```
## Usage
```javascript
import EposPrintSdk, {
DEVTYPE_TCP,
LANG_EN,
ALIGN_CENTER,
FONT_A,
CUT_FEED
} from '@orders.co/epson-tm-epos-sdk';
// Initialize the SDK
await EposPrintSdk.initialize();
// Connect to the printer
await EposPrintSdk.openPrinter({
deviceType: DEVTYPE_TCP,
target: '192.168.192.168', // IP address or Bluetooth MAC address
printerModel: 'TM-m30',
printerLanguage: LANG_EN,
isStatusMonitor: true,
interval: 3000
});
// Create and initialize a builder
const builder = EposPrintSdk.createBuilder();
await builder.initialize();
// Add commands to the builder
await builder.addTextAlign(ALIGN_CENTER);
await builder.addTextFont(FONT_A);
await builder.addTextSize(2, 2);
await builder.addText('Hello, ePOS Print!\n');
await builder.addFeedLine(1);
await builder.addTextSize(1, 1);
await builder.addText('This is a test receipt\n');
await builder.addFeedLine(1);
await builder.addCut(CUT_FEED);
// Send the print job to the printer
try {
const result = await EposPrintSdk.sendData();
console.log('Print success', result);
} catch (error) {
console.error('Print error', error);
}
// Close the printer connection when done
await EposPrintSdk.closePrinter();
// Listen for printer status changes
const statusSubscription = EposPrintSdk.addStatusListener((event) => {
console.log('Printer status changed:', event);
});
// Remove listener when component unmounts
EposPrintSdk.removeStatusListener(statusSubscription);
```
## Supported Printer Models
- TM-m30
- TM-m30II
- TM-m30II-H
- TM-m30II-NT
- TM-m30III
- TM-m30III-H
- TM-m50
- TM-T20
- TM-T20II
- TM-T20III
- TM-T20IIIL
- TM-T70
- TM-T70II
- TM-T82
- TM-T82II
- TM-T82III
- TM-T82X
- TM-T83II
- TM-T83III
- TM-T88V
- TM-T88VI
- TM-T88VII
- TM-U220
- TM-U330
## API Reference
### EposPrintSdk
Static methods:
- `initialize()`: Initialize the SDK
- `openPrinter(config)`: Connect to a printer
- `closePrinter()`: Disconnect from the printer
- `getPrinterStatus()`: Get current printer status
- `sendData()`: Send print commands to the printer
- `createBuilder()`: Create a new print command builder
- `addStatusListener(callback)`: Listen for printer status changes
- `addBatteryStatusListener(callback)`: Listen for battery status changes
- `removeStatusListener(subscription)`: Remove a status listener
- `removeBatteryStatusListener(subscription)`: Remove a battery status listener
### Builder Class
Methods for building print commands:
- `initialize()`: Initialize the builder
- `clear()`: Clear all commands
- `addText(text)`: Add text to print
- `addTextAlign(align)`: Set text alignment
- `addTextSize(width, height)`: Set text size
- `addTextFont(font)`: Set text font
- `addTextSmooth(smooth)`: Enable/disable text smoothing
- `addFeed()`: Add paper feed
- `addFeedLine(line)`: Add line feed
- `addCut(cutType)`: Add paper cut command
- `addBarcode(data, symbology, height, width, hri)`: Add barcode
- `addSymbol(data, type, level, width, height)`: Add 2D code
- `addImage(base64Image, x, y, width, height)`: Add image
- `beginPageMode(x, y, width, height, direction)`: Begin page mode
- `endPageMode()`: End page mode
## Development
### Publishing New Versions
To publish a new version of the package:
```bash
# Use the automated publish script
npm run publish
```
This script will:
1. Check if you're logged in to npm
2. Prompt you to select a version bump type (patch, minor, major, or custom)
3. Bump the version in package.json
4. Build the package
5. Publish to npm with public access
6. Create a git tag and offer to push changes
### Manual Version Bumping
You can also use npm scripts to bump the version:
```bash
# Bump patch version (0.1.0 -> 0.1.1)
npm run version:patch
# Bump minor version (0.1.0 -> 0.2.0)
npm run version:minor
# Bump major version (0.1.0 -> 1.0.0)
npm run version:major
# Test build the package
npm run build
```
## License
MIT