opure / openbravoposru

Automatically exported from code.google.com/p/openbravoposru
0 stars 0 forks source link

ККМ Штрих-Мини-ФР-К в режиме фискального регистратора #74

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Поэкспериментировав с принтером, вот что 
удалось выяснить. Принтер наконец-то ожил. 
В моём случае он согласился работать 
только на скорости 19200, на остальных 
скоростях не работает. Видимо это связано с 
настройками самого принтера, он ведь 
(штрих-мини-фр-к), вроде, программируется 
или во всяком случае может 
конфигурироваться. Оптимальные параметры 
которые мне удалось подобрать, такие:

    private static final int T1 = 20; 
    private static final int T5 = 20; 
    private static final int T6 = 50; 
    private static final int T7 = 50; 

Теперь нужно заставить его работать как 
фискальный регистратор. Кстати, на сколько 
удалось в коде разобраться нужно 
дорабатывать и юзать класс  DeviceFiscalPrinterShtrihFR 
и ему подобные, и ещё в файл конфигурации 
программы нужно добавить строчку 
"machine.fiscalprinter = ваша ккм", если таковой нет.

Original issue reported on code.google.com by akart...@gmail.com on 15 Jun 2010 at 5:59

GoogleCodeExporter commented 9 years ago
Временные параметры (время ожидания между 
запросом/ответом) вообще здесь самые 
важные, сейчас столкнулся с проблемой 
подкодящее время для режима чекового 
принтера абсолютно не подходят для режима 
фискального регистратора. Вообще в 
спецификации в версии 1.7 (она и для 
ШТРИХ-МИНИ-ФР-К) сказано так:

"
По умолчанию устанавливаются следующие 
параметры порта: 8 бит данных, 1 стоп-
бит, отсутствует проверка на четность, 
скорость обмена 4800 бод и тайм-аут ожидания
каждого байта, равный 50 мс. Две последние 
характеристики обмена могут быть изменены
командой от хоста.

Тайм-аут ожидания реакции ФР на запрос ENQ не 
должен быть меньше 10 с.
Минимальное время между приемом 
последнего байта сообщения и передачей
подтверждения, и между приемом ENQ и 
реакцией на него равно тайм-ауту приема 
байта.
"

Пока жёстко соблюсти это руководство у 
меня не получается, как мне кажется 
проблема в алгоритме обмена. В данный 
момент он в части ожидания ответа от ФР не 
соответсвует прилагаемой схеме (красным 
нанесены переменные нашего проекта), то 
есть POS ждёт ответа от ФР только промежуток 
времени T5, а он в зависимости от посланной 
команды может быть разным. Полностью 
соответсвует спецификации T6 (50 мс), 
вспомогательными являются T1 и T7, по идеи 
они должны находятся в зависимости от T6 и 
сильно повлиять на работу с ФР врядли 
могут. 

Думаю надо в эту сторону двигаться, если 
будут мысли сообщите.

Original comment by svinin...@gmail.com on 15 Jun 2010 at 9:45

Attachments:

GoogleCodeExporter commented 9 years ago
Да Вы правильно поняли, для выполнения 
фискальных функций используется класс 
DeviceFiscalPrinterShtrihFR и необходимо вручную задать 
в файле properties значения для machine.fiscalprinter (как 
я понял для этого не сделан специальный 
интерфейс, так как в основной версии пока 
есть только один тип фискальных 
регистраторов работающих через JavaPOS 
драйвер).

Также необходимо в ресурсах внести шаблон 
для фискального чека вида:

<?xml version="1.0" encoding="UTF-8"?> 
<output>
  <fiscalreceipt>
    <message>------------------------</message>
    #foreach ($ticketline in $ticket.getLines()) 
      <line price="${ticketline.printPrice()}" units="${ticketline.printMultiply()}" tax="0">${ticketline.printName()}</line>
    #end 
    <message>========================</message>
    <total paid="${ticket.printTotal()}">Продажа за наличные</total>
  </fiscalreceipt>
</output>

Для работы с ним пришлось внёсти много 
изменений в исходный r353, основное это 
добавлены методы для чтения сведениё о 
коммандах и ошибках получаемых с ФР и 
выводимых POS в консоли. Но пока работает с 
ошибками, пытаюсь найти в чём проблема, 
если будут мысли сообщите. 

ВНИМАНИЕ: Так как работа кода связанна с 
функциями имеющими доступ к фискальной 
памяти ФР не в коем случае не используйте 
фискализированный аппарат! Если какая-то 
функция не было исполнена до конца (не был 
закрыт чек или смена) и она блокирует 
работу с ФР используйте стандартные 
драйвер идущий в комплекте с аппаратом для 
её выполнения (анулирования чека, закрытия 
смены и т.п.) Также согласно использованной 
в данном проекте лицензии LGPL разработчики 
не несут каких либо гарантий за 
использования данного кода в каких либо 
целях. Прошу это учитывать при работе с 
предоставляемым в рамках данного проекта 
коде.

Original comment by svinin...@gmail.com on 18 Jun 2010 at 4:47

GoogleCodeExporter commented 9 years ago
Похоже реализованный алгоритм для 
принтеров не подходит для фискальных 
регистраторов. Предлагаю попробовать на 
базе уже реализованной поддержки 
фискальной функции для регистраторов Атол 
(см.  Issue 92) написать поддержку для протокола 
Штрихов.

Original comment by svinin...@gmail.com on 7 Feb 2011 at 8:26

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Добрый день. Вы предлагаете использовать 
JavaPOS или нативно разработать драйверы 
именно под штрих-фр? Думаю, перспектив у 
JavaPOS никаких нет ИМХО.

Original comment by akart...@gmail.com on 15 Mar 2011 at 10:35

GoogleCodeExporter commented 9 years ago
Я сам лично видел JavaPOS драйвер для 
протокола Штрих-М, только не смог его 
испытать, так как под рукой не было 
фискальника. Так что если идти по пути 
наименьшего сопротивления, то 
использование уже готового драйвера более 
эффективно. А вот разработать нативную 
поддержку в Openbravo POS с нуля это достаточно 
трудоёмкая задача. К тому-же если 
необходимо полная поддержка всех функций 
регистратора, то это потребует и переделки 
самой программы, а не только модуля 
подключения.

Хотя лично мне сделать нативную поддержку 
гораздо интересней, но главное тоже, был-бы 
фискальник под рукой :)

Original comment by svinin...@gmail.com on 15 Mar 2011 at 3:59

GoogleCodeExporter commented 9 years ago
Недели через 2-3 у меня возможно будет 
нефискальный Штрих-М. Можно будет 
попробовать JavaPOS драйверы подключить и 
попробовать разобраться как в Issue 92. На 
сколько я помню, то JPOS драйверы под Штрих-М 
можно взять у производителя, но они очень 
древние и уже давно не поддерживаются 
самим производителем, впрочем, как и comm.jar 
который тоже уже давно не поддерживается 
под windows. Если вы видели другие драйверы, то 
не могли бы вы поделиться ими для 
экспериментов.

Original comment by akart...@gmail.com on 16 Mar 2011 at 6:47

GoogleCodeExporter commented 9 years ago
У меня была версия JavaPOS драйвера 
датированная ноябрём 2009 года и среди 
библиотек шедших с ним была rxtxSerial.dll, так 
что под виндой должно работать. Как 
появится фискальник пишите, вместе 
попробуем разобраться. 

Original comment by svinin...@gmail.com on 16 Mar 2011 at 8:41

GoogleCodeExporter commented 9 years ago
А Меркурии кто нибудь подключал? В 
частности ЧПМ Меркурий-115?

Original comment by dmg...@gmail.com on 19 Mar 2011 at 6:44

GoogleCodeExporter commented 9 years ago
А разве в Меркурий-115 есть порт для 
подключения к ПК? 

Если у Вас есть этот аппарат и есть 
описание протокола обмена к нему, 
создавайте отдельную новую тему там и 
обсудим возможности подключения.

