ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

imprimir direto via usb

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Automação Comercial
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
utlrasen.tato
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 11 de Janeiro de 2012
Mensagens: 112
Localização: jundiai-sp

MensagemEnviada: Seg Mar 03, 2014 8:26 am    Assunto: imprimir direto via usb Responder com Citação

bom dia amigos

estou precisando implementar no meu projeto a impressao direto via usb, devido alguns clientes nao conseguirem comprar impressoras serial ou paralela e só usb, gostaria que alguem pudesse me enviar um passa-a-passo de como colocar isso no meu projeto ou se alguem tiver ai uma rotina pronta de pudesse me arrumar para que eu possa finalizar esta parte

atualmente estou com impressoras elgin e epson via usb elas estao instaladas via usb no cliente mas nao consigo dispara da minha rotina de serial ou paralela
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Ghost_Rider
Colaborador
Colaborador


Registrado: Segunda-Feira, 6 de Outubro de 2003
Mensagens: 4437

MensagemEnviada: Seg Mar 03, 2014 8:42 am    Assunto: Responder com Citação

E qual é sua rotina amigo ??? o problema não esta na impressão, mas o modo que vc faz que não é compatível...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Seg Mar 03, 2014 5:33 pm    Assunto: Responder com Citação

para impressoras comuns use a unit printers é própria do delphi.

recomendo olhar o post
http://www.activedelphi.com.br/forum/viewtopic.php?t=85123&highlight=
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
utlrasen.tato
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 11 de Janeiro de 2012
Mensagens: 112
Localização: jundiai-sp

MensagemEnviada: Seg Mar 03, 2014 6:26 pm    Assunto: imprimir via usb Responder com Citação

strak2012 escreveu:
para impressoras comuns use a unit printers é própria do delphi.

recomendo olhar o post
http://www.activedelphi.com.br/forum/viewtopic.php?t=85123&highlight=

boa tarde amigo

estou precisando de imprimir direto na usb e fazer com que minha rotina busque a impressora usb padrao do windows hoje eu utilizo minha rotina assim:

Código:
    Dm_local.Ds_Config.open;
      impressora:=Dm_local.Ds_Config.fieldbyname('PORTACOMUNICAO').AsString ;
          AssignFile(F,impressora);
          Rewrite(F);
          Writeln(F,'');

          Writeln(F,texto);
{          Writeln(F,'N. '+frm_cx.bt_cupom.caption+ '    '+formatdatetime('DD/MM/YY',Date)+'    '+formatDatetime('HH:MM:SS',Time));}
          Writeln(F,'N. '+frm_cx.bt_cupom.caption+ '    '+formatdatetime('DD/MM/YY',Date));
          Writeln(F,'----------------------------------------');
close(f);
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
utlrasen.tato
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 11 de Janeiro de 2012
Mensagens: 112
Localização: jundiai-sp

MensagemEnviada: Seg Mar 03, 2014 6:32 pm    Assunto: imprimir via usb Responder com Citação

Ghost_Rider escreveu:
E qual é sua rotina amigo ??? o problema não esta na impressão, mas o modo que vc faz que não é compatível...



estou precisando de imprimir direto na usb e fazer com que minha rotina busque a impressora usb padrao do windows hoje eu utilizo minha rotina assim:

Código:
    Dm_local.Ds_Config.open;
      impressora:=Dm_local.Ds_Config.fieldbyname('PORTACOMUNICAO').AsString ;
          AssignFile(F,impressora);
          Rewrite(F);
          Writeln(F,'');

          Writeln(F,texto);
{          Writeln(F,'N. '+frm_cx.bt_cupom.caption+ '    '+formatdatetime('DD/MM/YY',Date)+'    '+formatDatetime('HH:MM:SS',Time));}
          Writeln(F,'N. '+frm_cx.bt_cupom.caption+ '    '+formatdatetime('DD/MM/YY',Date));
          Writeln(F,'----------------------------------------');
close(f);

eu ate achei alguem coisa na net mas esta dando erro é assim:

