четверг, 4 июня 2015 г.

Работа с термопринтером печати чеков GODEX EZ-DT-2

Вообще-то для работы с термопринтерами печати чеков идет свое API, с помощью которого и формируется вывод информации на чеке: его положение, шрифт, форма и т.п., а не просто печать на канвасе или вывод через ESC-последовательности. Рассматривать вывод информации в отрыве от спецоборудования чревато, универсальных способов нет или практически нет. Как пример, GODEX EZ-DT-2 с шириной печати этикеток до 54 мм, и скоростью 100 мм в секунду, являющийся продолжением линейки термопринтеров EZ. Из особенностей можно выделить наличие двух типов сенсоров края этикетки - на отражение и просвет, один из которых подвижный. Последнее дает возможность работать с этикетками нестандартной формы. Впрочем, можно перевести EZ-DT-2 в автосенсорный режим, и он сам определит размер заправленных в него этикеток.

Вот как можно послать информацию на него средствами API EZWeb.dll:
var

  endjob:function:cardinal;stdcall;
  openport:procedure(name:PChar);stdcall;
  beginjob:procedure(a,b,c,d,e,f:cardinal);stdcall;
  sendcommand:procedure(command:PChar);stdcall;
  closeport:procedure;stdcall;
 LibHandle: THandle;

function LinkProc(ProcName: string):Pointer;
begin
  GetProcAddress(LibHandle,PChar(ProcName));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 LibHandle:= LoadLibrary('EZWeb.dll');
 if LibHandle<>0 then begin
  endjob     := LinkProc('endjob');
  openport   := LinkProc('openport');
  beginjob   := LinkProc('beginjob');
  sendcommand:= LinkProc('sendcommand');
  closeport  := LinkProc('closeport');
 end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 
if LibHandle<>0 then begin
  openport('GODEX EZ-DT-2');    // 0-> LPT1; 1-> COM1; 2->COM2
  beginjob(30, 7, 2, 1, 0, 0);
   sendcommand('^Q76,0,0');
   sendcommand('^L');
   sendcommand('BE,30,42,3,7,100,0,1,123456789012');
   sendcommand('E');
  endjob();
 closeport(); 
 end;
end;

Ресурсы
  1. Мануал 'The Web DLL for printer with EZPL command'
  2. Тестовая утилита печати чеков

Комментариев нет:

Отправить комментарий

В комментариях уважайте собеседника, внимательно читайте посты и не додумывайте. Просьбы и предложения из разряда: «можно ваш Skype/Viber/телефон», «напишите мне в vk/FB», а также другие им подобные — игнорируются. Выход новых версий ПО, внешняя ссылка, переставшая работать с течением времени и т.п. не является основанием для претензий. Желающие спокойно подискутировать и высказаться — Welcome. Желающие спонсировать блог — Donate. Нарушение этих простых правил ведет к бану и удалению комментариев без предупреждения.