Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

brasizza/sunmi_printer

Repository files navigation

sunmi_printer_plus

This is a fork from sunmi_printer , but i implemented a lot of other features described below

Pub Monthly Downloads Pub Points Pub Likes GitHub Issues or Pull Requests GitHub contributors

Important:

THIS PACKAGE WILL WORK ONLY IN ANDROID!

Support Sunmi and Null Safety. I build this flutter plugin based on this: Official Sunmi Inner Printer Doc. But not all method from doc was included in this package, beacuse i don't have equipment. If you have and can help me, just contact me on github!

Installation

flutter pub add sunmi_printer_plus

What this package do

  • Print in label mode (when avaliable!)
  • Write some text (with style or not!)
  • Change font size
  • Jump (n) lines
  • Draw a divisor line
  • Bold mode on/off
  • Print all types of Barcodes (see enum below)
  • Print Qrcodes with custom width and error-level
  • Print image from asset or from web (example show how to print both)
  • Print rows like recepit with custom width and alignment
  • Able to combine with some esc/pos code that you already have!
  • Cut paper - Dedicated method just to cut the line
  • Printer serial no - Get the serial number of the printer
  • Printer version - Get the printer's version
  • Printer paper size - Get the paper size ( 0: 80mm 1: 58mm)
  • LCD Print a image ytyng
  • LCD Print a string , multi lines as double lines Thanks to ytyng
  • Open de cash drawer Thanks to ZheruiL
  • Check if the cash drawer is connected or not
  • Get how many times the cash drawer was oppened

Tested Devices

Sunmi V2 Pro 
Sunmi T2 mini
Sunmi V2S

You can also combine this package with the package esc_pos_utils

With this package you can create a custom escpos and than you don't need to use any other command. This is good if you already have a code that another printers use, and u can reuse this code as well

#Just see the example folder!

// import packages
import 'package:sunmi_printer_plus/sunmi_printer_plus.dart';
// all method from sunmi printer need to async await
await SunmiPrinter.bindingPrinter(); // must bind the printer first. for more exmaple.. pls refer to example tab.

Example code when use for transaction printing

 await SunmiPrinter.startTransactionPrint(true);
 await SunmiPrinter.setAlignment(SunmiPrintAlign.RIGHT); // Right align
 await SunmiPrinter.printText('Align right');
 await SunmiPrinter.setAlignment(SunmiPrintAlign.LEFT);// Left align
 await SunmiPrinter.printText('Align left');
 await SunmiPrinter.setAlignment(SunmiPrintAlign.CENTER);// Center align
 await SunmiPrinter.printText('Align center');
 await SunmiPrinter.lineWrap(2); // Jump 2 lines
 await SunmiPrinter.setFontSize(SunmiFontSize.XL); // Set font to very large
 await SunmiPrinter.printText('Very Large font!');
 await SunmiPrinter.resetFontSize(); // Reset font to medium size
 await SunmiPrinter.setCustomFontSize(12); // SET CUSTOM FONT 12
 await SunmiPrinter.printText('Custom font size!!!');
 await SunmiPrinter.resetFontSize(); // Reset font to medium size
 await SunmiPrinter.printQRCode('https://github.com/brasizza/sunmi_printer'); // PRINT A QRCODE
 await SunmiPrinter.submitTransactionPrint(); // SUBMIT and cut paper
 await SunmiPrinter.exitTransactionPrint(true); // Close the transaction

Example code for LCD functions @ytyng

 await SunmiPrinter.lcdInitialize(); //Initialize the LCD 
 await SunmiPrinter.lcdWakeup(); //Turn the LCD ON
 await SunmiPrinter.lcdSleep(); //Turn the LCD OFF
 await SunmiPrinter.lcdClear(); //Clear LCD screen
 await SunmiPrinter.lcdString('Hello'); //Write a simple line 
 await SunmiPrinter.lcdString('Hello'); //Write a simple line 
 await SunmiPrinter.lcdDoubleString('Hello', 'World'); //Write two lines
 Uint8List byte = await readFileBytes('assets/images/128x40.png');
 await SunmiPrinter.lcdImage(byte); // Put an image in LCD
 await SunmiPrinter.lcdFillString('abcDEFgj0123\$&=+', size: 16, fill: true); // Print a string and fill with zeros until the size is reached
 await SunmiPrinter.lcdMultiString([ 'Welcome to flutter.', 'Align 2.',], [ 1, 2,]); // Write multiple lines with alignent

Example to open the cashier @ZheruiL

 bool await SunmiPrinter.drawerStatus(); //check if the cash drawer is connect or disconnect
 await SunmiPrinter.openDrawer(); //open de cash drawer
 int await SunmiPrinter.drawerTimesOpen(); //How many times de cash drawer was oppened

List of enum printer mode

enum PrinterMode {
 NORMAL_MODE,
 BLACK_LABEL_MODE, 
 LABEL_MODE
}

List of enum Alignments

enum SunmiPrintAlign {
 LEFT,
 CENTER,
 RIGHT,
}

List of enum Qrcode levels

enum SunmiQrcodeLevel {
 LEVEL_L,
 LEVEL_M,
 LEVEL_Q,
 LEVEL_H,
}

List of enum Barcode types

enum SunmiBarcodeType {
 UPCA,
 UPCE,
 JAN13,
 JAN8,
 CODE39,
 ITF,
 CODABAR,
 CODE93,
 CODE128,
}

List of enum Text position in barcode

enum SunmiBarcodeTextPos {
 NO_TEXT,
 TEXT_ABOVE,
 TEXT_UNDER,
 BOTH,
}

List of enum Font sizes

enum SunmiFontSize {
 XS,
 SM,
 MD,
 LG,
 XL,
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /