Ir para conteúdo
  • Cadastre-se

dev botao

ACBrPosPrinter com suporte a Impressão RAW


  • Este tópico foi criado há 2695 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Fundadores

Olá pessoal,

Acabo de enviar para o SVN, modificações em ACBrDevice, para permitir que os componentes que fazem uso dele, possam Imprimir em modo "Raw", usando as Impressoras instaladas no Sistema Operacional.

Isso na prática, permite definir ACBrPosPrinter.Porta como o exemplo abaixo...
Exemplo:
Supondo que no Sistema Operacional, exista uma impressora instalada com o nome "SWEDA SI-300S"... então poderíamos imprimir na mesma usando.

 ACBrPosPrinter1.Porta := 'SWEDA SI-300S';
ou  
 ACBrPosPrinter1.Porta := 'RAW:SWEDA SI-300S';  // O Prefixo "RAW:", ajuda o ACBrDevice a detectar o tipo de porta

Com isso o ACBrPosPrinter irá enviar sua saída contendo comandos "EscPos", diretamente para a porta da Impressora (modo Raw), usando o Driver da mesma.

A principal vantagem desse novo método, é permitir um melhor suporte a Impressoras USB e cujos drivers, não criam uma COM virtual..

Lembrando que a melhor maneira de se comunicar com uma impressora PosPrinter é usando portas Seriais... pois este é o único modo de lermos os Status da Impressora, suportado pelo "ACBrPosPrinter".

Também fique atento ao fato, de que isso NÃO significa, que você poderá usar o PosPrinter em qualquer Impressora que não suporte EscPos... como por exemplo, uma impressora Lazer ou uma impressora que crie PDFs...

O ACBrPosPrinter, apenas transforma as tags de impressão, em comandos EscPos. É a impressora EscPos, quem faz a "mágica" de transformar os comandos EscPos em QRCode, BarCode, etc.... Ou seja, se a impressora destino, não compreender "EscPos", ela apenas imprimirá lixo, quando receber os comandos...

Segue abaixo o "Change-Log.txt"

Citar

Data: 02/10/2016
-- ACBrDevice --
[+] Adicionado o suporte a portas "RAW", permitindo usar o "Nome da Impressora",
    do sistema operacional, na definição da "Porta"  Exemplo:
    "SWEDA SI-300S"  ou  "RAW:SWEDA SI-300S"
    Use "*" para imprimir na impressora Default
[+] Nova sintaxe para atribuição de portas do tipo "Arquivo". Exemplo:
    "C:\TEMP\saida.prn"  ou  "FILE:C:\TEMP\saida.prn"
[+] Adicionada nova propriedade "DeviceType: TACBrDeviceType", sendo que
    TACBrDeviceType = (dtFile, dtSerial, dtTCP, dtRawPrinter, dtHook)
    Essa propriedade é detectada automaticamente, na atribuição da propriedade
    "Porta", mas pode ser atribuida posteriormente, caso a detecção automática
    não esteja correta.

-- ACBrPosPrinter --
[-] Ajuste para ignoarar as tags '</corte_parcial> e </corte_total> quanto
    propriedade "CortaPapel" for False.
[-] Correção na exibição de mensagens de erro com acentuação.
[*] Ajuste para não fechar a porta da impressora, enquanto a mesma ainda estiver
    ocupada.
    (por: DSA)  

 

 

Atualizei o Demo do PosPrinter (Lazarus e Delphi), para melhor demonstrar e testar o suporte a portas "RAW"

O executável já compilado, pode ser baixado em:

 

 

  • Curtir 7
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

bom dia,

atualizei os fontes fui instalar e aconteceu este erro

