Команды принтеру...

Ответить
Аватара пользователя
nec 3540A

Команды принтеру...

Сообщение nec 3540A »

Хотелось узнать, где написано про команды, которые можно послать принтеру (Epson stylus 640) на выполнение? Почитал мануал, тоже нечего подходящего не нащел, вот код моего записыльщика в порт принтера ( DELPHI ):





Код:

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

Под Win16 Вы можете использовать функцию SpoolFile, или Passthrough escape, если принтер поддерживает последнее.Под Win32 Вы можете использовать WritePrinter. 
Ниже пример открытия принтера и записи чистого потока данных в принтер.Учтите, что Вы должны передать корректное имя принтера, такое, как "HP LaserJet5MP",чтобы функция сработала успешно.
Конечно, Вы можете включать в поток данных любые необходимые управляющие коды,которые могут потребоваться.
uses WinSpool;
procedure WriteRawStringToPrinter(PrinterName:String; S:String);
var
  Handle: THandle;
  N: DWORD;
  DocInfo1: TDocInfo1;
begin
  if not OpenPrinter(PChar(PrinterName), Handle, nil) then
  begin
    ShowMessage('error ' + IntToStr(GetLastError));
    Exit;
  end;
  with DocInfo1 do begin
    pDocName := PChar('test doc');
    pOutputFile := nil;
    pDataType := 'RAW';
  end;
  StartDocPrinter(Handle, 1, @DocInfo1);
  StartPagePrinter(Handle);
  WritePrinter(Handle, PChar(S), Length(S), N);
  EndPagePrinter(Handle);
  EndDocPrinter(Handle);
  ClosePrinter(Handle);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  WriteRawStringToPrinter('HP', 'Test This');
end;
Аватара пользователя
ivank

Re: Команды принтеру...

Сообщение ivank »

nec 3540A

А зачем слать сырые команды, а не воспользоваться какими-нибудь более высокоуровневыми API?
Аватара пользователя
ivank

Re: Команды принтеру...

Сообщение ivank »

ivank

А поподробнее где можно про них прочитать?
Аватара пользователя
nec 3540A

Re: Команды принтеру...

Сообщение nec 3540A »

В MSDN написано, я там читал. В разделах GDI и Printing
Ответить

Вернуться в «Программирование и базы данных»