Gabriel Gonçalves Domingos Postado 20 Abril, 2013 Postado 20 Abril, 2013 (editado) Pessoal, Boa noite, Meu aplicativo que estava na versão 9 e com o componente ACBr funcionava perfeitamente nos clientes. Ai fiquei sabendo do ACBrFramework e fiz a mudança no meu sistema para usar esse novo componente e gerei a versão 10. Comecei a dar um erro "Disk Full" intermitente, na maioria das vezes ao abrir o cupom fiscal, porém, também deu na hora de receber, na hora de imprimir um gerencial, etc. O HD da máquina nao está cheio, tem 15GB livres e fiz inúmeros testes e tentativas com meu sistema e nada, o erro ocorria como já disse acima intermitente, fazia uma venda e dava erro, tentava novamente exatamente a mesma venda e funcionava. Após todas as tentativas desinstalei a versão 10 e voltei a versão 9 novamente com o componente ACBr e o problema parou. É meio estranho um erro desse vir do ACBr, porém, mais aconteceu isso que escrevi acima. Alguém tem alguma ideia? Pra "confirmar" que o problema vem do ECF, se operar o sistema no modo emergencial, ou seja, ECF com problemas (desligado), o erro não ocorre! Editado 22 Abril, 2013 por Gabriel Gonçalves Domingos
Gabriel Gonçalves Domingos Postado 23 Abril, 2013 Autor Postado 23 Abril, 2013 Ontem baixei a atualização nais recente do ACBrFramework do SVN e vi que o tamanho do DLL compilada havia aumentado. Compilei uma nova versão do meu PDV usando o ACBrFramework mais recente, coloquei no cliente que estava com o ACBr32.dll funcionando perfeitamente desde sexta (dia que escrevi o post acima) e na 5º venda apareceu o erro Disk Full. O cupom chega a abrir no ECF porém o produto não registra, assim o cupom fica aberto. Fechei meu aplicativo e abri de novo para cancelar o cupom aberto e deu o mesmo erro, Disk Full. Fechei e abri novamente, ai o cupom cancelou, porém, voltei a versão da minha aplicação que trabalha com o ACBr32.dll e tudo voltou ao normal. É IMPORANTE ressaltar que o erro está sendo gerado por uma ACBrFramework.ACBrException, ou seja, está vindo do componente ACBr,
Gabriel Gonçalves Domingos Postado 23 Abril, 2013 Autor Postado 23 Abril, 2013 Pessoal, Descobriiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii o problema. Agora preciso de vocês pra resolver. O erro Disk Full ocorre com a Daruma FS-600 quando o sensor de papel está acusando pouco papel. Consegui simular o erro na minha máquina, coloque uma bobina de papel quase no finalzinho e tente abrir um cupom, registrar um item que apresenta o erro Disk Full, depois cole o sensor de papel com durex e pronto, o erro não acontece mais.
marcelokrol Postado 25 Abril, 2013 Postado 25 Abril, 2013 Estou recebendo este mesmo erro em uma Bematech Mp20 matricial
Gabriel Gonçalves Domingos Postado 29 Abril, 2013 Autor Postado 29 Abril, 2013 Pessoal, Bom dia, Sei que o projeto ACBr é gratuito e não tenho o direito de exigir uma solução imediata pra os problemas encontrados, porém, acho que o problema citado acima merece uma atenção especial por ser gravíssimo. Gostaria de ouvir a manifestação de algum dos integrantes (desenvolvedores) do projeto ACBr em relação ao assunto. Se realmente é problema, se conseguiram testar/simular em ambiente de desenvolvimento, etc. Desde o dia que descobri a causa do problema orientei meus clientes a colarem um durex no sensor de pouco papel da impressora Daruma o problema foi amenizado.
Rafael Dias Postado 29 Abril, 2013 Postado 29 Abril, 2013 Qual a linguagem de desevolvimento ? pois este erro nunca aconteceu comigo.
Rafael Batiati Postado 29 Abril, 2013 Postado 29 Abril, 2013 Algumas considerações: 1. Isso já aconteceu comigo, apenas 1 vez. Após abrir o cupom e antes de imprimir o primeiro item recebi o erro Disk Full, usando uma Daruma MACH 2 Desconectei o cabo USB e reconectei e o problema não aconteceu mais. Não troquei papel ou mexi no sensor. 2. O ACBrException em questão só reproduz o erro disparado pelo componente ACBr, ou seja, isso está acontecendo no nível do ACBr em Delphi. 3. Tente reproduzir o mesmo comportamento usando o aplicativo de teste, tanto do ACBr quanto do ACBrFramework. Assim isolamos se o problema pode ser da aplicação/máquina, AcbrFramework ou do ACBr Abs Rafael Batiati ACBrFramework - Automação comercial para todos. MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.
Gabriel Gonçalves Domingos Postado 29 Abril, 2013 Autor Postado 29 Abril, 2013 Respondendo o Rafael Dias: Qual a linguagem de desenvolvimento? R: Eu baixo o ACBrFramework do SVN e copio pra minha Solution que é toda em Visual Basic (Visual Studio 2010) apenas as pastas ACBrFramework (pra usar o arquivo \ACBrFramework\ACBrFramework\x86\ACBrFramework32.dll) e ACBrFramework.Net em C# (pra gerar o arquivo ACBrFramework.Net.dll compilado). Agora pro Rafael Batiati: Acabei de testar usando o aplicativo ACBrFramework.Net.ECFTeste e aconteceu o mesmo erro, estou postando um vídeo pra que vocês possam ver com mais clareza. Agora quanto sua solicitação pra testar com o ACBr como faço? Seria o que está dentro da pasta /trunk em Delphi? É que não tenho esse compilador, teria um .exe pronto pra eu poder testar? *Lembrando que com o antigo ACBr32 (ACBr32.dll e ACBr.Net.dll) o problema não acontece. Segue abaixo o vídeo: https://www.dropbox.com/s/olne6x3vje3xbww/2013-04-29%2014.12.17.mp4 Segue abaixo uma imagem: Deu o erro Disk Full tanto na abertura do cupom quanto na hora de registrar qualquer item. Depois coloquei um durex no sensor e o erro não aconteceu (está no vídeo). A impressora é uma Daruma FS600.
Moderadores Juliomar Marchetti Postado 29 Abril, 2013 Moderadores Postado 29 Abril, 2013 Aqui mesmo no fórum na area de download aberto tem o ECFTeste.exe baixa ele e faz o teste Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Gabriel Gonçalves Domingos Postado 29 Abril, 2013 Autor Postado 29 Abril, 2013 Bom, Acho que o problema é com o ACBrFramework mesmo, testei com o ECFTeste.exe que baixei do link sugerido pelo Juliomar Marchetti e não apresentou erro, apenas a mensagem de "ATENÇÃO...POUCO PAPEL" na resposta do ECF. Segue abaixo a imagem:
Rafael Dias Postado 29 Abril, 2013 Postado 29 Abril, 2013 Cara este erro ocorre por que você não setou o evento OnPoucoPapel. No demo do ACBr Mostra a mensagem por que nele esta setado o evento. Eu adicionei o evento no Demo do ACBrFramework. Obs.: Sobre a dll antiga, ela funcionava por que antigamente não tínhamos eventos e por isso suprimíamos esta mensagem.
Gabriel Gonçalves Domingos Postado 29 Abril, 2013 Autor Postado 29 Abril, 2013 Rafael, O que seria "setar o evento OnPoucoPapel", pelo que entendo eventos são disparados para que eu possa fazer algum tipo de tratamento e não "setados". No código fonte do ECFTeste do ACBrFramework no método Ativar() está assim: acbrECF.Modelo = (ModeloECF)modeloComboBox.SelectedItem; acbrECF.Device.Porta = (string)portaComboBox.SelectedItem; acbrECF.Device.TimeOut = (int)nudTimeOut.Value; acbrECF.GavetaSinalInvertido = gavetaCheckBox.Checked; acbrECF.DescricaoGrande = descricaoCheckBox.Checked; acbrECF.Ativar(); Sendo assim, qual linha de código devo acrescentar, poderia me dar um exemplo? Também não encontrei esse evento OnPoucoPapel, apenas OnMsgPoucoPapel. E outra observação a ser feita: (1) Quando mudei do ACBr.Net.dll (antigo ACBr) para o ACBrFramework.Net.dll não mudei uma linha de código na minha aplicação e o erro não acontecia. Agora é necessário tratar esse evento?
Rafael Dias Postado 29 Abril, 2013 Postado 29 Abril, 2013 1º O Evento é o OnMsgPoucoPapel mesmo, ele fico como OnPoucoPapel na primeira implementação. 2ª Sim vai precisar deste evento, pois como disse antigamente não tinhamos eventos na dll do ACBrFramework. 3º Setar, seria isso "acbrECF.OnMsgPoucoPapel += acbrECF_OnMsgPoucoPapel". 4º O ACBr existe ainda não confunda ACBr com a antiga dll ACBr32, esta não existe mais. 5º E eu acho dificil você não ter mudado nada pois mudou varias coisas na dll inclusive as namespace.
Gabriel Gonçalves Domingos Postado 29 Abril, 2013 Autor Postado 29 Abril, 2013 Rafael, Tamo parecendo um bate-papo aqui, hehe, mais vamos lá: Quanto ao item 5, realmente mudei apenas o namespace e a parte da serial que agora ficou dentro de Device, de resto, não mudei nada. Agora o bagulho ficou louco, olha só: No ECFTeste.exe adicionei o comando: private void acbrECF_OnMsgPoucoPapel(object sender, EventArgs e) { MessageBox.Show("Pouco papel!"); } - Abri o aplicativo, registrei um item, exibiu a mensagem "Pouco papel" e realmente não deu o erro Disk Full; - Fechei, removi o código acima, executei novamente e o erro não voltou a aparecer; - Fechei novamente, recompilei, coloquei no outro ECF que também estava dando o erro e não deu novamente; - Não contente, joguei o código fora, baixei do SVN de novo, compilei, abri e NÃO deu novamente. Agora meus neurônios saíram fumaça...Tô aqui pensativo, já já posto mais alguma coisa!
Gabriel Gonçalves Domingos Postado 29 Abril, 2013 Autor Postado 29 Abril, 2013 Pessoal, Por enquanto vou encerrar a discussão pelo seguinte: Apenas adicionei o trecho de códibo abaixo em VB.net na minha aplicação e parou de dar o erro, repare que nem precisei fazer nada dentro do código do evento, apenas a declaração já resolveu. Private Sub ACBrECF_OnMsgPoucoPapel(sender As Object, e As System.EventArgs) Handles Me.OnMsgPoucoPapel End Sub Agora ficam as dúvidas aí pra quem quiser resolver/explicar: (1) Qual a obrigatoriedade de agora ter que tratar/declarar o evento OnMsgPoucoPapel? (Sendo que antes com o ACBr32.dll não havia necessidade) (2) Sendo obrigado, porque só com a Daruma acontece o erro? (Testei com Bematech e Sweda e o erro não ocorreu) (3) Já que o assunto/método é sobre pouco papel, porque a mensagem de erro é "Disk Full"?
Rafael Dias Postado 29 Abril, 2013 Postado 29 Abril, 2013 1º como eu disse não tem obrigatoriedade de tratar você pode apenas declarar como fez e deixar em branco, antes não tinha eventos por isso nos tratávamos internamente na dll. 2º Não acontece com todas impressoras que lançam erro por causa de pouco papel. 3º Não sei o por que pode ser que seja esta a resposta da impressora, pois não achei nenhuma declaração Disk Full no código do ACBr.
Rafael Batiati Postado 30 Abril, 2013 Postado 30 Abril, 2013 Oi Gabriel, Que bom que foi identificado o problema, porém eu tenho algumas dúvidas. Comigo esse erro não acontece, mesmo com pouco papel no ECF, mesmo sem usar o evento de OnMsgPoucoPapel. Já que você está tendo a oportunidade de reproduzi-lo, gostaria que pudesse nos ajudar a entender melhor o problema: O que seria "setar o evento OnPoucoPapel", pelo que entendo eventos são disparados para que eu possa fazer algum tipo de tratamento e não "setados". E outra observação a ser feita: (1) Quando mudei do ACBr.Net.dll (antigo ACBr) para o ACBrFramework.Net.dll não mudei uma linha de código na minha aplicação e o erro não acontecia. Agora é necessário tratar esse evento? Setar um evento é o termo usado comumente em C# para "assinar" um evento. Já assinar um evento, é declarar um método em sua aplicação e relacioná-lo com um evento de forma que esse método seja executado sempre que o evento for disparado. Usamos a palavra setar, pois em C# a sintaxe fica como se fosse um set de propriedade, ecf.OnMsgPoucoPapel += <<nome do método>> Em VB.Net a declaração é feita com WithEvents e o evento é assinado implicitamente por convenção de nome <<nomeDaVariável>>_<<NomeDoEvento>>, e realmente nessa linguagem o termo setar não faz nenhum sentido. Quando você usava o antigo ACBr.Net.dll, ele não possuía eventos, e os tratamentos feitos via eventos eram processados internamente pela DLL nativa. Atualmente os componentes possuem os eventos, e o aplicativo devem assiná-los conforme a necessidade. Eventos obrigatórios que eu saiba, são apenas aqueles que solicitam as chaves de criptografia. (OnGetChave do AAC e OnGetChavePublica/OnGetChavePrivada do EAD) Este caso específico do ECF Daruma quando o OnMsgPoupoPapel não estiver assinado disparar uma exception cuja mensagem é Disk Full, não me parece algo muito natural, e deve ser debugado para melhor entendimento. Em todo caso, enquanto não esclarecemos esse ponto, faremos melhor ao utilizar o evento para tratar o sensor de pouco papel no aplicativo em produção nos clientes. (...) No ECFTeste.exe adicionei o comando: private void acbrECF_OnMsgPoucoPapel(object sender, EventArgs e) { MessageBox.Show("Pouco papel!"); } 1 - Abri o aplicativo, registrei um item, exibiu a mensagem "Pouco papel" e realmente não deu o erro Disk Full; 2 - Fechei, removi o código acima, executei novamente e o erro não voltou a aparecer; 3 - Fechei novamente, recompilei, coloquei no outro ECF que também estava dando o erro e não deu novamente; 4 - Não contente, joguei o código fora, baixei do SVN de novo, compilei, abri e NÃO deu novamente. Agora meus neurônios saíram fumaça...Tô aqui pensativo, já já posto mais alguma coisa! 1. Você precisa apenas assinar o evento, não precisa de fazer nenhum tratamento ou colocar nenhum código dentro dos métodos. 2. Se você removeu apenas o MessageBox.Show("..."); tá explicado no item 1 acima, mas se você removeu toda a declaração e não está mais assinando o evento, isso pode significar que este erro tem relação com o pouco papel mas não é proveniente dele. Se puder reproduzir isso e postar com mais detalhes será bem útil. 3. Idem ao item 2. Como eu disse num post anterior, quando esse erro aconteceu comigo eu apenas desconectei a USB e reconectei novamente. não mexi no papel ou no sensor. 4. Neste caso, você ao pegar a versão do SVN pode ter baixado a versão atualizada que já assina o evento, ou pode ser o mesmo caso do item 2 ou 3 acima. Novamente, se puder reproduzir isso com mais detalhes... Abs, Rafael Batiati ACBrFramework - Automação comercial para todos. MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.
Gabriel Gonçalves Domingos Postado 30 Abril, 2013 Autor Postado 30 Abril, 2013 Rafael(s) Boa tarde, Acabei de voltar do oftalmologista e to vendo tudo embaçado, hehe.... Amanhã é feriado e provavelmente não conseguirei postar maiores detalhes, portanto, quinta-feira retorno aos trabalhos para tentar esclarecermos esse caso! Abs.
naugustijr Postado 13 Setembro, 2013 Postado 13 Setembro, 2013 Pessoal, acabei de encontrar o problema e a solução. Juntei os argumentos de cada um de vocês, consegui simular o problema, diagnostica-lo e achar uma solução (que está vinculada ao design da minha aplicação). Cenário: Cliente Windows XP Impressora fiscal MP 4000 TH FI Bobina com pouco papel Aplicativo desenvolvido em Visual Basic 6.0 utilizando ACBrFramework Histórico: Aplicativo instalado ontem no cliente. Hoje apresentou problemas ao ativar a impressora (ACBR.ATIVAR), retornando a mensagem DISK FULL. Ao utilizar o formulario de configuração da impressora (no mesmo aplicativo) a impressora ativava normalmente e retornava a mensagem POUCO PAPEL. Eu desativava a impressora e ativava novamente e nada de aparecer a mensagem DISK FULL. Saia da configuração da impressora e quando retornava recebia novamente a mensagem DISK FULL. Ainda no cliente, pedi para que o mesmo trocasse a bobina (com pouco papel) por uma nova. Ele trocou e resolveu o problema. O que não tinha sentido (POUCO PAPEL e DISK FULL) confirmou ter alguma relação obscura. Para encontrar a solução precisava simular o problema no meu ambiente de desenvolvimento. Simulação em Ambiente de Desenvolvimento: Sempre uso o emulador da SWEDA, connectsim, e tentei simular pouco papel com ele. Em todos os aplicativos que tinha em mãos nao retornava o status e nem a mensagem. Instalei o emulador novo da bematech e tambem nao funcionou direito com o com0com que tenho funcionando aqui. Instalei emulador antigo da Bematech. Este sim me retornou o status de pouco papel e fez com o erro acontecesse em ambiente de desenvolvimento. Depois de vários testes e tentativas de alteração de código percebi que: Eu tento no sistema ativar a impressora em 2 locais diferentes: a) para verificar somente se a impressora esta configurada corretamente e funcionando e Declaracao da variavel global Public ACBrECF As New ACBrFramework_Net.ACBrECF para trabalhar efetivamente com a impressora. Declaração da Variavel Local Public WithEvents ACBrECF As ACBrFramework_Net.ACBrECF As diferenças entre os 2 locais de ativação eram a existência( ou não (a) de um formulário (form) associado. Concluí então, que o fato do ACBr disparar eventos como o de POUCO PAPEL exigia um tratamento (ou pelo menos um ambiente-form- em que pudesse se "expressar") para o evento disparado. Para não alterar muito meu código criei um formulário (que fica invisivel o tempo todo) com uma variavel do ACBR que será setada para a instância global e que trata os eventos emitidos pelo ACBrECF. Formulario Public WithEvents ACBrECF As ACBrFramework_Net.ACBrECF Public WithEvents ACBrAAC As ACBrFramework_Net.ACBrAAC Public WithEvents ACBrEAD As ACBrFramework_Net.ACBrEAD Private Sub ACBrECF_OnMsgPoucoPapel() MsgBox "POUCO PAPEL", vbCritical, "IMPORTANTE!" Beep End Sub Chamada ao Formulario Set frm_PDV_Testa_Impressora.ACBrECF = ACBrECF Select Case AtivaEProgramaECF 'Onde ocorria o erro Com esta solução o problema não mais ocorreu. Resumindo, o cenário de ocorrência foi identificado, uma solução viável foi apresentada. Fica faltando a explicação do porque da mensagem DISK FULL. É com vocês agora.
mcola Postado 19 Fevereiro, 2014 Postado 19 Fevereiro, 2014 Boa tarde pessoal!!!! Fiquei um pouco confuso com as respostas, então gostaria de saber qual melhor solução no meu caso que uso C#... ? Obrigado
Rafael Dias Postado 19 Fevereiro, 2014 Postado 19 Fevereiro, 2014 @mcola Você simplesmente precisa programa o evento OnMsgPoucoPapel.
edsonmoretti Postado 19 Maio, 2014 Postado 19 Maio, 2014 Agora é com Java, disk full, em momentos aleatórios... vou ver se resolvo...
Recommended Posts
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 contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora