flutter_sewoo_usb_printer 0.0.1
flutter_sewoo_usb_printer: ^0.0.1 copied to clipboard
Flutter plugin for Sewoo USB POS printers using serial connection
flutter_sewoo_usb_printer #
A Flutter plugin for Sewoo POS printers using USB/Serial connection. This plugin provides a comprehensive wrapper around the Sewoo Android SDK 1.114 library for USB connectivity.
Features #
- USB Serial Connection: Auto-detect and connect to USB serial ports
- Text Printing: Multiple fonts, sizes, and alignments
- Barcode Support: CODE39, CODE128, EAN8/13, UPC-A/E, ITF, CODABAR
- QR Code: Configurable size and error correction levels
- Image & PDF Printing: Direct printing from bytes or file paths
- Status Monitoring: Real-time printer status via ASB mode
- ESC/POS Commands: Full raw command support
- Multi-encoding: UTF-8, EUC-KR, BIG5, GB2312, Shift_JIS
- Cash Drawer Control: Open command support
Installation #
Add to your pubspec.yaml:
dependencies:
flutter_sewoo_usb_printer: ^0.0.1
Android Configuration #
Add permissions to AndroidManifest.xml:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
For Android 10+ (API 29+):
<application android:requestLegacyExternalStorage="true">
Quick Start #
import 'package:flutter_sewoo_usb_printer/flutter_sewoo_usb_printer.dart';
// Get available ports
List<String> ports = await FlutterSewooUsbPrinter.getAvailablePorts();
// Connect to printer
bool connected = await FlutterSewooUsbPrinter.connect(
ports.first,
baudRate: 9600, // 9600, 19200, 38400, 57600, 115200
);
// Print text
await FlutterSewooUsbPrinter.printText(
'Hello World',
alignment: FlutterSewooUsbPrinter.ALIGN_CENTER,
fontType: FlutterSewooUsbPrinter.FONT_BOLD,
textSize: FlutterSewooUsbPrinter.TEXT_SIZE_2X,
);
// Print barcode
await FlutterSewooUsbPrinter.printBarcode(
'1234567890',
barcodeType: FlutterSewooUsbPrinter.BARCODE_CODE128,
height: 100,
width: 2,
alignment: FlutterSewooUsbPrinter.ALIGN_CENTER,
hriPosition: FlutterSewooUsbPrinter.HRI_TEXT_BELOW,
);
// Print QR code
await FlutterSewooUsbPrinter.printQRCode(
'https://example.com',
moduleSize: 6,
errorLevel: FlutterSewooUsbPrinter.QR_ERROR_LEVEL_M,
);
// Cut paper and disconnect
await FlutterSewooUsbPrinter.cutPaper();
await FlutterSewooUsbPrinter.disconnect();
Core Methods #
Connection Management #
// Get available USB serial ports
List<String> ports = await FlutterSewooUsbPrinter.getAvailablePorts();
// Connect to printer
bool connected = await FlutterSewooUsbPrinter.connect(portName, baudRate: 9600);
// Check connection status
bool isConnected = await FlutterSewooUsbPrinter.isConnected();
// Get connection info
Map<String, dynamic> info = await FlutterSewooUsbPrinter.getConnectionInfo();
// Disconnect
await FlutterSewooUsbPrinter.disconnect();
Text Printing #
// Print formatted text
await FlutterSewooUsbPrinter.printText(
text,
alignment: FlutterSewooUsbPrinter.ALIGN_CENTER, // LEFT, CENTER, RIGHT
fontType: FlutterSewooUsbPrinter.FONT_BOLD, // DEFAULT, BOLD, UNDERLINE, REVERSE
textSize: FlutterSewooUsbPrinter.TEXT_SIZE_2X, // 1X, 2X, 3X, 4X
);
// Print raw string
await FlutterSewooUsbPrinter.printString('Simple text\n');
// Print with Android fonts
await FlutterSewooUsbPrinter.printAndroidFont(
text,
fontFamily: 'monospace',
fontSize: 24,
alignment: FlutterSewooUsbPrinter.ALIGN_LEFT,
);
Barcode & QR Code #
// Print barcode
await FlutterSewooUsbPrinter.printBarcode(
data,
barcodeType: FlutterSewooUsbPrinter.BARCODE_CODE128,
height: 100,
width: 2,
alignment: FlutterSewooUsbPrinter.ALIGN_CENTER,
hriPosition: FlutterSewooUsbPrinter.HRI_TEXT_BELOW,
);
// Print QR code
await FlutterSewooUsbPrinter.printQRCode(
data,
moduleSize: 6, // 1-16
errorLevel: FlutterSewooUsbPrinter.QR_ERROR_LEVEL_M, // L, M, Q, H
);
Image & PDF Printing #
// Print image from bytes
Uint8List imageData = // ... your image data
await FlutterSewooUsbPrinter.printImage(imageData);
// Print image from file
await FlutterSewooUsbPrinter.printImageFile('/path/to/image.png');
// Print PDF page
await FlutterSewooUsbPrinter.printPDF(
'/path/to/document.pdf',
pageNumber: 0, // 0-based index
);
Printer Control #
// Line feed
await FlutterSewooUsbPrinter.lineFeed(lines: 3);
// Cut paper
await FlutterSewooUsbPrinter.cutPaper();
// Open cash drawer
await FlutterSewooUsbPrinter.openCashDrawer();
// Reset printer
await FlutterSewooUsbPrinter.reset();
// Send raw ESC/POS commands
await FlutterSewooUsbPrinter.sendRawData(Uint8List.fromList([0x1B, 0x40]));
Status Monitoring #
// Check status once
PrinterStatus status = await FlutterSewooUsbPrinter.checkPrinterStatus();
if (status.isPaperEmpty) {
print('Paper is empty!');
}
// Enable real-time monitoring
await FlutterSewooUsbPrinter.enableASBMode(true);
// Listen to status updates
FlutterSewooUsbPrinter.getStatusStream().listen((status) {
if (status.isError) {
print('Error: ${status.errorMessage}');
}
});
PrinterStatus Object #
class PrinterStatus {
final int statusCode; // Raw status code
final bool isNormal; // Printer ready
final bool isPaperEmpty; // No paper
final bool isPaperNearEnd; // Low paper
final bool isCoverOpen; // Cover open
final bool isError; // Error state
final bool isCashDrawerOpen; // Drawer open
final String? errorMessage; // Error details
}
Constants Reference #
Alignment #
ALIGN_LEFT- Left alignmentALIGN_CENTER- Center alignmentALIGN_RIGHT- Right alignment
Font Types #
FONT_DEFAULT- Normal fontFONT_BOLD- Bold fontFONT_UNDERLINE- Underlined textFONT_REVERSE- Reverse video
Text Sizes #
TEXT_SIZE_1X- Normal sizeTEXT_SIZE_2X- Double sizeTEXT_SIZE_3X- Triple sizeTEXT_SIZE_4X- Quadruple size
Barcode Types #
BARCODE_CODE39,BARCODE_CODE128BARCODE_EAN8,BARCODE_EAN13BARCODE_UPC_A,BARCODE_UPC_EBARCODE_ITF,BARCODE_CODABAR
HRI Positions #
HRI_TEXT_NONE- No textHRI_TEXT_ABOVE- Above barcodeHRI_TEXT_BELOW- Below barcodeHRI_TEXT_BOTH- Both positions
QR Error Levels #
QR_ERROR_LEVEL_L- Low (7%)QR_ERROR_LEVEL_M- Medium (15%)QR_ERROR_LEVEL_Q- Quartile (25%)QR_ERROR_LEVEL_H- High (30%)
Error Handling #
try {
await FlutterSewooUsbPrinter.connect('/dev/ttyUSB0');
} catch (e) {
if (e is FlutterSewooException) {
print('Error: ${e.message}');
}
}
Supported Encodings #
// Set encoding for text printing
await FlutterSewooUsbPrinter.setEncoding('EUC-KR');
Available encodings:
- UTF-8 (default)
- EUC-KR (Korean)
- BIG5 (Traditional Chinese)
- GB2312 (Simplified Chinese)
- Shift_JIS (Japanese)
Example App #
Complete example available in the example folder:
cd example
flutter run
Platform Support #
| Platform | Support |
|---|---|
| Android | ✅ (Min SDK 21) |
| iOS | ❌ |
| Web | ❌ |
| Windows | ❌ |
| macOS | ❌ |
| Linux | ❌ |
Requirements #
- Android device with USB OTG support
- USB to Serial adapter (if needed)
- Sewoo POS printer compatible with SDK 1.114
- Flutter 2.5.0+
- Dart 2.12.0+
Troubleshooting #
No Ports Detected #
- Ensure USB cable is properly connected
- Check USB debugging is enabled
- Verify printer is powered on
- Try different USB ports/cables
Connection Failed #
- Verify correct baud rate (usually 9600 or 115200)
- Ensure no other app is using the port
- Check port name is correct
- Try reconnecting USB cable
Print Quality Issues #
- Check paper quality
- Clean printer head
- Ensure proper power supply
ASB Mode Not Working #
- Not all models support ASB
- Update printer firmware
- Try lower baud rates
License #
MIT License - see LICENSE file
Contributing #
Contributions welcome! Please submit a Pull Request.
Support #
For issues or questions, please file an issue on GitHub.
Acknowledgments #
Based on Sewoo Android SDK 1.114.