Ir para conteúdo
  • Cadastre-se

moacirg

Membros
  • Total de ítens

    55
  • Registro em

  • Última visita

Últimos Visitantes

1.633 visualizações

moacirg's Achievements

Contributor

Contributor (5/14)

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

Recent Badges

9

Reputação

3

Community Answers

  1. Boa tarde a todos, hoje completei 1 mês e 11 dias que estava com problemas de Access Violation na biblioteca dbxmss.dll no delphi 2010 ao efetuar transações TEF, utilizando componente TEFAPI. O pior era que não acontecia todas as vezes, ou determinadas sequencias que faria gerar o AV, era de forma aleatória. - Formatei o computador - Reinstalei delphi, mas agora com o Update 4/5 ( antes não tinha os Updates ) - Reinstalei todos componentes ACBr - Removi o componente SQLCONNECTION do meu Datamodulo e arrastei um novo da paleta. Isso pode parecer que não tenha efeito, mas tem, pois ele reconfigura a conexão vindo de dbxconnections.ini e dbxdrivers.ini. (O AV em questão estava vindo sempre que abria ou fechava a conexão com banco de dados, isso consegui rastrear devido ao LOG_TXT que gero na aplicação, parecido com dos componentes ACBr). - Apaguei todas DCUs, recompilei o projeto e pronto Resolvido. - Removi ActiveX de Uses, não precisou do Initialize e CoUninitialize. Obrigado a todos pela ajuda. Considero o tópico resolvido ( de minha parte).
  2. Nossa equipe possui Licença do EurekaLog a mais de 5 anos, ele aponta para a dbxmss.dll, por isso não consigo saber onde esta o erro. Tentei utilizar arquivo de depuração remota e .MAP mas não adianta, o erro vem da DBX. Tentei usar sim o CoInitialize(nil) e CoUninitialize; Estava inicializando sempre antes de conectar ao banco e utilizava o CoUninitialize; assim que fechava a conexão, mas agora fiz diferente, coloquei no Oncreate do principal (CoInitialize(nil); e apenas no ONclose CoUninitialize. Dessa forma ele ficará inicializado o tempo todo, apenas uma vez. Estou tentando, assim que obter retorno, volto a postar o resultado. Obrigado a todos envolvidos pela ajuda. Segue o Log do Eureka : Access violation at address 072F1BB0 in module 'dbxmss.dll'. Read of address 076CB840 Code: C0000005 (EXCEPTION_ACCESS_VIOLATION) Address: (00011BB0){dbxmss.dll } [072F1BB0] dbxmss (possible DBXReader_Next+2856) + $B28. ; Base Address: $72F1000, Allocation Base: $72E0000, Region Size: 69632 ; Allocation Protect: PAGE_EXECUTE_WRITECOPY, Protect: PAGE_EXECUTE_READ ; State: MEM_COMMIT, Type: MEM_IMAGE ; ; ; dbxmss. (possible DBXReader_Next+2829) (Line=0 - Offset=2829) ; ------------------------------------------------------------- 072F1B95 59 POP ECX 072F1B96 5D POP EBP 072F1B97 C20400 RET 4 072F1B9A 90 NOP 072F1B9B 90 NOP 072F1B9C 55 PUSH EBP 072F1B9D 8BEC MOV EBP, ESP 072F1B9F 53 PUSH EBX 072F1BA0 56 PUSH ESI 072F1BA1 33F6 XOR ESI, ESI 072F1BA3 8B5D08 MOV EBX, [EBP+8] 072F1BA6 837B0800 CMP DWORD PTR [EBX+8], 0 072F1BAA 7409 JZ +9 ; ($072F1BB5) dbxmss. (possible DBXReader_Next+2861) (Line=0) 072F1BAC 8B4308 MOV EAX, [EBX+8] 072F1BAF 50 PUSH EAX ; ; dbxmss. (possible DBXReader_Next+2856) (Line=0 - Offset=2856) ; ------------------------------------------------------------- 072F1BB0 8B10 MOV EDX, [EAX] ; <-- EXCEPTION
  3. Nada de resolver. Hoje completo 1 mês e 5 dias que não solto nenhuma nova versão do meu sistema porque esse problema persiste sempre que ativo o Tef. Tudo aconteceu depois que migrei para TefApi. Se trabalhar com meu PDV sem tef, roda que uma beleza. Se ativar o tef, algumas vendas ocorrem normais mas chega uma hora que durante o processo de finalização da venda, sobe o Access Violation no módulo Dbxmss.dll. Parece que tem algo nas units do Acbr Tef que destrói a conexão do sistema com a biblioteca dbxmss.dll. O Sistema simplesmente perde a conexões com Banco de dados.
  4. Estou com o mesmo problema..como vc resolveu??
  5. Legal, vou implementar algo pra fazer isso então. Obrigado pela resposta amigo.
  6. 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
  7. 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.
  8. 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.
  9. Showwww !!! Já achei o Função e vou testar. Muito obrigado pela dica. Abraço.
  10. 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
  11. 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.......
  12. Alguém chegou a alguma conclusão ?? Estou com o mesmo problema, ReportMemoryLeaksOnShutdown := true; no form principal do projeto e retorna vazamento.
  13. 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
  14. 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.
  15. 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 ??
×
×
  • 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...