Jump to content

dev botao

ACBrPosPrinter com suporte a Impressão RAW


Daniel Simoes
  • Este tópico foi criado há 2889 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:

 

 

  • Like 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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

Edited by juliomazoni
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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

  • Like 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 to comment
Share on other sites

  • 1 month later...

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 to comment
Share on other 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 to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...
The popup will be closed in 10 seconds...