Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Bom dia,

 

Estou utilizando o componente ACBrCHQ para Impressora Comum, porem não sei dizer se estou configurando ele corretamente, segue código:

 

         ACBrCHQ.Modelo  := chqImpressoraComum;

 

         ACBrCHQ.Porta      := '172.16.2.1';
 
         ACBrCHQ.Banco      := qryCheque.FieldByName('CDBANCO').AsString;
         ACBrCHQ.Cidade     := TiraAcento(qryCheque.FieldByName('DSCIDADE').AsString);
         ACBrCHQ.Favorecido := TiraAcento(qryCheque.FieldByName('DSFAVORECIDO').AsString);
         ACBrCHQ.Valor      := qryCheque.FieldByName ('VLLANC').AsFloat;
         ACBrCHQ.Data       := qryCheque.FieldByName('DTCHEQUE').AsDateTime;
 
         ACBrCHQ.ImprimirCheque;
 
A impressora que tenho que acessar esta em rede, no IP que coloquei na Porta.
 
Ao chamar a rotina ImprimirCheque, não ocorre nada, não aparece mensagem de erro e nem de sucesso.
 
Vocês poderiam me auxiliar por favor?
  • Fundadores
Postado

O Endereço da Porta está errado... O correto seria algo como:

 

"\\172.16.2.1\NomeDaImpressoraCompartilhada"

 

(lembrando que você deve ativar o compartilhamento dessa impressora antes)

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.

Postado

Obrigado pela resposta Daniel, 

 

Eu configurei como você informou, ficou assim:

 

ACBrCHQ.Porta      := '\\172.16.2.1\HP LaserJet P4515(Produção)';

 

Porém na hora de Imprimir o cheque retorna o erro "I/O Error 53", ao debugar cheguei ao fonte ACBrDevice na rotina EnviaStringArquivo, linha 926 que é o momento onde é feito um "AssignFile( ArqPrn, Porta );".

 

Ocorre um exception nessa linha.

 

Eu ainda não estou configurando certo, alguma idéia? 

Talvez o nome da impressora esta errado, Eu o peguei nas configurações de Dispositivos e Impressoras no painel de controle.

Postado

Boa Tarde, 

 

Desculpe a demora para responder.

 

Eu alterei o nome do compartilhamento e ficou assim:

 

ACBrCHQ.Porta      := '\\172.16.2.1\Comercial';

 

Porem ainda da erro só que agora é esse "'I/O error 50'".

 

Alguma idéia?

  • Fundadores
Postado

Não tenho ideia... mas pode ser a maneira que o Delphi tenta abrir o recurso...

 

por favor tente imprimir qualquer coisa, com esse aplicativo, que foi compilado em Lazarus

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.

Postado

Boa Tarde.

 

Desculpe a demora para retornar.

 

Eu fiz download do programa e configurei o Modelo para "ppTexto" e a porta para "\\172.16.2.1\Comercial", ocorre o seguinte erro:

 

"

Unable to open file "\\172.16.2.2\Comercial".
 
Press OK to ignore and risk data corruption.
Press Cancel to kill the program.
 

"

Postado

Bom dia,

 

As permissões de acesso a essa impressa estão todas liberadas, e foi testado com um usuário Administrador com acesso liberado em tudo.

 

Existe alguma configuração padrão para impressora comum neste programa que me passou?

Postado

Boa Tarde,

 

Desculpe a demora para responder.

 

Eu entrei no link enviado e segui os passos do Método um para mapear a porta da impressora, e funcionou.

Consegui fazer algumas impressões de teste utilizando o programa que me passou.

 

Porem quando vou utilizar o componente do ACBrCHQ ocorre o seguinte erro "The specified file was not found". 

 

O valor da porta:

ACBrCHQ.Porta      := 'LPT2';

 

Debugando, Ocorre um exception no unit ACBrDevice, método TACBrDevice.EnviaStringArquivo linha 931. 

 

Essa rotina foi chamada pelo método TACBrDevice.Ativar linha 378, que por sua vez foi chamada pelo método ImprimirCheque.

 

No método TACBrDevice.EnviaStringArquivo, é executado o seguinte trecho:

 

    AssignFile( ArqPrn, Porta ); 
    try
       if IsTXTFilePort and FileExists(Porta) then <------- Esse if esta estranho para mim, poderia me explicar melhor o que ele verifica exatamente?
          Append( ArqPrn )
       else
          Rewrite( ArqPrn ); <----- O Exception é disparado nesta linha
 
       while I <= Max do
       begin
          Write( ArqPrn, copy(AString, I, NBytes ) ) ;
          if fsSendBytesInterval > 0 then
             Sleep( fsSendBytesInterval ) ;
          I := I + NBytes ;
       end ;
 
       Flush( ArqPrn ) ;
    finally
       {$I-}
       {$IFNDEF FPC}System.{$ENDIF}CloseFile( ArqPrn ) ;
       {$I+}
    end ;
 

Eu não entendi direito essa parte, Eu sei que o erro ocorre porque a variavel ArqPrn não esta apontando para um arquivo existente, então onde Eu altero para que ela esteja correta?

 

Obrigado.

  • Fundadores
Postado

O Delphi não está conseguindo visualizar o mapeamento de portas do Windows...

 

No Inicio da Unit ACBrDevice.pas, existe uma diretiva que liga o uso de "Stream", ao invés de AssignFile

 

Tente Mudar:

 

{$IFDEF FPC}
 {$DEFINE Use_Stream}
{$ENDIF}
 

 

Para:

 

{$DEFINE Use_Stream}
 

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.

Postado

Boa Tarde

 

Eu fiz a alteração solicitada:

 

Mudei de:

{$IFDEF FPC}

 {$DEFINE Use_Stream}
{$ENDIF}
 

Para:

{$DEFINE Use_Stream}

 

E agora aparece o seguinte erro "Cannot create file "\\.\LPT2". Acesso negado"

Postado

Bom dia,

 

Eu verifiquei a questão de permissão de usuário e vi que Eu não tinha acesso a pasta \System32\spool\printers, liberei o acesso e agora consigo imprimir.

 

O estranho agora é que ele esta imprimindo um pagina para cada linha.

 

Por exemplo, o campo valor do cheque é R$30,00, isso é impresso em uma pagina, o valor por extenso "Trinta Reais" é impresso em outra pagina.

 

Isso é configuração de componente? ou tem alguma coisa no código que esta errado?

×
×
  • 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.