Open JIO6CTEPok opened 5 years ago
Здравствуйте. Метод claim никаких задержек не реализует. Значение передаваемое в метод насколько я помню игнорируется во всех вариантах работы драйвера. Первое подключение к принтеру может быть в 2-4 раза дольше последующих. Я не сравнивал разницы в сохранении принтера и создании каждый раз нового, в примере я сохраняю объект принтера.
nyxiscoo1, на метод claim приходится основное время задержки в открытии BlueTooth соединения с принтером 2019-09-20-17:33:24.241 [pool-7-thread-1] DEBUG c.s.j.f.FiscalPrinterService - claim(10000) 2019-09-20-17:33:31.233 [pool-7-thread-1] DEBUG c.s.j.f.FiscalPrinterService - claim: OK
По сравнению со стандартным подходом в примере:
if (printer.getState() != JposConst.JPOS_S_CLOSED) {
printer.close();
}
printer.open("ShtrihFptr");
printer.claim(3000);
printer.setDeviceEnabled(true);
Мы пробуем делать без переоткрытия соединения:
if (printer.getState() == JposConst.JPOS_S_ERROR) {
printer.close();
}
if (printer.getState() != JposConst.JPOS_S_CLOSED) {
if (!printer.getClaimed()) {
printer.claim(10000);
}
printer.setDeviceEnabled(true);
} else {
printer.open("ShtrihFptr");
printer.claim(10000);
printer.setDeviceEnabled(true);
}
Это работает быстрее (без задержки 6-8 сек), но с надежностью не уверен. Один раз встречал зацикливания на ошибке JposException: read failed, socket might closed or timeout, read ret: -1
По каким-то неведомым мне причинам в claim выполняется открытие соединения, точнее выполнялось, я его убирал, потом его опять добавил мой коллега и на днях я делал комит в котором как полагается убрал код установления подключения в claim.
Можете собрать текущую версию она будет работать как я описывал.
Здравствуйте. В приложении реализую подключение к принтеру:
if (printer.getState() != JposConst.JPOS_S_CLOSED) { printer.close(); } printer.open("ShtrihFptr"); printer.claim(3000); printer.setDeviceEnabled(true); printer.setAsyncMode(false);
Любое действие с принтером в приложении выполняется в очередности:Пользователи жалуются на небольшую задержку перед печатью чека. Если уменьшить таймаут метода claim (или не вызывать claim) то не удается подключиться к принтеру. Вопросы