Original comment by svinin...@gmail.com on 19 Mar 2011 at 2:25

GoogleCodeExporter commented 9 years ago
Решил на время, пока кто-то ещё не 
присоединится к проекту или у меня у самого 
не появится Штрих-ФР, убрать из кода 
проекта поддержку фискальных 
регистраторов Штрих-ФР. Начиная с r438 код 
проекта официально не поддерживает режим 
фискального регистратора для протокола 
ШТРИХ-М, поддержка режима чекового 
принтера осталась без изменения.

Original comment by svinin...@gmail.com on 22 Mar 2011 at 6:39

GoogleCodeExporter commented 9 years ago
Я начал перелопачивать драйвер для 
Штрихов. Сейчас реализовал печать чека в 
фискальном режиме (r456 в бранче bigur). При этом 
сейчас сломана печать с нормальным 
принтером.

Настройки параметров соединения (baudrate) 
сейчас зашиты внутрь кода, я пока не 
придумал куда воткнуть этот параметр для 
конфигурирования. Видимо в конфиг-файл 
придется.

Я попробовал всякие стресс-тесты, типа 
выдергивания провода во время печати, 
открыть чек на другой машине и подключить к 
проверяемой, отключать и подключать ФР не 
выключая POS. У меня все отрабатывает 
корректно. Данные при этом остаются 
целостные, в базу попадают ровно те же 
значение что и в фискалку.

Это первый шаг, там еще кучи всего нету. Но 
эту версию, у кого есть возможность - 
тестируйте. 

Да. Я тестировал на Штрих-ФР-К.

ВНИМАНИЕ! ПОЖАЛУЙСТА, НЕ ИСПОЛЬЗУЙТЕ ЭТОТ 
КОД НА ЗАРЕГИСТРИРОВАННЫХ ФИСКАЛЬНЫХ 
РЕГИСТРАТОРАХ!

Original comment by gennady....@gmail.com on 5 Apr 2011 at 9:06

GoogleCodeExporter commented 9 years ago
Обновил проект, появилась куча ошибок, 
исправил. Приложение запускается, но при 
попытке зайти в конфигурацию оборудования, 
показывает : com.openbravo.pos.forms.BeanFactoryException: 
java.lang.reflect.InvocationTargetException

Original comment by akart...@gmail.com on 6 Apr 2011 at 7:57

GoogleCodeExporter commented 9 years ago
Я вот сейчас не уверен, что ошибка связана с 
моим коммитом. Прикрепите пожалуйста весь 
traceback, и версию java.

Original comment by gennady....@gmail.com on 6 Apr 2011 at 2:05

GoogleCodeExporter commented 9 years ago
Коммит r457. Теперь печатаются X- и Z- отчеты.

Original comment by gennady....@gmail.com on 7 Apr 2011 at 3:34

GoogleCodeExporter commented 9 years ago
Я так думая baudrate для фискальных 
регистраторов надо выводить на панель 
настроек, там где выбирается тип 
фискальника и указывается порт. Из опыта 
работы знаю, что у каждого аппарата и у 
каждого мастера ЦТО :) рабочее значения 
этого параметра своё. Если возражений не 
будет меняю интерфейс и добавляю поле baudrate.

Original comment by svinin...@gmail.com on 9 Apr 2011 at 4:07

GoogleCodeExporter commented 9 years ago
в branches\ есть 2 папки bigur и Stage-3rd. Я так понимаю 
для тестов нужно юзать Stage-3rd ?

Original comment by akart...@gmail.com on 10 Apr 2011 at 8:59

GoogleCodeExporter commented 9 years ago
в bigur нет модуля ShtrihFR, а в Stage-3rd модуль 
DeviceFiscalPrinterShtrihFR не измененный

Original comment by akart...@gmail.com on 10 Apr 2011 at 9:02

GoogleCodeExporter commented 9 years ago
в какой ветке репозитория правильные 
модули для тестирования лежат ? 

Original comment by akart...@gmail.com on 10 Apr 2011 at 9:06

