Imprimir em USB
Eu tenho essa pequena rotina para emitir etiqueta em uma impressora matricial ligada a uma porta LPT1. Agora eu troquei de computador que não possui essa porta, ele só tem portas USB. Eu tenho um cabo que liga na impressora matricial e com entrada no computador como USB. Como eu faço para imprimir? Eu troquei o AssignFile para (F,'USB'), mas não imprimiu. Será que está faltando mais alguma coisa?
procedure Tfrmfazetiqueta.SpeedButton2Click(Sender: TObject);
var
F : TextFile;
i : integer;
begin
telateste4.Visible:=false;
tbetiqueta4.open;
tbetiqueta4.Filter:='impresso=''N'''+' or impresso=''n''';
tbetiqueta4.Filtered:=true;
AssignFile(F,'LPT1'); Rewrite(F);
if Epson4.Checked = true then // LX 300
Writeln(F,#27#15#27#48#27#77) // Epson ok
else
Writeln(F,#27#15#27#48#27#77);
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'');
if Application.MessageBox('Pronto para emitir etiqueta','Atenção',mb_yesno)=idyes then begin
while not tbetiqueta4.eof do begin
i:=1;
while i <= tbetiqueta4['quantidade'] do begin
Writeln(F,tbetiqueta4.fieldbyname('linha1').asstring);
Writeln(F,tbetiqueta4.fieldbyname('linha2').asstring);
Writeln(F,tbetiqueta4.fieldbyname('linha3').asstring);
Writeln(F,tbetiqueta4.fieldbyname('linha4').asstring);
Writeln(F,tbetiqueta4.fieldbyname('linha5').asstring);
Writeln(F,tbetiqueta4.fieldbyname('linha6').asstring);
Writeln(F,tbetiqueta4.fieldbyname('linha7').asstring);
Writeln(F,tbetiqueta4.fieldbyname('linha8').asstring);
Writeln(F,tbetiqueta4.fieldbyname('linha9').asstring);
Writeln(F,tbetiqueta4.fieldbyname('rodape1').asstring);
Writeln(F,tbetiqueta4.fieldbyname('rodape2').asstring);
Writeln(F,'');
i:=i+1;
end;
tbetiqueta4.edit;
tbetiqueta4['impresso']:='S';
tbetiqueta4.post;
end;
tbetiqueta4.filtered:=false;
tbetiqueta4.close;
edit20.Text:='';
edit21.Text:='';
showmessage('Final de Relatório.');
Rima4.Checked:=false;
Epson4.Checked:=false;
btincluir4.setfocus;
end;
CloseFile(F);
end;
var
F : TextFile;
i : integer;
begin
telateste4.Visible:=false;
tbetiqueta4.open;
tbetiqueta4.Filter:='impresso=''N'''+' or impresso=''n''';
tbetiqueta4.Filtered:=true;
AssignFile(F,'LPT1'); Rewrite(F);
if Epson4.Checked = true then // LX 300
Writeln(F,#27#15#27#48#27#77) // Epson ok
else
Writeln(F,#27#15#27#48#27#77);
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'***********************************************************');
Writeln(F,'');
if Application.MessageBox('Pronto para emitir etiqueta','Atenção',mb_yesno)=idyes then begin
while not tbetiqueta4.eof do begin
i:=1;
while i <= tbetiqueta4['quantidade'] do begin
Writeln(F,tbetiqueta4.fieldbyname('linha1').asstring);
Writeln(F,tbetiqueta4.fieldbyname('linha2').asstring);
Writeln(F,tbetiqueta4.fieldbyname('linha3').asstring);
Writeln(F,tbetiqueta4.fieldbyname('linha4').asstring);
Writeln(F,tbetiqueta4.fieldbyname('linha5').asstring);
Writeln(F,tbetiqueta4.fieldbyname('linha6').asstring);
Writeln(F,tbetiqueta4.fieldbyname('linha7').asstring);
Writeln(F,tbetiqueta4.fieldbyname('linha8').asstring);
Writeln(F,tbetiqueta4.fieldbyname('linha9').asstring);
Writeln(F,tbetiqueta4.fieldbyname('rodape1').asstring);
Writeln(F,tbetiqueta4.fieldbyname('rodape2').asstring);
Writeln(F,'');
i:=i+1;
end;
tbetiqueta4.edit;
tbetiqueta4['impresso']:='S';
tbetiqueta4.post;
end;
tbetiqueta4.filtered:=false;
tbetiqueta4.close;
edit20.Text:='';
edit21.Text:='';
showmessage('Final de Relatório.');
Rima4.Checked:=false;
Epson4.Checked:=false;
btincluir4.setfocus;
end;
CloseFile(F);
end;
Francisco Assis
Curtidas 0
Respostas
Carlos Mazzi
11/05/2010
Olha antigamente agente aqui na empresa, via os programadores "enganando" a impressora, ou o windows, como quiser, para fazer algo do tipo... Mas como eu nao me lembrava , procurei na Internet e achei isso:
"Para Imprimir em modo caracter usando uma porta USB vc deve digamos enganar o computador, esta dica serve apenas para computadores na rede."
No caso de configurar a impressão na LPT1 se usa o seguinte comando:
"AssignFile(Imp, 'LPT1');"
porém para a porta USB se vc usar o comando:
"AssignFile(Imp, 'USB001');"
não vai resolver, então vc deve fazer o seguinte:
no prompt do dos dever digitar o seguinte comando:
"NET USE LPT1 \NOME COMPUTADORNOME IMPRESSORA COMPARTILHADA /YES" lembrando que a impressora deve estar compartilhada na rede mesmo sendo do seu próprio computador.
Desta forma no delphi vc deve deixar o comando:
"AssignFile(Imp, 'LPT1');"
Se vc já está usando a porta LPT1 para outra impressora é só trocar a porta LPT1 para LPT2.
Tenta ai, senao conseguir.. dá um tok.
No caso de configurar a impressão na LPT1 se usa o seguinte comando:
"AssignFile(Imp, 'LPT1');"
porém para a porta USB se vc usar o comando:
"AssignFile(Imp, 'USB001');"
não vai resolver, então vc deve fazer o seguinte:
no prompt do dos dever digitar o seguinte comando:
"NET USE LPT1 \NOME COMPUTADORNOME IMPRESSORA COMPARTILHADA /YES" lembrando que a impressora deve estar compartilhada na rede mesmo sendo do seu próprio computador.
Desta forma no delphi vc deve deixar o comando:
"AssignFile(Imp, 'LPT1');"
Se vc já está usando a porta LPT1 para outra impressora é só trocar a porta LPT1 para LPT2.
Tenta ai, senao conseguir.. dá um tok.
GOSTEI 0
Francisco Assis
11/05/2010
Valeu Carlos, vou tentar e logo eu informo se funcinou ou não. Obg!
GOSTEI 0
Francisco Assis
11/05/2010
Funcionou Carlos.
GOSTEI 0