Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]

Раздел для обсуждения программного обеспечения КБ по ККМ Меркурий.
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]

Сообщение slan »

В данной теме обсуждаем драйвер, вносим предложения

Теги:
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]

Сообщение slan »

Пример подключения к ФР для белорусской версии протокола (С++ Builder):

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

Variant MSK;
MSK = CreateOleObject("MercuryCom.FPDrv1C2");
WideString devID = "";

SAFEARRAY *pArray = 0;
pArray = SafeArrayCreateVector(VT_VARIANT, 0, 6);
Variant *pData = 0;
SafeArrayAccessData(pArray, (void**)&pData);
pData[0] = 6;		//порт
pData[1] = 57600;   //скорость
pData[2] = "0000";  //пароль
pData[3] = 1;       //секция
pData[4] = true;    //печатать ли налоги
pData[5] = 11;       //протокол
SafeArrayUnaccessData(pArray);

long idErr;
VARIANT_BOOL result = MSK.OleFunction("Подключить", pArray, &devID);
idErr = MSK.OleFunction("ПолучитьОшибку", &err_descr);    //если произошла ошибка
Аватара пользователя
Dima
Сообщения: 10
Зарегистрирован: 18 сен 2012, 15:54

Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]

Сообщение Dima »

Делаю вот так ...

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

FR : FPDrv1C2;

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

constructor TGepard2.Create;
begin
  inherited;
  fr:=CoFPDrv1C2.Create;
end;

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

function TGepard2.Connect: boolean;
type
  TVarDataArray = array[0..5] of variant;
  PVarDataArray = ^TVarDataArray;
var
  pdata: PVarDataArray;
  pArray : PSafeArray;
  devID:WideString;
begin
  result:=false;
  pArray := SafeArrayCreateVector(VT_VARIANT, 0, 6);
  SafeArrayAccessData(pArray, ppointer(@pdata)^);
  pdata^[0] := 2;        //порт
  pdata^[1] := 115200;   //скорость
  pdata^[2] := '0000';   //пароль
  pdata^[3] := 1;        //секция
  pdata^[4] := false;    //налог
  pdata^[5] := 11;       //протокол
  SafeArrayUnaccessData(pArray);
  result:=fr.open(pArray, devID);
end;

result - не определен, devid - пустой...

Подскажите где может быть ошибка)))) Может потому что я не объявляю в create вот эту строку
FR:= CreateOleObject('MercuryCom.FPDrv1C2'); а сразу описываю FR: FPDrv1C2;
но если сделать наоборот, то у FR незнает откуда брать свойства open?devicetest и т.д.
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]

Сообщение slan »

К сожалению у меня нет возможности проверить Ваш код на Delphi (да и если честно я его слабо знаю :) ), хотя вроде бы должно работать
Аватара пользователя
alfa
Сообщения: 45
Зарегистрирован: 14 апр 2012, 18:46

Ширина чековой ленты в символах

Сообщение alfa »

Имел дело лишь с Меркуриями MS-K.
Там ширина ленты равна 40 симв.
Есть ли модели ФР , у которых ширина ленты отличается от 40 ?
И если есть , то можно добавить какое нибуть своиство или метод в драйвер , позволяющие прочитать это значение
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Re: Ширина чековой ленты в символах

Сообщение slan »

alfa писал(а):Имел дело лишь с Меркуриями MS-K.
Там ширина ленты равна 40 симв.
Есть ли модели ФР , у которых ширина ленты отличается от 40 ?
И если есть , то можно добавить какое нибуть своиство или метод в драйвер , позволяющие прочитать это значение
ФР работает с 2-мя лентами: 57 и 80 мм. Могу добавить метод для получения этого значения. 40 символов на ленту влазит не всегда, т.к. есть возможность изменить размер шрифта свойствами драйвера МаленькийШрифт, ШирокийШрифт, ВысокийШрифт
Аватара пользователя
alfa
Сообщения: 45
Зарегистрирован: 14 апр 2012, 18:46

Re: Ширина чековой ленты в символах

Сообщение alfa »

slan писал(а): ФР работает с 2-мя лентами: 57 и 80 мм. Могу добавить метод для получения этого значения. 40 символов на ленту влазит не всегда, т.к. есть возможность изменить размер шрифта свойствами драйвера МаленькийШрифт, ШирокийШрифт, ВысокийШрифт
Если я правильно понял , то независимо от ширины ленты , количество символов при использование маленького и высокого шрифта будет одинаково и равно 40 . А при использование широкового шрифта менее 40.
Как будет производится перенос строк при использовании широкого шрифта ? Драйвер будет корректно его выполнять или обрезать часть текста?
в принципе метод может быть полезен , но в паре с другим методом , который позволит узнать ширину символа выбранного шрифта .
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Re: Ширина чековой ленты в символах

Сообщение slan »

alfa писал(а): Если я правильно понял , то независимо от ширины ленты , количество символов при использование маленького и высокого шрифта будет одинаково и равно 40 . А при использование широкового шрифта менее 40.
Нет, не так. Привожу количество символов в строке для разных лент (все возможные варианты):
Ширина 57 мм: 28, 14, 40, 20
Ширина 80 мм: 40, 20, 56, 28.
Поэкспериментриуйте со свойствами для задания размера шрифта, Вам станет всё понятно.
alfa писал(а): Как будет производится перенос строк при использовании широкого шрифта ? Драйвер будет корректно его выполнять или обрезать часть текста?
в принципе метод может быть полезен , но в паре с другим методом , который позволит узнать ширину символа выбранного шрифта .
Перенос будет вести себя так же как и при нешироком шрифте (обрезать не должен). Мы с Вами обсуждали эту тему в другом топике.
Аватара пользователя
alfa
Сообщения: 45
Зарегистрирован: 14 апр 2012, 18:46

