Maiores informações sobre Mini Impressoras
Boa noite galera.
Pesquisei, mas não encontrei algo parecido.
Então vamos a pergunta.
Recentemente desenvolvo aplicativos comerciais utilizando a linha da Bematech. Acontece que na região estou encontrando muitas impressoras não fiscais e fiscais de outras marcas tipo Epson, Daruma, etc.
Acontece que a Daruma, disponibiliza opções para as impressoras dela, como a bematech, Mas o gargalo é a Epson.
Alguém já desenvolveu algum programa que utiliza as mini impressoras da Epson?
Pois o problema é como imprimir dados nela, pois a bema e a daru, já disponibilizam drives, bibliotecas, fontes e tudo mais para vc utilizar as mini impressoras dela, e a Epson, como é que fica.... falta material... já pesquisei no site da epson e nada.
Se alguem poder compartilhar ideías do funcionamento dela, a comunidade agradece.
Grato a todos.
Valnei
Pesquisei, mas não encontrei algo parecido.
Então vamos a pergunta.
Recentemente desenvolvo aplicativos comerciais utilizando a linha da Bematech. Acontece que na região estou encontrando muitas impressoras não fiscais e fiscais de outras marcas tipo Epson, Daruma, etc.
Acontece que a Daruma, disponibiliza opções para as impressoras dela, como a bematech, Mas o gargalo é a Epson.
Alguém já desenvolveu algum programa que utiliza as mini impressoras da Epson?
Pois o problema é como imprimir dados nela, pois a bema e a daru, já disponibilizam drives, bibliotecas, fontes e tudo mais para vc utilizar as mini impressoras dela, e a Epson, como é que fica.... falta material... já pesquisei no site da epson e nada.
Se alguem poder compartilhar ideías do funcionamento dela, a comunidade agradece.
Grato a todos.
Valnei
Objetivacreator
Curtidas 0
Respostas
Edilcimar
16/07/2007
a mini impressora da epson pode ser utilizada cos mesmos comando utilizados para uma lx-300, por exemplo, não há problema algum
GOSTEI 0
Sergiokm
16/07/2007
Não sei qual é o seu modelo mas, já trabalhei com uma TM-U295, uma mini impressora da epson. Elas tem uma tabela de código denominada ESC/POS, um pouco diferente da ESC/P e ESC/P2. Procure pela net e encontrará.
GOSTEI 0
Vitor Alcantara
16/07/2007
Cara você não precisa de utilizar os drivers da impressora para imprimir nas mini-impressoras você pode utilizar-se de imipressão direta na porta.
Eu utilizo nas impressões de mini impressoras uma Unit Chamada CharPrinter que me da a flexibilidade de impressão em rede e também envia os dados para a fila de impressão da impressora assim deixando a aplicação livre sem ter que esperar que a impressora imprima pra destravar a aplicação. ( o que ocorre utilizando TextFile).
Olha o código ai da unit:
pra utilizar faz assim:
O caractere #13 serve para pular para a póxima linha
O caractere 10 serve para voltar o carro da impressora
Ps Lembrar de declarar a unit CharPrinter no uses do teu form.
Você pode utilizar uma impressora Genérico Somente Texto para fazer a impressão.
Eu utilizo nas impressões de mini impressoras uma Unit Chamada CharPrinter que me da a flexibilidade de impressão em rede e também envia os dados para a fila de impressão da impressora assim deixando a aplicação livre sem ter que esperar que a impressora imprima pra destravar a aplicação. ( o que ocorre utilizando TextFile).
Olha o código ai da unit:
//---------------------------------------------------------------
// CharPrinter.pas - Tratamento de impressoras em modo caractere
//---------------------------------------------------------------
// Autor : Fernando Allen Marques de Oliveira
// Dezembro de 2000.
//
// TPrinterStream : classe derivada de TStream para enviar dados
// diretamente para o spool da impressora sele-
// cionada.
//
// TCharPrinter : Classe base para implementação de impressoras.
// não inclui personalização para nenhuma impres-
// sora específica, envia dados sem formatação.
//
// Modificado em 20/05/2003 - Compatibilização com diretivas padrão do Delphi 7
unit CharPrinter;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Printers, WinSpool;
type
{ Stream para enviar caracteres à impressora atual }
TPrinterStream = class (TStream)
private
fPrinter : TPrinter;
fHandle : THandle;
fTitle : String;
procedure CreateHandle;
procedure FreeHandle;
public
constructor Create (aPrinter: TPrinter; aTitle : String);
destructor Destroy; override;
function Write (const Buffer; Count : Longint): Longint; override;
property Handle : THandle read fHandle;
end;
TCharPrinter = class(TObject)
private
{ Private declarations }
fStream : TStream;
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
constructor Create; virtual;
destructor Destroy; override;
procedure OpenDoc (aTitle : String); virtual;
procedure SendData (aData : String);
procedure CloseDoc; virtual;
property PrintStream : TStream read fStream;
end;
// Definições para TAdvancedPrinter //
TprtLang = (lngEPFX,lngESCP2,lngHPPCL);
TprtFontSize = (pfs5cpi,pfs10cpi,pfs12cpi,pfs17cpi,pfs20cpi);
TprtTextStyle = (psBold,psItalic,psUnderline);
TprtTextStyles = set of TprtTextStyle;
TAdvancedPrinter = class (TCharPrinter)
private
fLang : TprtLang;
fFontSize : TprtFontSize;
fTextStyle : TprtTextStyles;
function GetLang : TprtLang;
procedure SetFontSize (size : TprtFontSize);
function GetFontSize : TprtFontSize;
procedure SetTextStyle (styles : TprtTextStyles);
function GetTextStyle : TprtTextStyles;
procedure UpdateStyle;
procedure Initialize;
function Convert (s : string) : string;
public
procedure CR;
procedure LF; overload;
procedure LF (Lines : integer); overload;
procedure CRLF;
procedure FF;
procedure Write (txt : string);
procedure WriteLeft (txt, fill : string; size : integer);
procedure WriteRight (txt, fill : string; size : integer);
procedure WriteCenter(txt, fill : string; size : integer);
procedure WriteRepeat(txt : string; quant : integer);
procedure SetLang (lang : TprtLang);
published
constructor Create; override;
procedure OpenDoc (aTitle : String); override;
property Language : TprtLang read GetLang write SetLang;
property FontSize : TprtFontSize read GetFontSize write SetFontSize;
property TextStyle : TprtTextStyles read GetTextStyle write SetTextStyle;
end;
procedure Register;
implementation
procedure Register;
begin
{ RegisterComponents(´AeF´, [TCharPrinter]);}
end;
{ =================== }
{ = TPrinterStream = }
{ =================== }
constructor TPrinterStream.Create (aPrinter : TPrinter; aTitle : String);
begin
inherited Create;
fPrinter := aPrinter;
fTitle := aTitle;
CreateHandle;
end;
destructor TPrinterStream.Destroy;
begin
FreeHandle;
inherited;
end;
procedure TPrinterStream.FreeHandle;
begin
if fHandle <> 0 then
begin
EndPagePrinter (fHandle);
EndDocPrinter (fHandle);
ClosePrinter (Handle);
fHandle := 0;
end;
end;
procedure TPrinterStream.CreateHandle;
type
DOC_INFO_1 = packed record
pDocName : PChar;
pOutputFile : PChar;
pDataType : PChar;
end;
var
aDevice,
aDriver,
aPort : array[0..255] of Char;
aMode : Cardinal;
DocInfo : DOC_INFO_1;
begin
DocInfo.pDocName := nil;
DocInfo.pOutputFile := nil;
DocInfo.pDataType := ´RAW´;
FreeHandle;
if fHandle = 0 then
begin
fPrinter.GetPrinter (aDevice, aDriver, aPort, aMode);
if OpenPrinter (aDevice, fHandle, nil)
then begin
DocInfo.pDocName := PChar(fTitle);
if StartDocPrinter (fHandle, 1, @DocInfo) = 0
then begin
ClosePrinter (fHandle);
fHandle := 0;
end else
if not StartPagePrinter (fHandle)
then begin
EndDocPrinter (fHandle);
ClosePrinter (fHandle);
fHandle := 0;
end;
end;
end;
end;
function TPrinterStream.Write (const Buffer; Count : Longint) : Longint;
var
Bytes : Cardinal;
begin
WritePrinter (Handle, @Buffer, Count, Bytes);
Result := Bytes;
end;
{ ================= }
{ = TCharPrinter = }
{ ================= }
constructor TCharPrinter.Create;
begin
inherited Create;
fStream := nil;
end;
destructor TCharPrinter.Destroy;
begin
if fStream <> nil
then fStream.Free;
inherited;
end;
procedure TCharPrinter.OpenDoc (aTitle : String);
begin
if fStream = nil
then fStream := TPrinterStream.Create (Printer, aTitle);
end;
procedure TCharPrinter.CloseDoc;
begin
if fStream <> nil
then begin
fStream.Free;
fStream := nil;
end;
end;
procedure TCharPrinter.SendData (aData : String);
var
Data : array[0..255] of char;
cnt : integer;
begin
for cnt := 0 to length(aData) - 1 do
Data[cnt] := aData[cnt+1];
fStream.Write (Data, length(aData));
end;
{ ===================== }
{ = TAdvancedPrinter = }
{ ===================== }
procedure TAdvancedPrinter.SetLang (lang : TprtLang);
begin
fLang := lang;
end;
function TAdvancedPrinter.GetLang : TprtLang;
begin
result := fLang;
end;
procedure TAdvancedPrinter.SetFontSize (size : TprtFontSize);
begin
fFontSize := size;
UpdateStyle;
end;
function TAdvancedPrinter.GetFontSize : TprtFontSize;
begin
result := fFontSize;
UpdateStyle;
end;
procedure TAdvancedPrinter.SetTextStyle (styles : TprtTextStyles);
begin
fTextStyle := styles;
UpdateStyle;
end;
function TAdvancedPrinter.GetTextStyle : TprtTextStyles;
begin
result := fTextStyle;
UpdateStyle;
end;
procedure TAdvancedPrinter.UpdateStyle;
var
cmd : string;
i : byte;
begin
cmd := ´´;
case fLang of
lngESCP2, lngEPFX : begin
i := 0;
Case fFontSize of
pfs5cpi : i := 32;
pfs10cpi : i := 0;
pfs12cpi : i := 1;
pfs17cpi : i := 4;
pfs20cpi : i := 5;
end;
if psBold in fTextStyle then i := i + 8;
if psItalic in fTextStyle then i := i + 64;
if psUnderline in fTextStyle then i := i + 128;
cmd := #27´!´+chr(i);
end;
lngHPPCL : begin
Case fFontSize of
pfs5cpi : cmd := 27´(s5H´;
pfs10cpi : cmd := 27´(s10H´;
pfs12cpi : cmd := 27´(s12H´;
pfs17cpi : cmd := 27´(s17H´;
pfs20cpi : cmd := 27´(s20H´;
end;
if psBold in fTextStyle
then cmd := cmd + 27´(s3B´
else cmd := cmd + 27´(s0B´;
if psItalic in fTextStyle
then cmd := cmd + 27´(s1S´
else cmd := cmd + 27´(s0S´;
if psUnderline in fTextStyle
then cmd := cmd + 27´&d0D´
else cmd := cmd + 27´&d@´;
end;
end;
SendData(cmd);
end;
procedure TAdvancedPrinter.Initialize;
begin
case fLang of
lngEPFX : SendData (27´@´27´2´27´P´18);
lngESCP2 : SendData (#27´@´27´O´27´2´27´C0´1127´!´0);
lngHPPCL : SendData (27´E´27´&l2A´27´&l0O´27´&l6D´27´(s4099T´27´(s0P´27´&k0S´27´(s0S´);
end;
end;
function TAdvancedPrinter.Convert (s : string) : string;
const
accent : string = ´ãàáäâèéëêìíïîõòóöôùúüûçÃÀÁÄÂÈÉËÊÌÍÏÎÕÒÓÖÔÙÚÜÛÇ´;
noaccent : string = ´aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC´;
var
i : integer;
begin
for i := 1 to length(accent) do
While Pos(accent[i],s) > 0 do s[Pos(accent[i],s)] := noaccent[i];
result := s;
end;
constructor TAdvancedPrinter.Create;
begin
inherited Create;
fLang := lngESCP2;
fFontSize := pfs10cpi;
fTextStyle := [];
end;
procedure TAdvancedPrinter.OpenDoc (aTitle : String);
begin
inherited OpenDoc (aTitle);
Initialize;
end;
procedure TAdvancedPrinter.CR;
begin
SendData (#13);
end;
procedure TAdvancedPrinter.LF;
begin
SendData (10);
end;
procedure TAdvancedPrinter.LF (Lines : integer);
begin
while lines > 0 do begin
SendData(10); dec(lines);
end;
end;
procedure TAdvancedPrinter.CRLF;
begin
SendData (1310);
end;
procedure TAdvancedPrinter.FF;
begin
SendData(12);
end;
procedure TAdvancedPrinter.Write (txt : string);
begin
txt := Convert (txt);
SendData (txt);
end;
procedure TAdvancedPrinter.WriteLeft (txt, fill : string; size : integer);
begin
txt := Convert(txt);
while Length(txt) < size do txt := txt + fill;
SendData (Copy(txt,1,size));
end;
procedure TAdvancedPrinter.WriteRight (txt, fill : string; size : integer);
begin
txt := Convert(txt);
while Length(txt) < size do txt := fill + txt;
SendData (Copy(txt,Length(txt)-size+1,size));
end;
procedure TAdvancedPrinter.WriteCenter(txt, fill : string; size : integer);
begin
txt := Convert(txt);
while Length(txt) < size do txt := fill + txt + fill;
SendData (Copy(txt,(Length(txt)-size) div 2 + 1,size));
end;
procedure TAdvancedPrinter.WriteRepeat(txt : string; quant : integer);
var
s : string;
begin
s := ´´;
txt := Convert(txt);
while quant > 0 do begin
s := s + txt;
dec(quant);
end;
SendData (s);
end;
end.
pra utilizar faz assim:
procedure TForm1.BitBtn1Click(Sender: TObject); var prn:TCharPrinter; ln : string = #13 + 10; begin prn := TCharPrinter.Create; Prn.OpenDoc(´Titulo do documento´); Prn.SendData(´LINHA UM E PULA PRA PRÓXIMA E VOLTA O CARRO DA IMPRESSORA´+ln); Prn.SendData(´LINHA DOIS E PULA PRA PRÓXIMA E VOLTA O CARRO DA IMPRESSORA´+ln); Prn.CloseDoc; end;
O caractere #13 serve para pular para a póxima linha
O caractere 10 serve para voltar o carro da impressora
Ps Lembrar de declarar a unit CharPrinter no uses do teu form.
Você pode utilizar uma impressora Genérico Somente Texto para fazer a impressão.
GOSTEI 0
Sergiokm
16/07/2007
Muito bom, nunca tinha visto algo semelhante! Sem querer abusar, como posso usar esta unit para imprimir em dupla altura? As mini impressoras tem uma fonte que ocupa 14x5 em vez de 7x5, normalmente se aciona por ESC M n (ESC/POS). Valeu!
GOSTEI 0
Vitor Alcantara
16/07/2007
sergiokm sinceramente eu não sei.
Só complementando a minha idéia você quando for chamar a rotina de impressão utilize um PrintDialog para que você possa escolher a impressora que vai imprimir se não ela irá enviar para a impressora padrão.
Só complementando a minha idéia você quando for chamar a rotina de impressão utilize um PrintDialog para que você possa escolher a impressora que vai imprimir se não ela irá enviar para a impressora padrão.
procedure TForm1.BitBtn1Click(Sender: TObject); var prn:TCharPrinter; ln : string = #13 + 10; begin if PrintDialog1.Execute then//***************************** Begin prn := TCharPrinter.Create; Prn.OpenDoc(´Titulo do documento´); Prn.SendData(´LINHA UM E PULA PRA PRÓXIMA E VOLTA O CARRO DA IMPRESSORA´+ln); Prn.SendData(´LINHA DOIS E PULA PRA PRÓXIMA E VOLTA O CARRO DA IMPRESSORA´+ln); Prn.CloseDoc; end; end;
GOSTEI 0
Objetivacreator
16/07/2007
Galera,
Venho aqui agradecer ao amigo vitoraraujo, pela disponibilidade e pela compreensão deixada por ela.
Ultimamente o crescimento do uso das mini impressoras tem proporcionado um ganho substancial ao desenvolvedores em delphi.
Há muito o que debater ainda, mas a união faz a força. Há mercado para todos, o crescimento de computadores esta melhor que antes. Segundo o siste olhardigital.com, até 2011 o crescimento será em torno de 1 bil nas vendas de computadores. Aquelas pequenas empresas, pequenas lojas de comércio em geral, vão colocar micros e com certeza as mini impressoras, com isto o aumento no desenvolvimento de novas aplicações comerciais.
Vamos continuar nesta aventura.
Desde já agradeço mais uma vez a todos que só olharam o comentário ou até mesmo tentou ajudar, como os que se dispuseram a ajudar com toda a comunidade.
Um forte abraço a todos e até mais...
Venho aqui agradecer ao amigo vitoraraujo, pela disponibilidade e pela compreensão deixada por ela.
Ultimamente o crescimento do uso das mini impressoras tem proporcionado um ganho substancial ao desenvolvedores em delphi.
Há muito o que debater ainda, mas a união faz a força. Há mercado para todos, o crescimento de computadores esta melhor que antes. Segundo o siste olhardigital.com, até 2011 o crescimento será em torno de 1 bil nas vendas de computadores. Aquelas pequenas empresas, pequenas lojas de comércio em geral, vão colocar micros e com certeza as mini impressoras, com isto o aumento no desenvolvimento de novas aplicações comerciais.
Vamos continuar nesta aventura.
Desde já agradeço mais uma vez a todos que só olharam o comentário ou até mesmo tentou ajudar, como os que se dispuseram a ajudar com toda a comunidade.
Um forte abraço a todos e até mais...
GOSTEI 0
Fabiano Góes
16/07/2007
Pessoal,
Estou desenvolvendo um sistema para um comercio onde vai precisar utilizar uma impressora fiscal, como a minha area de desenvolvimento era outra será a primeira vez que vou trabalhar com essas impressoras.
tenho uma dúvida:
para imprimir em impressoras fiscais posso fazer uma impressao direta e a propria impressora se encarrega da parte fiscal ou existe algumas normas para isso ???
Estou desenvolvendo um sistema para um comercio onde vai precisar utilizar uma impressora fiscal, como a minha area de desenvolvimento era outra será a primeira vez que vou trabalhar com essas impressoras.
tenho uma dúvida:
para imprimir em impressoras fiscais posso fazer uma impressao direta e a propria impressora se encarrega da parte fiscal ou existe algumas normas para isso ???
GOSTEI 0
Edilcimar
16/07/2007
Os fabricantes de impressoras fiscais fornecem dlls, então vc terá que enviar os comandos para a impressora de acordo com as normas do fabricante, então usar a dll de automação do source forge
GOSTEI 0
Vitor Alcantara
16/07/2007
Para impressão em impressora fiscal você pode fazer a impressão direta na porta sem a necessidade de DLLS, só que é um pouco complicado, pois cada impressora de modelos e marcas diferentes tem um conjunto especifico de comandos.
Mais existe um componente (muito bom por sinal) chamado ACBrECF que faz parte do projeto ACBr que está disponivel nesse endereço
[url]http://acbr.sourceforge.net[/url], vale a pena dar uma olhada pois já vem com um exemplo de cada componente do projeto.
Mais existe um componente (muito bom por sinal) chamado ACBrECF que faz parte do projeto ACBr que está disponivel nesse endereço
[url]http://acbr.sourceforge.net[/url], vale a pena dar uma olhada pois já vem com um exemplo de cada componente do projeto.
GOSTEI 0
Vitor Alcantara
16/07/2007
Ai segue um exemplo utilizando a clase TAdvancedprinter (classe que da mais variedade quanto a formatação do texto) da unit CharPrinter.
ex:
ex:
procedure TForm1.Button1Click(Sender: TObject); var prn : TAdvancedPrinter; begin if PrintDialog1.Execute then begin prn := TAdvancedPrinter.Create; prn.OpenDoc(´NOrmal´);//Imprime fonte normal prn.FontSize := pfs20cpi;//Troca fonte para tamanho 20 prn.WriteRight(´Normal´,´ ´,40);//Alinhado a direita sendo que a bobina tem 40 caracteres prn.Write(´Fonte 20cpi´); prn.CRLF;//Volta carro e pula linha prn.FontSize := pfs10cpi;//Troca fonte para tamanho 10 prn.Write(´Fonte 10cpi´); prn.CRLF; prn.FontSize := pfs5cpi;//Troca fonte para tamnho 5 prn.TextStyle := [psBold];//Coloca em negrito prn.Write(´Fonte 5cpi em negbrito´); prn.CRLF; prn.WriteRepeat(´#´,40);//Escreve prn.FF;//Salta página prn.CloseDoc; end; end;
GOSTEI 0
Dominioararangua
16/07/2007
Por acaso essa unit funciona pode imprimir em impressoras a jato de tinta usb...
se imprimir, será uma mão na roda...
Rodrigo
se imprimir, será uma mão na roda...
Rodrigo
GOSTEI 0
Vitor Alcantara
16/07/2007
Eu ja testei com impressora USB e não funcionou não, mais em impressoras jato de tinta (Hp deskjet 845c que eu utilizei nos testes) com porta paralela funcionou.
Mais se a for uma porta paralela e devera funcionar.
Mais se a for uma porta paralela e devera funcionar.
GOSTEI 0
Ronaldordj
16/07/2007
Caros colegas, estou com dificuldades pra começar a montar as rotinas para impressão na Mini Epson TM-U295, lendo as mensagens anteriores percebi que o Vitor domina bem esse assunto. Sendo assim pergunto a ele e aos demais colegas: Voces já fizeram alguma rotina para impressão de carimbo de Reconhecimento de Assinaturas de cartórios?
Att, Ronaldo
Att, Ronaldo
GOSTEI 0
Vitor Alcantara
16/07/2007
Não nunca fiz uma rotina pra esse caso.
Amigo você está querendo imprimir uma imagem direto pra impressora? Se for isso acho que talvez seria mais fácil você obter esse resultado utilizando a unit tPrinter.
Da uma olhada nesse tópico talvez ache o que está procurando.
https://www.devmedia.com.br/articles/viewcomp.asp?comp=2677&hl=
Sinto não poder ajudar mais pois pouco conheço sobre o objeto Printer.
Amigo você está querendo imprimir uma imagem direto pra impressora? Se for isso acho que talvez seria mais fácil você obter esse resultado utilizando a unit tPrinter.
Da uma olhada nesse tópico talvez ache o que está procurando.
https://www.devmedia.com.br/articles/viewcomp.asp?comp=2677&hl=
Sinto não poder ajudar mais pois pouco conheço sobre o objeto Printer.
GOSTEI 0
Sergiokm
16/07/2007
Tive uma pequena experiência com a TMU295 e não fui muito feliz. Mas o que descobri compartilho com vocês. Se servir para alguma coisa...
usando canvas:
var F: TextFile;
...
AssignPrn(F); // Canvas
Rewrite(F);
Printer.Canvas.Font.Name:=´FontB11´;
Writeln(F,´+´+StringOfChar(´-´,40)+´+´);
Printer.Canvas.Font.Name:=´FontB12´; // ativa dupla altura
WriteLn(F,´CARTORIO DO 1º OFICIO DE NOTAS´);
Printer.Canvas.Font.Name:=´FontB11´;
WriteLn(F,´Telefone´);
CloseFile(F);
...
Usando impressão direta na LPT1:
Comandos ESC/POS
...
AssignFile(F,´LPT1´); // Direto Lpt1
Rewrite(F);
Write(F,chr(27),chr(116),chr(3));
Writeln(F,#27331,chr(218)+StringOfChar(´-´,40)+chr(191));
WriteLn(F,273317,´CARTORIO DO 1º OFICIO DE NOTAS´); // ativa dupla altura
WriteLn(F,27331,´Telefone´);
CloseFile(F);
...
Tanto o nome das fontes como os códigos ASCII da tabela ESC/POS constam no manual da TM-U295. A tabela completa de codigo ESC/POS você acha pela net, não as tenho mais.
Usei estes comandos e desisti de usar esta impressora, não consegui fazer impressões confiáveis com ela. Tudo vai indo bem, e de repente, ela imprime fora de posição!
Se alguém souber uma maneira eficiente de usar esta impressora, também gostaria de saber.
usando canvas:
var F: TextFile;
...
AssignPrn(F); // Canvas
Rewrite(F);
Printer.Canvas.Font.Name:=´FontB11´;
Writeln(F,´+´+StringOfChar(´-´,40)+´+´);
Printer.Canvas.Font.Name:=´FontB12´; // ativa dupla altura
WriteLn(F,´CARTORIO DO 1º OFICIO DE NOTAS´);
Printer.Canvas.Font.Name:=´FontB11´;
WriteLn(F,´Telefone´);
CloseFile(F);
...
Usando impressão direta na LPT1:
Comandos ESC/POS
...
AssignFile(F,´LPT1´); // Direto Lpt1
Rewrite(F);
Write(F,chr(27),chr(116),chr(3));
Writeln(F,#27331,chr(218)+StringOfChar(´-´,40)+chr(191));
WriteLn(F,273317,´CARTORIO DO 1º OFICIO DE NOTAS´); // ativa dupla altura
WriteLn(F,27331,´Telefone´);
CloseFile(F);
...
Tanto o nome das fontes como os códigos ASCII da tabela ESC/POS constam no manual da TM-U295. A tabela completa de codigo ESC/POS você acha pela net, não as tenho mais.
Usei estes comandos e desisti de usar esta impressora, não consegui fazer impressões confiáveis com ela. Tudo vai indo bem, e de repente, ela imprime fora de posição!
Se alguém souber uma maneira eficiente de usar esta impressora, também gostaria de saber.
GOSTEI 0