Ir para conteúdo
  • Cadastre-se

moacirg

Membros
  • Total de ítens

    51
  • Registro em

  • Última visita

Posts postados por moacirg

  1. Boa noite, tenho uma duvida sobre a Propriedade Corta Papel contido no componente POSPRINTER.

    Teria como essa propriedade cortar qualquer impressão feita pela impressora ?? Assim não preciso me preocupar com certos controles de corte.

    Percebo que ela corta automático apenas impressão de cupom SAT.

    Obrigado

  2. Galera no Forum se matando com a Daruma Dr 800. Antes tivesse ficado apenas na DR 700 que rodava que era uma beleza e nunca dava esses paus.

    Eu trabalho com a DR 800 tmb no seu SW de Automação e cada cliente é uma Aventura.

    Se contar pra vcs o que eu fiz na Classe Synaser.pas pra resolver esses erros da Daruma, acho que serei Expulso do Forum, mas vamos lá.

    No meu caso, a Daruma retornava um Erro de Time Out 9997 causado pela ExceptCheck do Synaser.pas toda vez que  : Controle da porta estava True  e Fazia uma impressão, Acionava a Guilhotina e logo em seguida mandava outra impressão.

    Tentei dar Intervalos de Bytes de toda forma e não foi, unica maneira que consegui foi colocando Controla da porta = false e alterando o Synaser.pas da seguinte forma.

    APENAS quando rodo minha aplicação com a Daruma Dr 800,  eu seto a Flag para FALSE e não passa pela Procedure ExceptCheck.

    Me desculpem a ignorancia, mas a unica forma que consegui foi assim.

    procedure TBlockSerial.ExceptCheck;
    var
      e: ESynaSerError;
      s: string;
      ini:Tinifile;
    begin

        ini := TIniFile.Create(ExtractFilePath(Application.exename)  + 'conexao_sat.ini');
        if ini.ValueExists('extrato', 'fl_except_check_pos_printer') = false then
        ini.WriteBool('extrato', 'fl_except_check_pos_printer', true);

        if ini.ReadBool ('extrato', 'fl_except_check_pos_printer', false) = true then
         begin
                if FRaiseExcept and (FLastError <> sOK) then
                begin
                  s := GetErrorDesc(FLastError);
                  e := ESynaSerError.CreateFmt('Communication error %d: %s', [FLastError, s]);
                  e.ErrorCode := FLastError;
                  e.ErrorMessage := s;
                  raise e;
                end;
         end;
        ini.free;
    end;

    A Daruma DR 800 retorna Erro sempre que é enviado impressões seguidas acionando Guilhotina sem que ela tenha terminado o trabalho anterior, já outras marcas como Elgin, Bematech isso não acontece. Pelo menos comigo foi assim.

  3. Em 11/12/2016 at 01:51, Renan Francisco da Silva disse:

    Bom dia,

    Tivemos problema semelhante ao seu, antes a gente armazenava os valores capturados pela balança e depois multiplicávamos pelo valor na hora de gerar o xml, o problema era que era enviado ao sat valores com muitas casas decimais, que ocorria o nosso software chegava a um total e o sat chegava a outro....

    Uma solução que encontramos foi usar o RountABNT no totais antes de salvar e enviar ao sat, pelo menos o sistema e o sat ficam com os mesmos totais.

    Showwww !!!

    Já achei o Função e vou testar.

    Muito obrigado pela dica.

    Abraço.

    Atualizando ---> 20/12/2016
    Rodei o preenchimento do SAT com ROUNDABNT e coloquei em produção, 4 PDV´s.
    Não tive mais o problema durante 1 semana. Deve ter resolvido.
    Apenas dando retorno sobre o tópico pra galera saber o desfecho da historia.

    Grato pela colaboração.

    • Curtir 1
  4. Entendi e imaginava isso.

    Mas aconteceu aqui no meu PDV em produção esse caso. Em que o sistema somou R$ 63,67 mas o SAT estava em 63,68.

    Como há vários produtos de peso em balança, imagino que pode ser algo referente ao arredondamento.

    Vou continuar analisando.

    Obrigado

  5. Boa tarde galera,

    Procurei e não encontrei nenhum tópico sobre esse assunto, então vamos lá.

    Nas impressoras fiscais haviam um comando na DLL que retornava o total do cupom. Minha pergunta é a seguinte, depois que eu preencher o componente SAT com os itens, há esse comando de retorno ?

    Pra saber o valor em memoria ?
    Pergunto isso porque as vezes acontece quebras nos centavos no uso de balanças e acaba retornando que o valor pago difere do total do cupom.

    Aguardo respostas, sugestões.......

  6. 2 horas atrás, Robson Sousa disse:

    Amigo, no caso do controla porta ativo quando faz a impressão você não executa os comandos Device.Ativar/Device.Desativar, é isso? E no caso de querer verificar se a impressora está ligada, como você verifica?

    Bom dia Robson,

    Para fazer a impressão eu Ativo o Device, efetuo a impressão e logo em seguida já desativo. Assim :

     dm_comum.Pos_Printer_Comum.Device.ativar;

    dm_comum.Pos_Printer_Comum.Imprimir( '</ae>'+ stTexto);

    dm_comum.Pos_Printer_Comum.Device.Desativar;

     

    Agora pra saber o Status de retorno da impressora você pode usar a classe "LerStatusImpressora" do POSPRINTER.

    Segue abaixo a classe feita pela equipe ACBR  pra vc entender os retornos e logo em seguida minha implementação, veja se ajuda em algo.

    procedure TACBrEscDaruma.LerStatus(var AStatus: TACBrPosPrinterStatus);
    var
      B: Byte;
    begin
      try
        B := Ord(fpPosPrinter.TxRx( ENQ )[1]);
        if TestBit(B, 0) then
          AStatus := AStatus + [stImprimindo];
        if TestBit(B, 3) then
          AStatus := AStatus + [stErro];
        if not TestBit(B, 4) then
          AStatus := AStatus + [stOffLine];
        if TestBit(B, 5) then
          AStatus := AStatus + [stSemPapel];
        if TestBit(B, 7) then
          AStatus := AStatus + [stTampaAberta];

        B := Ord(fpPosPrinter.TxRx( GS + ENQ )[1]);
        if TestBit(B, 0) then
          AStatus := AStatus + [stPoucoPapel];
        if TestBit(B, 1) then
          AStatus := AStatus + [stSemPapel];
        if TestBit(B, 3) then
          AStatus := AStatus + [stOffLine];
        if not TestBit(B, 4) then
          AStatus := AStatus + [stTampaAberta];  // Sem papel sobre o sensor
        if TestBit(B, 6) then
          AStatus := AStatus + [stErro];  // Impressora em falha
        if TestBit(B, 7) then
          AStatus := AStatus + [stGavetaAberta];  // Impressora em falha
      except
        AStatus := AStatus + [stErro];
      end;
    end;

    --------------------------------------------------------------

    Minha implementação. 

    function Tform_principal.sat_ler_status_pos_printer: boolean;
    var
      status: TACBrPosPrinterStatus;
      i: TACBrPosTipoStatus;
    begin

      result := true;

      if fl_verifica_status_pos_printer = false then
          exit;

      astr_pos_impressao := EmptyStr;
      status := dm_comum.Pos_Printer_Comum.LerStatusImpressora;

      if status = [] then
           ShowMessage('Nenhum status encontrado')
       else
       begin
           for i := Low(TACBrPosTipoStatus) to High(TACBrPosTipoStatus) do
           begin
               if i in status then
               begin
                   astr_pos_impressao := astr_pos_impressao + GetEnumName(TypeInfo(TACBrPosTipoStatus), integer(i)) + ', ';
                   if (integer(i) =  0)
                      or (integer(i) =  3)
                      or (integer(i) =  6)
                      or (integer(i) =  7) then
                       result := false;

               end;
            end;
       end;

       if result = false then
       begin
             raise Exception.Create('Erro Status Impressora ' + astr_pos_impressao );
       end;

    //         ShowMessage(astr);
    //    0         1             2            3             4              5            6           7
    //  stErro, stNaoSerial, stPoucoPapel, stSemPapel, stGavetaAberta, stImprimindo, stOffLine, stTampaAberta);

    end;

    --------------------------------

    Espero ter clareado em algo.

     

    Abraço

     

     

    Em 22/02/2016 at 10:12, moacirg disse:

    Liguei no suporte da Daruma, ainda não fiz os testes porque minha DR800 não esta comigo hoje.

    Na conversa com o Regys nos posts acima, ele disse que não teve nenhum problema com a impressora. Já todos nós, estamos aqui apanhando.

    No meu caso,  estava usando a impressora na porta serial, e ao plugar o cabo atrás dela, aparece a opção Configurar Velocidade Porta Serial no menu do Firmware da impressora. Esta opção aparece quando o cabo serial é conectado atrás ou se nenhum cabo estiver conectado. Se colocar cabo USB essa opçao nao aparece.

    Pra aparecer o menu do Firmware é preciso Desligar a impressora, e ligar novamente com o botão Avanço pressionado.

    Na DR 700, tinhamos o Daruma Tool pra configurar a Velocidade da Porta.

    Já na Dr 800, esse menu esta na propria impressora.

    As vezes pode ser isso que o Régys conseguiu imprimir sem problemas e nós estamos aqui quebrando a cabeça.

    Ela vem de Fabrica com o Baud de 9600.

    Testem e postem galera !!!!!

     

  7. 9 horas atrás, Régys Silveira disse:

    Pode mandar, sem problemas.

     

    Regys,

    Não precisa mais.

    Com certeza o problema é no meu PC. Algo esta errado.

    Peguei o executável e rodei nos PDV's aqui da empresa e deu tudo certo. Algo errado em relação a driver, não sei direito o que é, mas 100% erro de maquina.

    Muito obrigado pela atenção.

     

    • Curtir 1
  8. Em 30/03/2016 at 23:07, Régys Silveira disse:

    Rapaz, eu nunca tive esse problema, fiz uns testes aqui tentando seguir o que você escreveu, mas pareceu normal.

    Consegue reproduzir isso no ACBrNFeDemo?

    Poderia printar e postar a tela com a mensagem de erro?

    Bom dia Regys,

    Acabei de fazer o teste e consigo sim reproduzir o erro utilizando o DEMO.

    Só adicionei um EDIT no form pra colocar ou não CPF no cupom.

    Hora que coloca o CPF, aparece aquele erro na fita de impressão : NÃO FOI POSSIVEL IMPRIMIR O QR CODE. VERIFIQUE O TAMANHO DA ENTRADA E DO MODULO.

    Isso na Dr 800. Já na Dr 700 não há esse problema.

    Posso mandar um video no seu e-mail pra ver ??

  9. Régys, vc que é o guru da DR 800, veja se tem alguma ideia desse problema. Galera do forum tmb, aceito dicas.

    Quanto eu imprimo o cupom SAT, sai o QRCode normal. E posso fazer varias outras impressões, que dão todas certo, sem problemas.

    Só que ao imprimir 1 cupom com o CPF do cliente, ae pronto, o QRCode não sai e aparece aquele aviso para verificar o tamanho da entrada e modulo.

    Se eu desligar e ligar a impressora e imprimir apenas cupons com o CPF, ae da tudo certo. É só imprimir o próximo sem o CPF do consumidor, que volta o aviso do QRCode.

    Vc tem idéia do que pode ser ?? Ou algum outro membro do grupo ??

    Obrigado pela ajuda galera.

  10. 15 minutos atrás, Régys Silveira disse:

    Não há a necessidade de adicionar sleeps no código, o melhor é entender o que ocorre e não sair adicionando sleeps.

    Faça o seguinte utilize a propriedade ACBrPosPrinter1.Device.SendBytesInterval e coloque o tempo que deseja para a parada, no seu caso seria 100.

    E porque não disse isso antes ?? 

    Estavamos aqui nos matando com o SLEEP !!! kkkkkkk

  11. 23 minutos atrás, DSilva disse:

    Moacirg, blz.

    Então, no meu pdv-nfce, eu so uso o ACBrPosPrinter, nao uso o ACBrECF junto. 

    por essa razao posso deixar o controla porta desativado, ou nao tem nada a ver.

    Eu tmb não faço uso o ACBrECF, apenas POSPRINTER.

    Mas deixo o controle da porta sempre ativo, pois ele se encarrega de abrir a porta, efetuar a impressão e fechar em seguida.

    Se vc desativar, precisara abrir e fechar a porta manualmente sempre que for imprimir algo.

  12. Em 22/02/2016 at 10:12, moacirg disse:
    40 minutos atrás, DSilva disse:

    Bom dia,

    Alguém sabe me dizer se por o  ControlePorta = False, ele mantem a porta sempre aberta. é isso mesmo?

     

    Bom dia Silva,

    Quando o ControlePorta := false vc que precisa abrir e fechar a porta a cada impressão.

    Portanto ela não se mantem aberta ou fechada, mas sim no ultimo estado que vc a deixar.

    Abraço

     

  13. 19 minutos atrás, DSilva disse:

    Opa, 

    ainda bem q isso ta funcionando, o problema e que durante o dia todo em alguns cupons a DR800 simplesmente nao ta imprimindo todo o cupom , nao sai nada, e da erro de comunicação.

    cara é muito estranho isso, e o mais estranho é quando eu coloco a impressora na velocidade  de 115200, configuro no componente com a mesma,  so nao altero no gerenciador de dispositivos na porta COM1 do pc, ai sim o problema se multiplica.  

    ta um caos aqui no clinete dai imagina so supermercado na hora do movimento.. 

     

    Entendo perfeitamente a situação.

    Acho que alguma coisa esta segurando a porta serial do seu PC.

    Vc esta instanciando rodando o DarumaFrameWork em seu projeto ?? 

    Se estiver, precisa entrada no XML de configuração da impressora e mudar o nome do produto para nada, assim: <Produto></Produto>

  14. 4 horas atrás, DSilva disse:

    Opa,

    moacirg

    Estou tendo problemas de comunicação tb, com essa DR800, usando cabo serial na porta com1 do pc.

    segue anexo como que esta configurado na impressora, a velocidade. e na porta do pc com1 esta com a mesma velocidade de 9600.

    pergunto? onde vc achou na impressora esta velocidade citada por vc 128000?

    fico no aguardo.

    abraço.

    IMG_5477.JPG

    Boa tarde,

    A velocidade da porta é 128K quando se utiliza pela USB e lá no Gerenciador de Dispositivos tmb tem a opção 128K.

    Quando se utiliza a porta serial, ae é 115.200 mesmo, normal.

    Qual problema vc esta passando ?

    Ela imprime o cupom mais para no  QRCode  ? É esse ??

  15. 2 minutos atrás, BigWings disse:

    Com o cabo serial também não precisei do Sleep, apenas com cabo USB.

    Então é isso.

    Matamos a charada.

    Cabo Serial : Configurar Baud pelo firmware da impressora( Desliga e Liga com o botão Avanço Pressionado) e já era. ( Testado em 128000 - OK)

    Cabo USB  : Colocar Sleep na função da porta e ser feliz.

     

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