From 30b2a3e0d3cd7d4c10bfe299b7038932dc26b7ea Mon Sep 17 00:00:00 2001 From: Ivan Ray Altomera Date: Wed, 1 Apr 2020 16:42:13 +0800 Subject: [PATCH 1/3] feat: printer usb manager --- lib/src/printer_usb_manager.dart | 51 ++++++++++++++++++++++++++++++++ pubspec.yaml | 2 ++ 2 files changed, 53 insertions(+) create mode 100644 lib/src/printer_usb_manager.dart diff --git a/lib/src/printer_usb_manager.dart b/lib/src/printer_usb_manager.dart new file mode 100644 index 0000000..4ace837 --- /dev/null +++ b/lib/src/printer_usb_manager.dart @@ -0,0 +1,51 @@ +import 'dart:async'; +import 'dart:io'; +import 'package:esc_pos_utils/esc_pos_utils.dart'; +import 'package:escposprinter/escposprinter.dart'; + +import './enums.dart'; + +class PrinterUsbManager { + + Future getDevices() async { + List devices = await Escposprinter.getUSBDeviceList; + return devices; + } + + Future connectDevice(int vendor, int product) async { + await Escposprinter.connectPrinter(vendor, product); + return; + } + + Future writeBytes( + List bytes, { + int chunkSizeBytes = 20, + int queueSleepTimeMs = 20, + }) async { + final Completer completer = Completer(); + + final len = bytes.length; + List> chunks = []; + + for (var i = 0; i < len; i += chunkSizeBytes) { + var end = (i + chunkSizeBytes < len) ? i + chunkSizeBytes : len; + chunks.add(bytes.sublist(i, end)); + } + + for (var i = 0; i < chunks.length; i += 1) { + await Escposprinter.printBytes(bytes); + sleep(Duration(milliseconds: queueSleepTimeMs)); + } + + completer.complete(PosPrintResult.success); + + return completer.future; + } + + Future printTicket(Ticket ticket) { + if (ticket == null || ticket.bytes.isEmpty) { + return Future.value(PosPrintResult.ticketEmpty); + } + return writeBytes(ticket.bytes); + } +} \ No newline at end of file diff --git a/pubspec.yaml b/pubspec.yaml index 00c39ab..5ceb869 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -10,6 +10,8 @@ dependencies: flutter: sdk: flutter esc_pos_utils: ^0.3.5 + escposprinter: + git: https://github.com/bailabs/esc-pos-printer-flutter # esc_pos_utils: # path: ../esc_pos_utils From 6d4d57ce368fb62e8785976dc8e8e227bfa61c7b Mon Sep 17 00:00:00 2001 From: Ivan Ray Altomera Date: Wed, 1 Apr 2020 18:20:40 +0800 Subject: [PATCH 2/3] hotfix: add printer usb manager --- lib/esc_pos_printer.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/esc_pos_printer.dart b/lib/esc_pos_printer.dart index da58b11..2514771 100644 --- a/lib/esc_pos_printer.dart +++ b/lib/esc_pos_printer.dart @@ -9,3 +9,4 @@ library esc_pos_printer; export './src/enums.dart'; export './src/printer_network_manager.dart'; +export './src/printer_usb_manager.dart'; From 656296e2f2b2e6535ee1c37a333745faacaaea97 Mon Sep 17 00:00:00 2001 From: Ivan Ray Altomera Date: Thu, 2 Apr 2020 11:37:38 +0800 Subject: [PATCH 3/3] fix: write bytes --- lib/src/printer_usb_manager.dart | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/lib/src/printer_usb_manager.dart b/lib/src/printer_usb_manager.dart index 4ace837..9da6330 100644 --- a/lib/src/printer_usb_manager.dart +++ b/lib/src/printer_usb_manager.dart @@ -17,28 +17,10 @@ class PrinterUsbManager { return; } - Future writeBytes( - List bytes, { - int chunkSizeBytes = 20, - int queueSleepTimeMs = 20, - }) async { + Future writeBytes(List bytes) async { final Completer completer = Completer(); - - final len = bytes.length; - List> chunks = []; - - for (var i = 0; i < len; i += chunkSizeBytes) { - var end = (i + chunkSizeBytes < len) ? i + chunkSizeBytes : len; - chunks.add(bytes.sublist(i, end)); - } - - for (var i = 0; i < chunks.length; i += 1) { - await Escposprinter.printBytes(bytes); - sleep(Duration(milliseconds: queueSleepTimeMs)); - } - + await Escposprinter.printBytes(bytes); completer.complete(PosPrintResult.success); - return completer.future; }