Ir para conteúdo
  • Cadastre-se

moacirg

Membros
  • Total de ítens

    51
  • Registro em

  • Última visita

Últimos Visitantes

1.145 visualizações

moacirg's Achievements

Contributor

Contributor (5/14)

  • Dedicated Rare
  • First Post
  • Collaborator Rare
  • Conversation Starter
  • Week One Done

Recent Badges

8

Reputação

2

Community Answers

  1. Legal, vou implementar algo pra fazer isso então. Obrigado pela resposta amigo.
  2. moacirg

    CORTA PAPEL ESCPOS

    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
  3. 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.
  4. 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.
  5. Showwww !!! Já achei o Função e vou testar. Muito obrigado pela dica. Abraço.
  6. 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
  7. moacirg

    Retorno Total Cupom SAT

    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.......
  8. Alguém chegou a alguma conclusão ?? Estou com o mesmo problema, ReportMemoryLeaksOnShutdown := true; no form principal do projeto e retorna vazamento.
  9. 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
  10. 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.
  11. 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 ??
  12. 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.
  13. Liguei no suporte da Elgin disseram que essa impressora funciona melhor o QRCODE no BAUD de 38.400. Já passei por esse problema aqui. Testa e fala pra gente.
  14. E porque não disse isso antes ?? Estavamos aqui nos matando com o SLEEP !!! kkkkkkk
  15. 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.
×
×
  • 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.