Re: Ширина чековой ленты в символах

Сообщение alfa »

slan писал(а): Нет, не так. Привожу количество символов в строке для разных лент (все возможные варианты):
Ширина 57 мм: 28, 14, 40, 20
Ширина 80 мм: 40, 20, 56, 28.
Поэкспериментриуйте со свойствами для задания размера шрифта, Вам станет всё понятно.
Можно добавить метод , который вернет количество символов для нефискальной строки , с учетом текущих значений свойств HighFont WideFont и SmallFont и ширины ленты ФР?
Аватара пользователя
byron
Сообщения: 2
Зарегистрирован: 20 сен 2012, 13:25

Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]

Сообщение byron »

Обратил внимание, что в версии 1.x шли примеры использования компоненты на Vb...Нельзя ли для версии 2 также увидеть небольшой примерчик под vb6 или vb.net, хотя бы с парочкой функций - ОткрытьЧек (OpenCheck) и , скажем, Подключить (Open) . Как то не получается корректно передать параметры...
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]

Сообщение slan »

Версии 1.7.хх и 1.9.хх разрабатывались не Курским КБ. Примеров на VB не будет, т.к. мы его не знаем. Только С++ Builder
Аватара пользователя
alfa
Сообщения: 45
Зарегистрирован: 14 апр 2012, 18:46

Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]

Сообщение alfa »

Можно ли добавить метод , который вернет статус сессии (отрыта или закрыта) ?
Можно ли добавить метод , который вернет статус смены (требуется закрыть смену , не требуется закрыть смену) , о котором сигнализирует Ошибка 2:Не закрыта смена, при закрытии чека
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]

Сообщение slan »

alfa писал(а):Можно ли добавить метод , который вернет статус сессии (отрыта или закрыта) ?
Что Вы имеете ввиду?
alfa писал(а):Можно ли добавить метод , который вернет статус смены (требуется закрыть смену , не требуется закрыть смену) , о котором сигнализирует Ошибка 2:Не закрыта смена, при закрытии чека
Добавлю
Аватара пользователя
alfa
Сообщения: 45
Зарегистрирован: 14 апр 2012, 18:46

Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]

Сообщение alfa »

slan писал(а):
alfa писал(а):Можно ли добавить метод , который вернет статус сессии (отрыта или закрыта) ?
Что Вы имеете ввиду?
Метод open подключает ФР , и возвращает ссылку на идендификатор у-ва DeviceID
Я имею ввиду метод , который вернет статус сессии DeviceID примерно так : Fr.IsOpen(DeviceID)
Метод возвращает истину True , если сессия DeviceID была открыта и существует , и ложь False , если сессия DeviceID была закрыта или не создавалась
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]

Сообщение slan »

alfa писал(а):Метод open подключает ФР , и возвращает ссылку на идендификатор у-ва DeviceID
Я имею ввиду метод , который вернет статус сессии DeviceID примерно так : Fr.IsOpen(DeviceID)
Метод возвращает истину True , если сессия DeviceID была открыта и существует , и ложь False , если сессия DeviceID была закрыта или не создавалась
понял, сделаю
Аватара пользователя
byron
Сообщения: 2
Зарегистрирован: 20 сен 2012, 13:25

Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]

Сообщение byron »

Работа драйверов в VB6, как оказалось, никаких проблем не вызвала. Если кому-нибудь пригодится - выкладываю кусок кода по командам проверки и подключению:
Private MSK As Variant
.....
Set MSK = CreateObject("MercuryCom.FPDrv1C2")

Dim FK_Serial_Port As Long
FK_Serial_Port = 1
Dim FK_Port_Speed As Long
FK_Port_Speed = 9600
Dim FK_Password As String * 4
FK_Password = "0000"
Dim FK_Section As Long
FK_Section = 1
Dim FK_Nalog As Boolean
FK_Nalog = False
Dim FK_Model As Long
FK_Model = 1

Dim lpBuffer As String
Dim asdf2 As Boolean

ReDim pArray(5)
pArray(0) = FK_Serial_Port
pArray(1) = FK_Port_Speed
pArray(2) = FK_Password
pArray(3) = FK_Section
pArray(4) = FK_Nalog
pArray(5) = FK_Model

Dim Err_lpBuffer As String
Dim lpBuffer22 As String

If Not MSK.DeviceTest(pArray, lpBuffer22) Then
MSK.GetLastError (Err_lpBuffer)
MsgBox Err_lpBuffer
Exit Sub
End If


If Not MSK.Open(pArray, lpBuffer) Then
MSK.GetLastError (Err_lpBuffer)
MsgBox Err_lpBuffer
Exit Sub
End If

MsgBox "Устройство " & lpBuffer & " подключено"

If Not MSK.Close(lpBuffer) Then
MSK.GetLastError (Err_lpBuffer)
MsgBox Err_lpBuffer
Exit Sub
End If
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]

Сообщение slan »

качайте версию 2.2.0, добавлены методы для получения символов в строке, состояния смены, состояния соединения
Аватара пользователя
alfa
Сообщения: 45
Зарегистрирован: 14 апр 2012, 18:46

Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]

Сообщение alfa »

slan писал(а):качайте версию 2.2.0, добавлены методы для получения символов в строке, состояния смены, состояния соединения
Попробовал установить версию , но мои антивирус (COMODO) ругается на вредоносное ПО
Описание новых методов где можно прочитать ?
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]

Сообщение slan »

Описание новых методов почитать в документации, она вместе с драйвером устанавливается. Мой антивирус Microsoft Security Essentials на установку не ругается
Ответить