Как проверить состояние принтера чеков 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).
Мне интересно, есть ли другие способы проверить состояние принтера в режиме реального времени?