"D:\Componentes\DelphiXE5\ACBR\Fontes\ACBrSerial\ACBrDevice.pas(846) Error: E2003 Undeclared identifier: 'cACBrDeviceSetTypeException'
D:\Componentes\DelphiXE5\ACBR\Fontes\ACBrSerial\ACBrDevice.pas(1231) Error: E2003 Undeclared identifier: 'cACBrDeviceSemImpressoraPadrao'
D:\Componentes\DelphiXE5\ACBR\Fontes\ACBrSerial\ACBrDevice.pas(1239) Error: E2003 Undeclared identifier: 'cACBrDeviceImpressoraNaoEncontrada'
D:\Componentes\DelphiXE5\ACBR\Fontes\ACBrSerial\ACBrDevice.pas(1527) Error: E2003 Undeclared identifier: 'cACBrDeviceImpressoraNaoEncontrada'
D:\Componentes\DelphiXE5\ACBR\Fontes\ACBrSerial\ACBrBAL.pas(2057) Fatal: F2063 Could not compile used unit 'ACBrDevice.pas'
Compilation failure
Erro ao compilar o pacote "ACBr_Serial.dpk"."

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Realmente ficou faltando enviar as modificações de ACBrConts.pas... por favor atualize e teste novamente

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Estou tendo problemas, com essa atualização, por exemplo eu utilizo as impressoras virtuais com o ACBrECF por causa do pafecf, eu passo para a porta do ACBrECF uma porta qualquer tipo NFCe no formato txt, mas agora com essa nova propriedade ela não deixa o sistema entrar mais dizendo Impressora não encontrada. 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

@Daniel Simoes

Fiz alguns testes e consegui identificar 02 probleminha nessa atualização do modo RAW.

1 - Erro na impressão usando porta paralela.

Apresentada erro na impressão pois está selecionado modo RAW e não dtFile como deveria.

Fiz um ajuste para selecionar dtFile quando for porta paralela.

2 - Não chega ser um erro mas não localiza a impressora quando ela está na rede.

Fiz o ajuste para permitir identificar nome da impressora em rede em modo RAW.

Segue anexo.

ACBrDevice.pas

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Obrigado @Waldir Paim, correções enviadas para o SVN...
 

Citar

 

-- ACBrPosPrinter --
[*] Removido detecção de porta aberta de "TACBrPosPrinter.DesativarPorta", que
    passou para TACBrDevice   (por: DSA)

-- ACBrDevice --
[-] Método: "DeduzirTipoPorta". Correção na detecção do tipo deporta Paralela
    (LPT, /dev/lp)  (Por: Waldir Paim)
[*] Método "Desativar". Ajuste para não fechar a porta Serial, enquanto a mesma
    ainda estiver Ativa e ocupada. (por: DSA)
[-] Método: "GetPrinterRawIndex". Correção para detecção do Nome da Impressora
    compartilhada e remoção de Hint (Por: Waldir Paim)
[*] Método "EnviaStringRaw", remoção de Warning (Por: Waldir Paim)

 

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Bom dia!

Atualizei o componente depois das correções mas ainda continuo com problema na porta lpt1, agora começou a mostrar erro de I/O, 

voltei a versão e voltou a funcionar.

Utilizando com o componente acbretq e impressora argox.

att,

Júlio

Londrina-Pr

Editado por juliomazoni
Link para o comentário
Compartilhar em outros sites

  • Fundadores

No momento, não tenho nenhum dispositivo que suporte Portas paralelas, para um teste real...

Sugiro comparar os fontes (antes e depois) e debugar, para tentar a nos ajudar na correção do problema...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Daniel Simoes disse:

No momento, não tenho nenhum dispositivo que suporte Portas paralelas, para um teste real...

Sugiro comparar os fontes (antes e depois) e debugar, para tentar a nos ajudar na correção do problema...

Esse também é o meu problema, vou configurar um ambiente de desenvolvimento que tenha porta paralela.

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Obrigado mais uma vez Waldir,

Acabei de enviar para  o SVN, modificações baseadas em sua sugestão...

Achei melhor introduzir um novo tipo em "TACBrDeviceType", dtParallel

  • Curtir 3
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Boa noite, estou usando o componente AcBrPosprinter e não está localizando uma impressora compartilhada em outro PC. Dá a seguinte mensagem: Impressora não encontrada. Estou usando o PosPrinterTeste e também está dando o mesmo problema. O AcbrSATExtratoFortes também não localiza a impressora em rede. Já o ACBrNFeDANFCeFortes encontra e imprime normalmente.

O que pode ser? 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

2.2 - Permaneça no assunto - Quando tiver uma dúvida diferente do assunto no tópico, poste em novo tópico. Não use algo equivalente a "aproveitando o gancho... [dúvida não relacionada com o tópico aqui]". Favor leia as regras do fórum.

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2695 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...