Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]
Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]
В данной теме обсуждаем драйвер, вносим предложения
Теги:
Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]
Пример подключения к ФР для белорусской версии протокола (С++ 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); //если произошла ошибка
Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]
Делаю вот так ...
result - не определен, devid - пустой...
Подскажите где может быть ошибка)))) Может потому что я не объявляю в create вот эту строку
FR:= CreateOleObject('MercuryCom.FPDrv1C2'); а сразу описываю FR: FPDrv1C2;
но если сделать наоборот, то у FR незнает откуда брать свойства open?devicetest и т.д.
Код: Выделить всё
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 и т.д.
Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]
К сожалению у меня нет возможности проверить Ваш код на Delphi (да и если честно я его слабо знаю
), хотя вроде бы должно работать

Ширина чековой ленты в символах
Имел дело лишь с Меркуриями MS-K.
Там ширина ленты равна 40 симв.
Есть ли модели ФР , у которых ширина ленты отличается от 40 ?
И если есть , то можно добавить какое нибуть своиство или метод в драйвер , позволяющие прочитать это значение
Там ширина ленты равна 40 симв.
Есть ли модели ФР , у которых ширина ленты отличается от 40 ?
И если есть , то можно добавить какое нибуть своиство или метод в драйвер , позволяющие прочитать это значение
Re: Ширина чековой ленты в символах
ФР работает с 2-мя лентами: 57 и 80 мм. Могу добавить метод для получения этого значения. 40 символов на ленту влазит не всегда, т.к. есть возможность изменить размер шрифта свойствами драйвера МаленькийШрифт, ШирокийШрифт, ВысокийШрифтalfa писал(а):Имел дело лишь с Меркуриями MS-K.
Там ширина ленты равна 40 симв.
Есть ли модели ФР , у которых ширина ленты отличается от 40 ?
И если есть , то можно добавить какое нибуть своиство или метод в драйвер , позволяющие прочитать это значение
Re: Ширина чековой ленты в символах
Если я правильно понял , то независимо от ширины ленты , количество символов при использование маленького и высокого шрифта будет одинаково и равно 40 . А при использование широкового шрифта менее 40.slan писал(а): ФР работает с 2-мя лентами: 57 и 80 мм. Могу добавить метод для получения этого значения. 40 символов на ленту влазит не всегда, т.к. есть возможность изменить размер шрифта свойствами драйвера МаленькийШрифт, ШирокийШрифт, ВысокийШрифт
Как будет производится перенос строк при использовании широкого шрифта ? Драйвер будет корректно его выполнять или обрезать часть текста?
в принципе метод может быть полезен , но в паре с другим методом , который позволит узнать ширину символа выбранного шрифта .
Re: Ширина чековой ленты в символах
Нет, не так. Привожу количество символов в строке для разных лент (все возможные варианты):alfa писал(а): Если я правильно понял , то независимо от ширины ленты , количество символов при использование маленького и высокого шрифта будет одинаково и равно 40 . А при использование широкового шрифта менее 40.
Ширина 57 мм: 28, 14, 40, 20
Ширина 80 мм: 40, 20, 56, 28.
Поэкспериментриуйте со свойствами для задания размера шрифта, Вам станет всё понятно.
Перенос будет вести себя так же как и при нешироком шрифте (обрезать не должен). Мы с Вами обсуждали эту тему в другом топике.alfa писал(а): Как будет производится перенос строк при использовании широкого шрифта ? Драйвер будет корректно его выполнять или обрезать часть текста?
в принципе метод может быть полезен , но в паре с другим методом , который позволит узнать ширину символа выбранного шрифта .
Re: Ширина чековой ленты в символах
Можно добавить метод , который вернет количество символов для нефискальной строки , с учетом текущих значений свойств HighFont WideFont и SmallFont и ширины ленты ФР?slan писал(а): Нет, не так. Привожу количество символов в строке для разных лент (все возможные варианты):
Ширина 57 мм: 28, 14, 40, 20
Ширина 80 мм: 40, 20, 56, 28.
Поэкспериментриуйте со свойствами для задания размера шрифта, Вам станет всё понятно.
Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]
Обратил внимание, что в версии 1.x шли примеры использования компоненты на Vb...Нельзя ли для версии 2 также увидеть небольшой примерчик под vb6 или vb.net, хотя бы с парочкой функций - ОткрытьЧек (OpenCheck) и , скажем, Подключить (Open) . Как то не получается корректно передать параметры...
Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]
Версии 1.7.хх и 1.9.хх разрабатывались не Курским КБ. Примеров на VB не будет, т.к. мы его не знаем. Только С++ Builder
Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]
Можно ли добавить метод , который вернет статус сессии (отрыта или закрыта) ?
Можно ли добавить метод , который вернет статус смены (требуется закрыть смену , не требуется закрыть смену) , о котором сигнализирует Ошибка 2:Не закрыта смена, при закрытии чека
Можно ли добавить метод , который вернет статус смены (требуется закрыть смену , не требуется закрыть смену) , о котором сигнализирует Ошибка 2:Не закрыта смена, при закрытии чека
Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]
Что Вы имеете ввиду?alfa писал(а):Можно ли добавить метод , который вернет статус сессии (отрыта или закрыта) ?
Добавлюalfa писал(а):Можно ли добавить метод , который вернет статус смены (требуется закрыть смену , не требуется закрыть смену) , о котором сигнализирует Ошибка 2:Не закрыта смена, при закрытии чека
Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]
Метод open подключает ФР , и возвращает ссылку на идендификатор у-ва DeviceIDslan писал(а):Что Вы имеете ввиду?alfa писал(а):Можно ли добавить метод , который вернет статус сессии (отрыта или закрыта) ?
Я имею ввиду метод , который вернет статус сессии DeviceID примерно так : Fr.IsOpen(DeviceID)
Метод возвращает истину True , если сессия DeviceID была открыта и существует , и ложь False , если сессия DeviceID была закрыта или не создавалась
Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]
понял, сделаюalfa писал(а):Метод open подключает ФР , и возвращает ссылку на идендификатор у-ва DeviceID
Я имею ввиду метод , который вернет статус сессии DeviceID примерно так : Fr.IsOpen(DeviceID)
Метод возвращает истину True , если сессия DeviceID была открыта и существует , и ложь False , если сессия DeviceID была закрыта или не создавалась
Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]
Работа драйверов в 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
Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]
качайте версию 2.2.0, добавлены методы для получения символов в строке, состояния смены, состояния соединения
Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]
Попробовал установить версию , но мои антивирус (COMODO) ругается на вредоносное ПОslan писал(а):качайте версию 2.2.0, добавлены методы для получения символов в строке, состояния смены, состояния соединения
Описание новых методов где можно прочитать ?
Re: Драйвер (ВЕРСИИ 2.X Курск) для ФР/ЧПМ Меркурий MS-K, Меркурий-119, Меркурий-114.1 [Обсуждение]
Описание новых методов почитать в документации, она вместе с драйвером устанавливается. Мой антивирус Microsoft Security Essentials на установку не ругается