Código:
procedure TMeuPrint.AtualizaImp;
const
what: array[0..1] of string = (\'True\',\'False\');
var
Device, FName, Port : array[0..100] of Char;
DevMode : THandle;
begin
Printer.GetPrinter(Device, FName, Port, DevMode);
ImprDefault := StrPas(Port);
end;

e esta dando erro na linha PRINTER.GETPRINTER, lembrando que eu nao consegui fazer uma procedure e sim uma funcao sera que esta dando erro por isso!

me ajude, pois o cliente esta bravo com o atraso desta rotina
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Seg Mar 03, 2014 8:54 pm    Assunto: Responder com Citação

segue como pode fazer

Código:

uses printers; // necessario

{variáveis globais}
var
  aPrinter: tprinter; // necessario
  x, y: integer; // necessario

procedure ExibirImpressoras(list: tstrings); // exibe lista de imprassora do windows
begin
  list.Text := Printer.printers.Text;
end;

procedure SelecionarImpresora(Nome: String); // seleciona uma impressora pelo nome
var
  Device, Driver, Port: array [0 .. 255] of char;
  hDMode: THandle;
  i: integer;
  tmpnome: string;
begin
  Printer.PrinterIndex := -1;
  if aPrinter = nil then
    aPrinter := tprinter.Create;
  for i := 0 to (Printer.printers.Count - 1) do
  begin
    tmpnome := Printer.printers[i];
    if tmpnome = Nome then
    begin
      aPrinter.PrinterIndex := i;
      aPrinter.GetPrinter(Device, Driver, Port, hDMode);
    end;
  end;
end;

procedure IniciarImpresao(x, y: integer; impressora: string); // inicia a impresora
begin
  SelecionarImpresora(impressora);
  Printer.BeginDoc;
end;

procedure ImprimirLinha(linha: string); // imprime uma unica linha
begin
  inc(y, Printer.Canvas.TextHeight('W'));
  Printer.Canvas.TextOut(x, y, linha);
end;

procedure FinalizarImpresao; // finaliza a impressão
begin
  Printer.EndDoc;
end;


dos exemplo de uso
Código:

procedure TForm1.Button1Click(Sender: TObject);
begin
  IniciarImpresao(10, 10, 'HP PSC 1500 series');
  ImprimirLinha('outros texto');
  ImprimirLinha('N.  ' + inttostr(3333) + ' ' + formatdatetime('DD/MM/YY', Date));
  ImprimirLinha('----------------------------------------');
  FinalizarImpresao;
end;


// HP PSC 1500 series é uma impressora usb 10 é margem esquerda, e 10 é margem superior.

veja se isso te ajuda.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9099
Localização: Sinop-MT

MensagemEnviada: Qui Mar 06, 2014 9:45 am    Assunto: Responder com Citação

qual o tipo da impressora? eu uso o Fastreport, e da pra fazer a impressao direta na impressora Default, sem preview. funciona em qq impressora
_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
utlrasen.tato
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 11 de Janeiro de 2012
Mensagens: 112
Localização: jundiai-sp

MensagemEnviada: Dom Mar 09, 2014 11:04 pm    Assunto: imprimir via usb Responder com Citação

joemil escreveu:
qual o tipo da impressora? eu uso o Fastreport, e da pra fazer a impressao direta na impressora Default, sem preview. funciona em qq impressora


eu quero imprimir em qualquer impressora de cupom nao fiscal ou fiscal de 40 colunas direto via usb, ou seja, eu instalaria a impressora e entao minha rotina pegaria a impressora padrao do windows e dispararia pra ela, tem como!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
utlrasen.tato
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 11 de Janeiro de 2012
Mensagens: 112
Localização: jundiai-sp

MensagemEnviada: Dom Mar 09, 2014 11:06 pm    Assunto: imprimir via usb Responder com Citação

strak2012 escreveu:
segue como pode fazer

Código:

uses printers; // necessario

{variáveis globais}
var
  aPrinter: tprinter; // necessario
  x, y: integer; // necessario

procedure ExibirImpressoras(list: tstrings); // exibe lista de imprassora do windows
begin
  list.Text := Printer.printers.Text;
end;

procedure SelecionarImpresora(Nome: String); // seleciona uma impressora pelo nome
var
  Device, Driver, Port: array [0 .. 255] of char;
  hDMode: THandle;
  i: integer;
  tmpnome: string;
begin
  Printer.PrinterIndex := -1;
  if aPrinter = nil then
    aPrinter := tprinter.Create;
  for i := 0 to (Printer.printers.Count - 1) do
  begin
    tmpnome := Printer.printers[i];
    if tmpnome = Nome then
    begin
      aPrinter.PrinterIndex := i;
      aPrinter.GetPrinter(Device, Driver, Port, hDMode);
    end;
  end;
end;

procedure IniciarImpresao(x, y: integer; impressora: string); // inicia a impresora
begin
  SelecionarImpresora(impressora);
  Printer.BeginDoc;
end;

procedure ImprimirLinha(linha: string); // imprime uma unica linha
begin
  inc(y, Printer.Canvas.TextHeight('W'));
  Printer.Canvas.TextOut(x, y, linha);
end;

procedure FinalizarImpresao; // finaliza a impressão
begin
  Printer.EndDoc;
end;


dos exemplo de uso
Código:

procedure TForm1.Button1Click(Sender: TObject);
begin
  IniciarImpresao(10, 10, 'HP PSC 1500 series');
  ImprimirLinha('outros texto');
  ImprimirLinha('N.  ' + inttostr(3333) + ' ' + formatdatetime('DD/MM/YY', Date));
  ImprimirLinha('----------------------------------------');
  FinalizarImpresao;
end;


// HP PSC 1500 series é uma impressora usb 10 é margem esquerda, e 10 é margem superior.

veja se isso te ajuda.


amigo voce nao tem ai uma mais facil de enviar direto para impressora via usb sem ter que definir tamanhos e coisas mais !
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Qua Mar 12, 2014 11:09 pm    Assunto: Responder com Citação

Nao entedi a questao, contudo e possivel imprimir direto para usb desde que ela tenha um drive que realize a simulacao de uma porta COM serial. Tive certa vez um dispositivo usb que quando instalado o drive do mesmo o windows ganhava uma porta COM3 virtual, era atraves desta porta COM3 que eu me comunicava com este tal dispositivo.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Automação Comercial Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB