shtrih-m / fr_drv_ng

релизы и поддержка драйвера fr_drv_ng
36 stars 5 forks source link

ResetECR не выводит из состояния "1, Выдача данных" #295

Open romanpikulenko opened 2 weeks ago

romanpikulenko commented 2 weeks ago

OS: Windows 10 64 бит Release: 1.6.0-21-ge5b15e7


Параметры принтера:

Кодовая страница : 0, Русская Описание устройства : РИТЕЙЛ-01ФМ Версия протокола : 1 Подверсия протокола : 17 Тип устройства : 0 Подтип устройства : 0 Модель устройства : 22

Step to reproduce:

  1. Режим устройства 2 или 3
  2. Подрежим 0
  3. Вызываем FNRequestFiscalDocumentTLV
  4. Устройство переходим в состояние 1, Выдача данных
  5. Вызываем ResetECR, чтобы сбросить состояние. Отрабатывает без ошибок, но остается в режим "1, Выдача данных"

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

surfernsk commented 2 weeks ago

@romanpikulenko Не хватает логов.

1. Режим устройства 2 или 3
2. Подрежим 0
3. Вызываем FNRequestFiscalDocumentTLV
4. Устройство переходим в состояние 1, Выдача данных
5. Вызываем ResetECR, чтобы сбросить состояние. Отрабатывает без ошибок, но остается в режим "1, Выдача данных"

В 5 пункте не указано что произведен запрос состояния, после выполнения ResetECR().

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

Или все же попробовать? - InterruptDataStream()

romanpikulenko commented 2 weeks ago

@romanpikulenko Не хватает логов.

1. Режим устройства 2 или 3
2. Подрежим 0
3. Вызываем FNRequestFiscalDocumentTLV
4. Устройство переходим в состояние 1, Выдача данных
5. Вызываем ResetECR, чтобы сбросить состояние. Отрабатывает без ошибок, но остается в режим "1, Выдача данных"

В 5 пункте не указано что произведен запрос состояния, после выполнения ResetECR().

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

Или все же попробовать? - InterruptDataStream()

В пункте 5: после вызова ResetECR(), вызываем GetECRStatus(), чтобы считать состояние. Оно остается режим 1 Выдача данных. Пробовал InterruptDataStream() - выдает странную ошибку 79 неверный пароль. Пароль 30 установлен непосредственно перед вызовом InterruptDataStream().

Логи добавлю позже

swex commented 2 weeks ago

прервать выдачу документа не получится, придется полностью вычитать документ через ’FNReadFiscalDocumentTLV’. Так это работает в ККТ...