Epson ePOS SDK проверяет состояние принтера в режиме реального времени - PullRequest
0 голосов
/ 09 ноября 2018

Как проверить состояние принтера чеков epson в режиме реального времени?

В настоящее время я использую запланированный таймер для запуска Epos2Discovery.start каждые 10 секунд для проверки доступности принтера.

printerCheckTimer = Timer.scheduledTimer(timeInterval: 10, target: self, selector: #selector(checkPrinter), userInfo: nil, repeats: true)


// Listen for printer connection
@objc func checkPrinter() {
        // Stop previous epson printer discovery if any, and reset scanned epson printers array
        var result = EPOS2_SUCCESS.rawValue
        result = Epos2Discovery.stop()

        // Search for epson printers
        result = Epos2Discovery.start(filterOption, delegate: self)
        if result != EPOS2_SUCCESS.rawValue {
            print(result)
        }
}

// Delegate for epson printer discovery
func onDiscovery(_ deviceInfo: Epos2DeviceInfo!) {
    // Loop all the connected epson printers port, and see if they exists in the nearby ports
    for (printerId, connectedPrinterPort) in self.connectedEpsonPrinters {
        if connectedPrinterPort == deviceInfo.target {
            onlineEpsonPrinters[printerId] = Int(Date().timeIntervalSince1970)
        }
    }
}

Это решение прекрасно работает для старых моделей TM-T82 (Serial: UEHF ...). Однако для более новой версии TM-T82 (Serial: X4XQ ...) это представляется проблематичным.

Количество одновременных устройств, на которых запущен таймер Epos2Discovery.start, по-видимому, влияет на производительность печати. ​​

При использовании 1 устройства оно будет работать нормально и печатать так же быстро. Однако на 2 устройствах печать стала медленнее (вероятно, на 5 с медленнее).

При использовании 3 устройств состояние принтера будет мигать между подключенным и отключенным состояниями, и половина отпечатков будет отображаться с ошибкой при ошибке печати. Похоже, что одновременное выполнение Epos2Discovery на нескольких устройствах с повторяющимся таймером вызывает проблему с обнаружением принтера.

Это происходит только в более новой версии модели TM, она отлично работает для моих старых принтеров, которые я купил ранее (TM-T88, TM-U220B, TM-T81).

Мне интересно, есть ли другие способы проверить состояние принтера в режиме реального времени?

...