GoogleCodeExporter commented 9 years ago
Я работаю в ветке bigur 
(http://code.google.com/p/openbravoposru/source/browse/branches/bigur). 
Модуль ShtrihFR там есть (src-pos/printer/shtrihfr). 

Скачайте свежее обновление для 
тестирования (r460). 

Еще раз: не используйте на реальных 
фискальных регистраторах. В этом драйвере 
заведомо есть ошибки. Например, с 
некорректной обработкой исключительных 
ситуаций, как аварий, так и элементарно с 
отсутствием бумаги в принтере. Дня через 
два я закоммичу более стабильную версию и 
приступлю к работе Штрих-ФР в режиме 
принтера.

Будут какие-либо ошибки - пока пишите тут. 
Более свободное обсуждение предлагаю 
вести в рассылке: http://groups.google.com/group/openbravoposru 

Original comment by gennady....@gmail.com on 10 Apr 2011 at 9:22

GoogleCodeExporter commented 9 years ago
Разработка в ветки 
[http://code.google.com/p/openbravoposru/source/browse/branches/bigur 
/branches/Stage-3rd] прекращена и всё из неё влиты в 
[http://code.google.com/p/openbravoposru/source/browse/trunk /trunk], 
теперь [http://code.google.com/p/openbravoposru/source/browse/trunk 
эта ветка] является основной, если вводит в 
заблуждение могу 
[http://code.google.com/p/openbravoposru/source/browse/branches/bigur 
/branches/Stage-3rd] удалить.

Специально для Генадия сделал ветку 
[http://code.google.com/p/openbravoposru/source/browse/branches/bigur 
/branches/bigur], где он ведёт разработку 
поддержки Штрих-ФР. Так что для 
тестирования этой функции скачивайте код 
из ветки 
[http://code.google.com/p/openbravoposru/source/browse/branches/bigur 
/branches/bigur].

Original comment by svinin...@gmail.com on 10 Apr 2011 at 9:33

GoogleCodeExporter commented 9 years ago
Если не сложно, напишите пожалуйста, если 
таковой имеется, полный svn путь к 
исходникам для тестирования, для того 
чтобы можно было на основе этих исходников 
сделать netbeans проект для тестов. Или нужно 
ручками с сайта исходники копировать и 
обновлять? У меня сейчас есть проект 
скаченный с http://openbravoposru.googlecode.com/svn/trunk/, он 
самый стабильный, на сколько я понял. Так же 
для попыток тестирования штрихов в 
фискальном режиме, попробовал скачать svn 
http://openbravoposru.googlecode.com/svn/branches/bigur/, но он мне 
показался неполным, т.к. например в проекте 
нет некоторых файлов, например того же 
ShtrihFR. Или может быть такого полноценного 
готового проекта для тестов штрихов в 
фискальном режиме нет ?  Прошу прощения за 
глупый вопрос, но подскажите, что я делаю не 
так? 

Original comment by akart...@gmail.com on 10 Apr 2011 at 11:55

GoogleCodeExporter commented 9 years ago
Я пишу тут, но обсуждение как компилировать 
проект не относится непосредственно к теме 
работы Штриха в режиме ФР.

Так что после этого поста давайте 
обсуждать тему сборки проекта в рассылке, 
адрес я писал в предыдущем посте. Это чтобы 
не засорять баг-трекер.

Действительно, готового полноценного 
драйвера для работы со штрихом еще нет. 
Есть только версия кода, над которым я 
сейчас работаю каждый день. В этой версии 
работает печать чека в режиме ФР, снятие X,Z 
отчетов. Штрих в режиме простого принтера в 
этой версии не работает.

Второй адрес репозитория вы использовали 
совершенно правильно 
(http://openbravoposru.googlecode.com/svn/branches/bigur/). Именно из 
него надо делать проект и компилировать. 
Что там Вас смущает? Какого _конкретно_ 
файла не хватает? Если можно, то укажите 
пожалуйста полностью либо ошибку 
компиляции, либо traceback при падении, если 
такое наблюдается.

Еще раз, вопросы, которые не относятся к #74 
давайте обсуждать в гугловской группе 
(рассылка): http://groups.google.com/group/openbravoposru .

Прямо после этого поста по веткам и по 
сборке проекта отвечайте пожалуйста туда.

Original comment by gennady....@gmail.com on 10 Apr 2011 at 12:05

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Мой первоначальный вариант кода работает 
совершенно по другому алгоритму(он сейчас 
в /trunk), алгоритм выложенный в /branches/bigur/ 
совершенно иной, по этому сравнивать их не 
имеет смысла. Если испытания пройдут 
успешно(а я уже уверен в этом), этот 
алгоритм вернётся в основную ветку /trunk.

svn checkout http://openbravoposru.googlecode.com/svn/branches/bigur/ 
openbravoposru-bigur

Подтверждаю, код из /branches/bigur/ рабочий, если 
есть конкретные вопросы по компиляции 
задайте в http://groups.google.com/group/openbravoposru 
попробуем ответить, но для начала выложите 
сообщения об ошибках.

Original comment by svinin...@gmail.com on 10 Apr 2011 at 3:51

GoogleCodeExporter commented 9 years ago
Передаю эту тему Геннадию.

Original comment by svinin...@gmail.com on 13 Apr 2011 at 10:17

GoogleCodeExporter commented 9 years ago
Работа Штриха в режиме фискального 
регистратора реализована в r464. Речь идет 
только о печати чеков (продажа). Другие 
функции (возврат товара, взяли деньги из 
кассы, вернули деньги в кассу) не 
реализованы. Другие функции будут 
реализованы чуть позже, так как текущая 
архитектура Openbravo POS этого не позволяет. Мы 
тогда подумаем как лучше поменять API, и я 
доделаю остальные операции.

Драйвер не работает в режиме простой 
печати (дайте мне еще пару дней). С 
понедельника я планирую текущий драйвер 
поставить на какую-либо "боевую" кассу и 
посмотрю как оно работает уже в реальном 
режиме. После такого тестирования исправим 
пару ошибок, которые я не углядел, и я смогу 
драйвер рекомендовать.

Original comment by gennady....@gmail.com on 13 Apr 2011 at 7:11

GoogleCodeExporter commented 9 years ago

Original comment by svinin...@gmail.com on 18 Apr 2011 at 5:35

GoogleCodeExporter commented 9 years ago
Ну в r481 Штрих-ФР заработал и в режиме 
принтера. Конечно без стилей текста, 
изменения шрифтов, жирности шрифта. Без 
картинок и штрих-кода. Буду реализовывать 
по мере необходимости.

Сегодня один аппарат начнет работать уже в 
боевом режиме. Подождем недельку да 
посмотрим что будет.

Пока использование на реальных аппаратах 
не рекомендую.

Original comment by gennady....@gmail.com on 20 Apr 2011 at 9:07

GoogleCodeExporter commented 9 years ago
Вижу по сегодняшним коммитам мы вместе 
движемся к намеченному функционалу для 
выпуска версии 0.3.0. Сегодня вечером 
попробую локально слить ветку /branches/bigur с 
основной /trunk

Завтра хочу протестировать в режиме 
принтера получившейся код. Правда 
фискальник реальный, но в режиме принтера 
регистраций в памяти быть не должно. Если у 
меня этот тест пройдёт, то ветки можно 
будет сливать.

Original comment by svinin...@gmail.com on 20 Apr 2011 at 11:23

GoogleCodeExporter commented 9 years ago
Всё!!!

Начиная с r483, в коде нашего проекта есть 
поддержка фискальных регистраторов 
Штрих-ФР. Берите код из /trunk

Просим всех проверить как они с Openbravo POS 
работают.Если будут замечания будем 
исправлять. Все замечания по коду прошу 
выкладывать в отдельных темах, если есть 
сомнения нужно-ли создавать тему в Issues 
прошу задавать вопросы в рассылке.

Original comment by svinin...@gmail.com on 21 Apr 2011 at 2:07