Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

pessoal, 

alguem ja teve este "problema"!

impressao na bematech 4200th com portal serial virtual, 

reproduzindo teste com demo posprinter: retirar o papel da impressora, ativar a impressora, mandar o comando imprimir. 

ele nao retorna erro algum! quando recoloca o papel, a impressora simplesmente imprime!

eh isto msm?

obrigado

Gabriel Rodrigues Da Costa Neto

Postado
17 minutos atrás, Juliomar Marchetti disse:

Seu problema não é o mesmo desse outro tópico em que já está em andamento?

 

nao juliomar, esse outro problema ai, era o seguinte, eu estava tratando quando perdia conexao com a impressora, tipo no meio da impressao eu desligava ela, quando o ACBR tentava retomar a impressao ele dava erro de acesso negado por ela ter um "delay" depois que o windows reconhece, dai o componente tentava enviar outro comando enquanto o windows ainda estava "ativando" a porta, dai um sleep resolveu!

 

esse "problema" eu so removo o papel e mando o comando imprimir, ela nao da erro nenhum, recolocando o papel a impressora imprime normal!

nao sei se é comportamento da impressora ou no acbr, deu pra entendeu + ou -?

  • Curtir 1

Gabriel Rodrigues Da Costa Neto

Postado
1 minuto atrás, Juliomar Marchetti disse:

Entendi sim!

não tenho a impressora pra lhe dizer !

mas acredito que deveria ter retornando a exceção!

o bom mesmo é habilitar o log e tentar ver se o erro está vindo para o componente mas ele não está disparando.

estranho é que, no demo o lerstatus esta funcionando, retirei o papel mandei lerstatus, ele retonar estes status: stPoucoPapel, stSemPapel, stOffLine, 

Gabriel Rodrigues Da Costa Neto

  • Moderadores
Postado
19 minutos atrás, gabriellc disse:

estranho é que, no demo o lerstatus esta funcionando, retirei o papel mandei lerstatus, ele retonar estes status: stPoucoPapel, stSemPapel, stOffLine, 

Hum temos um ponto de partida!

confere o que foi programado de eventos e também as configurações do componente em relação ao seu sistema.

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado (editado)
2 minutos atrás, Juliomar Marchetti disse:

Hum temos um ponto de partida!

confere o que foi programado de eventos e também as configurações do componente em relação ao seu sistema.

estou fazendo os testes no demo do acbrposprinter, sempre testo primeiro no demo, para depois implementar no meu sistema!, 

o demo esta sem modificaçoes! do mesmo modo que o trunk baixou!

unica diferenca é que habilitei o controleporta!

Editado por gabriellc

Gabriel Rodrigues Da Costa Neto

Postado
1 hora atrás, Juliomar Marchetti disse:

Hum temos um ponto de partida!

confere o que foi programado de eventos e também as configurações do componente em relação ao seu sistema.

acho q resolvi juliomar, vou enviar os pas, para que voces analisem

como fiz nas pressas para fazer meus testes, o codigo nao ficou muito limpo, mais da pra voces melhorarem se acharem nescessario.

modifiquei esta funcao :

function TACBrPosPrinter.LerStatusImpressora: TACBrPosPrinterStatus;
var
  OldAtivo: Boolean;
begin
  Result := [];

  OldAtivo := Ativo;
  try
    Ativo := True;

    if not (FDevice.IsSerialPort or FDevice.IsTCPPort) then
      Result := Result + [stNaoSerial];

    if Result = [] then
    begin
      FPosPrinterClass.LerStatus( Result );
      if stSemPapel in Result then
          raise Exception.Create(ACBrStr(cACBrDeviceEnviaStrFailCount));
      if stPoucoPapel in Result then
          raise Exception.Create(ACBrStr(cACBrDeviceEnviaStrFailCount));
      if stErro in Result then
          raise Exception.Create(ACBrStr(cACBrDeviceEnviaStrFailCount));
      if stTampaAberta in Result then
          raise Exception.Create(ACBrStr(cACBrDeviceEnviaStrFailCount));

      if (stGavetaAberta in Result) and ConfigGaveta.SinalInvertido then
        Result := Result - [stGavetaAberta];
    end;
  finally
    Ativo := OldAtivo;
  end;
end;

 

e esta: 

procedure TACBrPosPrinter.EnviarStringDevice(AString: AnsiString);
var
  CmdInit: AnsiString;
  Tratado:boolean;
begin
  if AString = '' then
    exit;

  AtivarPorta;
  LerStatusImpressora;

  if not FInicializada then
  begin
    CmdInit := FPosPrinterClass.ComandoInicializa;
    FInicializada := (pos( CmdInit, AString ) > 0);

    if (not FInicializada) and (AString <> FPosPrinterClass.Cmd.Zera) then
    begin
      GravarLog('EnviarStringDevice - Inicializando: '+CmdInit, True);
      AString := CmdInit + AString;
      FInicializada := True;
    end;
  end;

  Tratado := False;
  if Assigned(FOnEnviarStringDevice) then
     FOnEnviarStringDevice(AString, Tratado);

  try
    if not Tratado then
    begin
      GravarLog('EnviarStringDevice( ' + AString + ')', True);
      FDevice.EnviaString(AString);
    end
    else
      GravarLog('OnEnviarStringDevice( ' + AString + ')', True);
  finally
    if ControlePorta then
      DesativarPorta;
  end;

ACBrPosPrinter.pas

Gabriel Rodrigues Da Costa Neto

Postado (editado)

corrigindo tirei o exception de poucopapel, estava atrapalhando, e adicionei o exception para offline

      if stSemPapel in Result then
          raise Exception.Create(ACBrStr(cACBrDeviceEnviaStrFailCount));
      if stErro in Result then
          raise Exception.Create(ACBrStr(cACBrDeviceEnviaStrFailCount));
      if stTampaAberta in Result then
          raise Exception.Create(ACBrStr(cACBrDeviceEnviaStrFailCount));
      if stOffLine in Result then
          raise Exception.Create(ACBrStr(cACBrDeviceEnviaStrFailCount));

ACBrPosPrinter.pas

Editado por gabriellc

Gabriel Rodrigues Da Costa Neto

  • Este tópico foi criado há 2727 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...