Для самостоятельного написания бибилиотеки поддержки любой модели ККМ ознакомьтесь с исходным текстом шаблона. При разработке DLL автор использует DELPHI. Вам требуется написать код трех функций. Четвертая функция - About - не обязательная. Можете добавить ее, если хотите, чтобы информация о Вас появилась в окошке программы. Поля TFisSet.Ok, TFisRep.Ok и NumberOk равны TRUE если данные о фискализации, сменном отчете и номере ККМ соответственно - верные. Иначе их значения нужно установить в FALSE. Библиотеки используют переменные типа TKKM. В массивах содержатся записи о фискализациях и перерегистрациях. Остальное, думаю, очевидно. При чтении заполняйте поля и массивы. При записи, соответственно - наоборот. Признаком окончания данных в таблице является нулевое значение ее полей (можете использовать для проверки, например, дату). Параметр FN - имя файла из которого нужно прочитать или в который нужно записать данные (передается из главной программы).
library name_file_dll;
uses
SysUtils, Classes;
{$R *.res}
type
TFisSet = record
Pass, INN, RegN, Z: int64;
SetD, SetM, SetY: Word;
Ok: Boolean
end;
TFisRep = record
Num: integer;
RepD, RepM, RepY: Word;
SumPlus, SumMinus: Real;
Ok: Boolean
end;
TKKM = record
Number: array[0..15] of Char;
NumberOk: Boolean;
FisRepCount: integer;
FisD, FisM, FisY: Word;
FisSet: array[0..30] of TFisSet;
FisRep: array[0..4000] of TFisRep;
end;
function GetName: PChar; export; stdcall;
begin
Result := 'Название вашей модели(появится в списке)';
end;
function About: PChar; export; stdcall;
begin
Result := 'Ваш рекламный текст (появится после чтения и перед записью)';
end;
function OpenFisFile(FN: PChar): TKKM; export; stdcall;
begin
{ваш текст для чтения данных из файла}
end;
procedure SaveFisFile(FN: PChar; KKM: TKKM); export; stdcall;
begin
{ваш текст для записи данных в файл}
end;
exports
GetName, About, OpenFisFile, SaveFisFile;
end.
Редакторы содержат закладку "ЭКЛЗ". На ней отображаются данные об активированных блоках электронной контрольной ленты. Соответственно, для ККМ "К" серии в исходный текст DLL требуется добавить функцию и процедуру чтения-записи этих данных. При разработке DLL автор использует DELPHI. Поле TEklzSet.Ok равно TRUE, если данные об активации ЭКЛЗ верные. Иначе его значения нужно установить в FALSE. Библиотеки используют переменные типа TEKLZ. В массиве содержатся записи о активациях. При чтении заполняйте массив. При записи - читайте из него записи и пишите в файл. Признаком окончания данных в массиве является нулевое значение полей его элемента (можете использовать для проверки, например, дату). Параметр FN - имя файла из которого нужно прочитать или в который нужно записать данные (передается из главной программы). Еще раз обращаю ваше внимание на то, что функции GetName и OpenFisFile и процедура SaveFisFile также должны содеражатся в библиотеке, но их формат не изменился (см. директиву exports в данном шаблоне).
library name_file_dll;
uses
SysUtils, Classes;
{$R *.res}
type
TEklzSet = record
RegN, Z: int64;
SetD, SetM, SetY: Word;
Ok: Boolean
end;
TEklz = array[0..30] of TEklzSet;
function OpenEklzFile(FN: PChar): TEklz; export; stdcall;
begin
{ваш текст для чтения данных из файла}
end;
procedure SaveEklzFile(FN: PChar; Eklz: TEklz); export; stdcall;
begin
{ваш текст для записи данных в файл}
end;
exports
GetName, OpenFisFile, OpenEklzFile, SaveFisFile, SaveEklzFile;
end.