From 98ba6db5a39a950c0d22cea42c84958486f460a9 Mon Sep 17 00:00:00 2001 From: Martin Brodbeck Date: Wed, 15 Aug 2018 08:02:28 +0200 Subject: [PATCH] support specifying pos printer --- src/printer/posprinter.cpp | 21 ++++++++++++++++++--- src/printer/posprinter.h | 7 +++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/printer/posprinter.cpp b/src/printer/posprinter.cpp index 38333ed..f81ade3 100644 --- a/src/printer/posprinter.cpp +++ b/src/printer/posprinter.cpp @@ -35,14 +35,24 @@ PosPrinter::PosPrinter() libusb_exit(contextPtr_); throw std::runtime_error("Could not receive device list"); } + int numDevice = -1; + for (int i = 0; i < devCount; ++i) { libusb_device_descriptor desc; libusb_get_device_descriptor(devList[i], &desc); - for (const auto& supported : supportedPrinters_.models) { - if (desc.idVendor == supported.first && desc.idProduct == supported.second) { + + if (printerDevice_.idVendor == 0) { + for (const auto& supported : supportedPrinters_.models) { + if (desc.idVendor == supported.first && desc.idProduct == supported.second) { + numDevice = i; + break; + } + } + } else { + if (desc.idVendor == printerDevice_.idVendor && + desc.idProduct == printerDevice_.idProduct) { numDevice = i; - break; } } } @@ -75,6 +85,11 @@ PosPrinter::PosPrinter() libusb_free_device_list(devList, 1); } +PosPrinter::PosPrinter(const PrinterDevice& printerDevice) : printerDevice_{printerDevice} +{ + PosPrinter(); +} + PosPrinter::~PosPrinter() { if (devicePtr_) { diff --git a/src/printer/posprinter.h b/src/printer/posprinter.h index 140b6cc..f3b9f65 100644 --- a/src/printer/posprinter.h +++ b/src/printer/posprinter.h @@ -16,10 +16,16 @@ struct SupportedPrinters { }; }; +struct PrinterDevice { + int idVendor{}; + int idProduct{}; +}; + class PosPrinter { public: PosPrinter(); + PosPrinter(const PrinterDevice& printerDevice); ~PosPrinter(); void write(const std::string& text); void printHeader(); @@ -43,6 +49,7 @@ class PosPrinter libusb_context* contextPtr_{}; libusb_device_handle* devicePtr_{}; SupportedPrinters supportedPrinters_; + PrinterDevice printerDevice_; }; #endif \ No newline at end of file