Применение в своих программах DrvMercFR.dll

Модели:
Меркурий-115Ф, Меркурий-119Ф, Меркурий-130Ф, Меркурий-180Ф, Меркурий-185Ф, Меркурий-МФ...
Аватара пользователя
час
Сообщения: 28
Зарегистрирован: 27 окт 2011, 08:52

Применение в своих программах DrvMercFR.dll

Сообщение час »

Кто нибудь подскажите - как эту dll использовать в программе написанной на vb6.
Оборудование:
Mercury 130 в рабочем режиме = 3
Аватара пользователя
час
Сообщения: 28
Зарегистрирован: 27 окт 2011, 08:52

Re: Применение в своих программах DrvMercFR.dll

Сообщение час »

Public Function DLLOCX(ByVal hwnd As Long, ByVal Path As String, ByVal Register As Boolean) As Boolean

On Error Resume Next
Dim LB As Long, PA As Long
Dim L As String
Dim LP As String

LB = LoadLibrary(Path)
If LB = 0 Then Exit Function

LP = "1"
L = "000000"
как правильно написать строку на соединение?
PA = GetProcAddress(LB, "Connect(1, 9600, 400, " & L & ")")



If PA = 0 Then GoTo 0
Call CallWindowProc(PA, hwnd, ByVal 0&, ByVal 0&, ByVal 0&)
DLLOCX = True
0

End Function
Аватара пользователя
час
Сообщения: 28
Зарегистрирован: 27 окт 2011, 08:52

Re: Применение в своих программах DrvMercFR.dll

Сообщение час »

Спасибо!
- иду смотреть.
=================
посмотрел.....
Я пишу тоже самое, только что-то где то ошибочка какая то......
где что не так, не понятно....

Код: Выделить всё

           PA = GetProcAddress(LB, "Connect(1, 9600, 400 " & L & ")")
           PA = GetProcAddress(LB, "Connect(1, 19200, 400 " & L & ")")
           PA = GetProcAddress(LB, "Connect(1, 57600, 400 " & L & ")")
          PA = GetProcAddress(LB, "Connect(1, 115200, 400 " & L & ")")
Не прокатывает ни одна строка....
Аватара пользователя
Shtirlic
Сообщения: 377
Зарегистрирован: 18 фев 2011, 11:21

Re: Применение в своих программах DrvMercFR.dll

Сообщение Shtirlic »

получить адрес функции и вызвать функцию это разное
возможно так:

hLib = LoadLibrary("DrvMercFR.dll")
hConnect= GetProcAddress (hLib,"Connect")
CallWindowProc hConnect, 1, 9600, 400, "000000"
FreeLibrary hLib

но я VB не знаю.
Аватара пользователя
час
Сообщения: 28
Зарегистрирован: 27 окт 2011, 08:52

Re: Применение в своих программах DrvMercFR.dll

Сообщение час »

Спасибо!!!
Выкрутился я вот как:
Еесть такая библиотека - для доступа к функциям таких библиотек - как та, что попалася мне.

Код: Выделить всё

DynamicWrapperX v1.0
После её регистации - всё становится проще

Код: Выделить всё

Private Sub Command2_Click()
Dim DX  As Object
Dim res
Set DX = CreateObject("DynamicWrapperX")                    ` Создание объекта.

` вызов функции с параметрами
DX.Register App.Path & "\DrvMercFR.dll", "Connect", "i=hhhs", "r=l"    ` Регистрация функции из dll.
res = DX.Connect(1, 9600, 400, "000000")

` вызов функции без параметров
DX.Register App.Path & "\DrvMercFR.dll", "Xreport"   ` Регистрация функции из dll.
res = DX.XReport     ` Вызов.
End Sub
Последний раз редактировалось час 16 ноя 2011, 21:56, всего редактировалось 1 раз.
Аватара пользователя
час
Сообщения: 28
Зарегистрирован: 27 окт 2011, 08:52

Re: Применение в своих программах DrvMercFR.dll

Сообщение час »

Коннектюся и х отчёт и Z-отчёт уже забабахал.
Остальное уже, я думаю - приложится :D
==================
Так что, если будет необходимость - прочти страничку по ссылке - и все проблемы с подключением и использованием библиотек - будут уже не так страшны!
Аватара пользователя
час
Сообщения: 28
Зарегистрирован: 27 окт 2011, 08:52

Re: Применение в своих программах DrvMercFR.dll

Сообщение час »

Интересно , а произвольную строку написать - функция в этой dll имеется?
==================
И где вообще посмотреть все её функции?
----------------------------------------------
Кстати такие фунции как QueryEcrDateTime
GetCurrOper
- не понял как вызывать и обрабатывать.
Кто нибудь приведите пример на любом языке программирования.
Аватара пользователя
Shtirlic
Сообщения: 377
Зарегистрирован: 18 фев 2011, 11:21

Re: Применение в своих программах DrvMercFR.dll

Сообщение Shtirlic »

Интересно , а произвольную строку написать - функция в этой dll имеется?
ККМ это не поддерживает

И где вообще посмотреть все её функции?
здесь весь материал в том числе и некоторое описание
Аватара пользователя
час
Сообщения: 28
Зарегистрирован: 27 окт 2011, 08:52

Re: Применение в своих программах DrvMercFR.dll

Сообщение час »

Спасибо!!!
Мне надо копию чека печатать, но позиции выборочные - только в первую секцию(услуги).
А товары в копии чека печатать не нужно - что Вы можете посоветовать?
Аватара пользователя
Shtirlic
Сообщения: 377
Зарегистрирован: 18 фев 2011, 11:21

Re: Применение в своих программах DrvMercFR.dll

Сообщение Shtirlic »

на сколько я понимаю такое не возможно, может быть даже уголовно наказуемо, возможно я Вас просто не понял.
Аватара пользователя
Briarius
Сотрудник Инкотекс
Сотрудник Инкотекс
Сообщения: 386
Зарегистрирован: 17 май 2011, 17:37
Контактная информация:

Re: Применение в своих программах DrvMercFR.dll

Сообщение Briarius »

час писал(а):Мне надо копию чека печатать, но позиции выборочные - только в первую секцию(услуги).
А товары в копии чека печатать не нужно - что Вы можете посоветовать?
Не смешите определением копии чека! Копия на то и копия, что она полностью совпадает с оригиналом и имеет сопутствующую информацию, указывающую, что это копия документа.
Аватара пользователя
час
Сообщения: 28
Зарегистрирован: 27 окт 2011, 08:52

Re: Применение в своих программах DrvMercFR.dll

Сообщение час »

Что же тут смешного?
По Вашему - надо в кавычки заключать слово КОПИЯ?
Или вы не въехали в суть вопроса?
========================
Специально - для Вас:
Как сделать копию чека - строками.
Так как это реализовано в драйвере ШТРИХа?
Если в драйвере Меркурия нет возможности печати произвольных строк, то нужен совет - как это всё таки можно реализовать. потому как заказчику требуется два чека, но что бы не задваивалась сумма итога и что бы печатать только услуги из определённой секции - необходимо создать документ - "копия" чека.
Так - не смешно?
Аватара пользователя
час
Сообщения: 28
Зарегистрирован: 27 окт 2011, 08:52

Re: Применение в своих программах DrvMercFR.dll

Сообщение час »

И почему нельзя добавить функцию вывод на печать произвольной строки???
==============
тогда и заголовок чека - можно было из верхнего По писать не заботясь о том, сто строк не хватит и в конце чека то же и вообще ЧПМ стала бы более функциональной и применение ей можно было бы найти более широкое.
Как принтер использовать - параллельно с основным её видом деятельности :D
Добавлять в чек комментарии и прочее прочее.
Для реализации данной функции - не требуется много усилий.
несколько строк кода - тестирование и выложить новую версию.
Хотя, конечно это ИХМО.
Пасатецкий меня бы поддержал :D
Аватара пользователя
Shtirlic
Сообщения: 377
Зарегистрирован: 18 фев 2011, 11:21

Re: Применение в своих программах DrvMercFR.dll

Сообщение Shtirlic »

https://forum.incotexkkm.ru/viewtopic.php?f=7&t=18 - здесь надеюсь Вы найдете ответы на некоторые вопросы, в том числе и по поводу печати произвольного текста.
Аватара пользователя
Briarius
Сотрудник Инкотекс
Сотрудник Инкотекс
Сообщения: 386
Зарегистрирован: 17 май 2011, 17:37
Контактная информация:

Re: Применение в своих программах DrvMercFR.dll

Сообщение Briarius »

час писал(а):И почему нельзя добавить функцию вывод на печать произвольной строки???
1) Потому что есть есть требования закона к ККМ. Если просто печатать строки через кассу, то это уже не касса, а принтер, с помощью которого у некоторых граждан возникает желание печатать чеки, которые не проводятся по кассе. В идеальном случае ФР или касса имеют функционал, позволяющий предупредить возможные злоупотребления при печати текстовой информации. Поэтому, чтобы реализовать адекватную печать произвольного текста в 130-х, необходимо вводить соответствующие механизмы логирования и учета распечатанного текста. Для текущей версии прошивки такая задача не так проста, как кажется на первый взгляд и к тому же уже банально не хватает памяти процессора для дополнительного кода прошивки. Плюс везде и всегда сообщалось и сообщается, что режим ФР в кассе реализован в весьма упрощенном варианте, иначе какой смысл будет в производстве ФР, как отдельного класса устройств.
2) Копия чека может печататься средствами кассы и это действительно копия чека, а не его выдержки. При этом в регистры кассы из копии ничего не попадает, а считается лишь количество копий. Есть ли функция в dll, может подсказать Shtirlic.
Аватара пользователя
час
Сообщения: 28
Зарегистрирован: 27 окт 2011, 08:52

Re: Применение в своих программах DrvMercFR.dll

Сообщение час »

Спасибо Вам за подробный ответ!
Но у шртиха сей рогатины нет
Там я пишу без преград - что хочу
Тексты любые из строк ворочу

Только вот признак фискальный иль нет
Тут уж конечно поставлен запрет
Три друг на друге проставить черты
В кассе не сможем ни я и не ты....
Аватара пользователя
час
Сообщения: 28
Зарегистрирован: 27 окт 2011, 08:52

Re: Применение в своих программах DrvMercFR.dll

Сообщение час »

Код: Выделить всё

Плюс везде и всегда сообщалось и сообщается, что режим ФР в кассе реализован в весьма упрощенном варианте, иначе какой смысл будет в производстве ФР, как отдельного класса устройств.
Вот именно!!!
Она должна просто печатать чеки с необходимыми по законодательству реквизитами в них.
То есть достаточно иметь одну функцию - печать строки.
С вводимыми параметрами в эту строку(Цена, колич. отдел, наимен. товара)/
И два варианта печати чека - с фискальным признаком и без оного.
То есть не на каждую строку ограничение а на итог чека.
Если чек фискальный, то все строки его попадают в регистры, а если нет - то это произвольный текст.
Кстати есть функции - от которых можно отказаться. А на освободившемся месте разместить. Необходимые строки кода.
Аватара пользователя
час
Сообщения: 28
Зарегистрирован: 27 окт 2011, 08:52

Re: Применение в своих программах DrvMercFR.dll

Сообщение час »

Код: Выделить всё

'ECR.Password = "30"
'
''ECR.StringForPrinting = "ККМ " & Format(ECR.SerialNumber, "00000000") & " ИНН " & ECR.INN & " #"   '
''ECR.PrintString '29
''ECR.StringForPrinting = Date & " " & Time & " " & GLB_USER_NAME '
''ECR.PrintString '30
''ECR.StringForPrinting = "----------------------------------------"
''ECR.PrintString '9
''ECR.StringForPrinting = "          Услуги  Автомойки."
''ECR.PrintString
'ECR.StringForPrinting = "----------------------------------------"
'ECR.PrintString '9
'ECR.StringForPrinting = "     Регистрационный номер автомобиля"
'ECR.PrintString '8
'ECR.StringForPrinting = " "
'ECR.PrintString '8
'ECR.FontType = 2
'ECR.StringForPrinting = "      " & GLB_REG_NUMBER_AVTO
'ECR.PrintStringWithFont
'ECR.StringForPrinting = " " 'ECR.FeedDocument ' продвинуть документ
'ECR.PrintString '20
'ECR.StringForPrinting = "(" & GLB_CLASS & ")"
'ECR.PrintString '10
'ECR.StringForPrinting = "----------------------------------------"
'ECR.PrintString '9
Вот в драйвере штриха я свободно печатаю - дополнительную информацию.

Делаю два "чека" один для клиента, а второй для внутреннего учёта и на случай разборок и недоразумений.
Но второй чек он не похож на первый и фискальный признак в нём отсутствует. то есть это не чек... а распечатанный текст.
Аватара пользователя
Shtirlic
Сообщения: 377
Зарегистрирован: 18 фев 2011, 11:21

Re: Применение в своих программах DrvMercFR.dll

Сообщение Shtirlic »

Да действительно сильно (про стих)!
У шриха то Вы фискальник сравниваете с ККМ Инкотекса в которой есть некоторая поддержка ФР режима, в этом случае более корректно рассмотреть фискальник Инкотекса, там можно и произвольные строки печатать, только как по закону и положено это все фиксируется в фискальной памяти.
Ответить