Ir para conteúdo
  • Cadastre-se

Nelson A Sousa

Membros
  • Total de ítens

    351
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Nelson A Sousa postou

  1. Olá @Rafael Dias, Bom dia! Muito obrigado pela atenção! Segue anexo uma cópia completa: FrmMain.cs ACBrNFe.cs
  2. Olá, Dê uma olhada no manual, é "completasso"!!! https://acbr.sourceforge.io/ACBrLib/ConfiguracoesdaBiblioteca16.html
  3. Acabei refazendo os testes, SVN revision 19490. Usei o demo C# que acompanha o AcbrLib. Limpei a pasta debug. Recompilei a dll no Lazarus, estou usando a x86 - AcbrNFe32.dll. Informei minha pasta na inicialização: public FrmMain() { InitializeComponent(); ACBrNFe = new ACBrNFe(Path.Combine(@"C:\BKP", "ACBrLib.ini")); } Somente compilei, abri e fechei o demo sem efetuar alteração nenhuma. Foram criados 2 AcbrLib.INI, um na pasta de inicialização, e outro na pasta raiz do EXE, no caso a debug da demo. Voltei a compilar e efetuei apenas uma mudança nas configurações, informei um número de série qualquer de certificado. A mudança só foi efetuada no INI da pasta raiz do EXE. A única mudança que fiz no demo foi informar a inicialização conforme acima. @Rafael Dias, A alteração e leitura do INI só é efetuada na pasta correta informando-se o path em ConfigLer() e ConfigGravar().
  4. Desculpe @Rafael Dias, Mas você está se referindo à classe C# do demo? ou as alterações realizadas foram nos fontes? O SVN acusou a revisão 19490.
  5. Olá @Rafael Dias, Acabei de realizar um teste utilizando o Demo. Acho que ainda não solucionou, o path informado na inicialização não é respeitado ao se salvar as configurações. O arquivo é criado no path da inicialização, porém ao se realizar alterações e clicar no botão de salvar as configurações as configurações são salvas na pasta raiz do EXE. Mas acho que descobri onde está o "erro". Eu estava pressupondo que o path informado na inicialização, era armazenado de forma global na LIB. Isso não acontece. A solução está em se informar o path do arquivo de configurações sempre que for trabalhar com ele. Ou seja, sempre que utilizar ACBrNFe.ConfigLer("Infomar o mesmo path da inicialização"), e, também ao se utilizar ACBrNFe.ConfigGravar(Path.Combine(@"C:\SuaPasta", "ACBrLib.ini")); Resumindo, usar sempre: ACBrNFe = new ACBrNFe(Path.Combine(@"C:\SuaPasta", "ACBrLib.ini")); ACBrNFe.ConfigLer(Path.Combine(@"C:\SuaPasta", "ACBrLib.ini")); ACBrNFe.ConfigGravar(Path.Combine(@"C:\SuaPasta", "ACBrLib.ini"));
  6. Olá, Verifique se o sistema está mesmo fechando, ou, sendo enviado "para trás". Use ALT + TAB para navegar pelas janelas abertas.
  7. Olá @Daniel Simoes, Me coloco à disposição caso queiram fazer algo conjuntamente na hora de reproduzir o problema. É só escolher o meio de comunicação, Skype, WhatsApp...qualquer um, é só avisar. Skype: nelsonasousa WhatsApp: (32)98847-3655
  8. Se eu puder dar uma sugestão, Não seria melhor se evitar usar arquivos de configuração na raiz do EXE? Digo isso por causa da distribuição por ClickOnce. A cada envio de atualização a pasta raiz é modificada e as configurações em arquivos INI ou XML vão pro espaço. Por isso tenho dado preferencia para informar a pasta de inicialização, entende?
  9. Bom dia a todos! @Rafael Dias, Acabo de executar um teste com as mudanças: 1 - Limpei a pasta de inicialização , pagando todos os INIs e LOGs: _AcbrNFe = new ACBrNFe(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); 2 - Limpei a pasta raiz do EXE (minha pasta DEBUG): 3 - Declarei private ACBrNFe _AcbrNFe; com escopo para todo o formulário. 4 - Inicializei a lib conforme código do item 1. 5 - Verifiquei a pasta de inicialização e foi criado um ACBrLib.ini nela, bem como na pasta raiz do EXE. Porém ambos de conteúdo diferente. Segue arquivos abaixo. 6 - Alterei a impressora posprinter para Daruma e o baud pra 1200, o arquivo da pasta de inicialização não foi modificado, o da pasta raiz do EXE é que sofreu as mudanças. Veja abaixo os arquivos. Conclusão: A LIB leva em consideração a pasta que indicamos para criação do INI, porém segue trabalhando com o INI da pasta raiz do EXE. Repare que, mesmo no momento da criação do INI, o mesmo é criado com conteúdo diferente nas pastas. O da pasta de inicialização é bem maior que o da pasta EXE. Pelo que percebi devem haver 2 métodos na LIB realizando o mesmo procedimento, só que um está mais completo que o outro. Pelo menos é o que aparenta. Um abraço e obrigado pela atenção!!! ACBrLib_Raiz_EXE.ini ACBrLib_Pasta_Inicializacao.ini ACBrLib_Pasta_Inicializacao_Apos_Alteracao.ini ACBrLib_Raiz_EXE_Apos_Alteracao.ini
  10. ok, lá vai: 1 - Limpe tudo da raiz do EXE, no meu caso pasta DEBUG do minha IDE. 2 - Apague o AcbrLib.ini da pasta de inicialização, no meu caso NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini". Você tem que informar uma pasta diferente da raiz do EXE, ok? 3 - no escopo do formulário: private ACBrNFe _AcbrNFe; 4 - no evento load do formulário: _AcbrNFe = new ACBrNFe(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); 5 - Apenas abra o formulário e verifique se os arquivos AcbrLib.ini foram criados na pasta da inicialização e na raiz do EXE. 6 - Verifique o conteúdo dos arquivos, no meu caso tentei efetuar a leitura da seção PosPrinter_Device e ela não foi encontrada no arquivo da pasta da inicialização.
  11. @Rafael Dias, Efetuei o primeiro teste utilizando apenas a AcbrLib.NFe, inicializei assim: No escopo do formulário: private ACBrNFe _AcbrNFe; No evento Load do formulário: _AcbrNFe = new ACBrNFe(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); Apenas abri o formulário para a criação e primeira carga do INI e o que aconteceu foi: Foram criados 2 AcbrLib.INI, um na pasta que informei na inicialização, e outro na raiz do EXE (pasta debug). Apesar de terem o mesmo nome AcbrLib.ini, os dois tem conteúdo diferentes. Quando faço a leitura do criado na inicialização a seção AcbrPosPrinter_Device e suas chaves não são encontradas. Porém veja que estão no INI criado na raiz do EXE. ACBrLib_Raiz_do_EXE.ini ACBrLib_Pasta_Inicializacao.ini
  12. Olá @Rafael Dias, Eu acho que já testei com apenas uma LIB inicializada, mas vou repetir o teste pra sanar a dúvida.
  13. Eu consegui um progresso aqui retirando o escopo das declarações para o formulário inteiro e restringindo ao escopo do método. Por exemplo, como eu dividi o formulário de configurações dentro de um TABControl, eu usei o evento GotFocus() da TAB selecionada para ler os dados do INI e carregar os controles dentre desta TAB. Ao terminar de carregar todos os controles da TAB, eu finalizo a LIB que inicializei. Para salvar os dados alterados dentro de cada TAB, eu utilizei o evento LostFocus() da mesma. Novamente eu inicializo a LIB, faço a gravação dos valores no INI com ConfigGravarValor(), e finalizo novamente a LIB inicializada. Usando dessa forma, ou seja, inicializando, manipulando, e finalizando cada LIB dentro dos métodos, no caso GotFocus() para carga e leitura dos dados do INI, e, LostFocus() para gravação do INI, eu consegui salvar os dados. Mas, ainda notei que sempre é criado um AcbrLib.INI na raiz do EXE, só que este contém apenas as seções e chaves da LIB que foi fechada por último. Notei também que, para manipular os dados GERAIS, é necessário usar-se a AcbrLib.NFe, as outras que utilizei aqui, posprinter e ETQ não manipulam estes dados, apesar de criar o INI com os dados GERAIS padrão. Ah, e como estou utilizando a demo do C#, eu tive que criar os métodos de finalização para que pudesse finalizar a LIB após sua utilização dentro do eventos. public void FinalizarNFe() { var method = GetMethod<Delegates.NFE_Finalizar>(); var ret = ExecuteMethod(() => method()); CheckResult(ret); }
  14. Não mudo não @Daniel Simoes, eu faço a declaração: ACBrNFe _AcbrNFe = new ACBrNFe(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); Após isso uso apenas _AcbrNFe para realizar a leitura do INI e as alterações. Para reproduzir o que faço aqui siga: 1 - Deleto (limpo) a pasta Debug da minha IDE. 2 - Deleto o AcbrLib.INI e todos os logs da pasta NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini" 3 - Compilo meu sistema e abro a tela de configurações, no evento load() já faço as declarações de cunho global para a tela que abri: _AcbrPos = new ACBrPosPrinter(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); _AcbrNFe = new ACBrNFe(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); 4 - Vou até a pasta NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini" e verifico a criação do AcbrLib,INI. Que no caso é criado corrtamente. 5 - Vou até a pasta DEBUG(raiz do EXE) e verifico se foi criado um AcbrLib.ini. Neste caso NÂO É CRIADO!!! 6 - Faço alguma alteração qualquer usando a PosPrinterLib e a AcbrNFeLib, no meu caso apenas selecionei o modelo como Daruma e coloquei o Baud como 1200. 7 - Vou até a pasta que indiquei ao declarar (NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini") e vejo que o INI não foi alterado. 8 - Vou até a pasta DEBUG (raiz do EXE) e vejo que foi criado um segundo AcbrLib.INI, este sim com as alterações, mas somente com as alterações da Lib que foi fechada por último. Esse é o roteiro do que fiz para descobrir que apenas são salvas as alterações da última LIB fechada. E salvas na pasta raiz do EXE, não na pasta que informei.
  15. Fiz um segundo teste alterando as posições de: _AcbrNFe.ConfigGravar(); _AcbrPos.ConfigGravar(); para: _AcbrPos.ConfigGravar(); _AcbrNFe.ConfigGravar(); e o resultado está no arquivo anexo. Parece que a lib que lida de forma mais completa com o INI é a AcbrLib.NFe, pois alterou os dados gerais, etc. Porém ignorou as alterações da PosPrinter. O @Daniel Simoes matou a charada lá em cima, cada LIB carrega uma cópia do INI para a memória e salva sem consultar o disco. A solução para isto é até simples, basta construir-alterar-salvar cada LIBde forma separada, mesmo dentro do mesmo formulário, ou seja, usar métodos com declarações privadas. O problema que restou é que a leitura do INI é feita na pasta que informamos, e a gravação na raiz do EXE. Acho que é isso...rsrsrsrs ACBrLib_Segunda_Alteracao.ini
  16. Vou passar um passo a passo do que estou fazendo: 1 - Faço a construção: _AcbrPos = new ACBrPosPrinter(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); _AcbrNFe = new ACBrNFe(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); Após a construção a AcbrLib.INI é criada na pasta que eu indiquei, veja abaixo o arquivo AcbrLib_Criada.INI. 2 - Faço as alterações, pra efeito de teste, alterei apenas o baud da PosPrinter pra 1200 e a impressora para Daruma: _AcbrNFe.ConfigGravarValor(ACBrSessao.Emissor, "RazaoSocial", _empresa.Empresa); --> veja que envio a alteração Razão social com a AcbrNFe. _AcbrPos.ConfigGravarValor(ACBrSessao.PosPrinter, "Modelo", (ACBrPosPrinterModelo)CboModeloEscPos.SelectedValue); --> Aqui o comando de alteração da impressora. _AcbrPos.ConfigGravarValor(ACBrSessao.PosPrinter_Device, "Baud", (int)(SerialBaud)CboVelocidadeEscPos.SelectedValue); --> Aqui o comando de alteração do baud. Finalizo tudo com: _AcbrNFe.ConfigGravar(); _AcbrPos.ConfigGravar(); nesta mesma sequência. A AcbrLib.INi é mantido na pasta que eu informo, veja arquivo abaixo (AcbrLib.INI_Mantida). E por fim, é criado na raiz do EXE outro AcbrLib.INI com as alterações (AcbrLib_Apos_Alteracoes). Infelizmente o log não foi criado!! ACBrLib_Criada.ini ACBrLib_Mantida.ini ACBrLib_Apos_Alteração.ini
  17. Bom dia! Sim, estou usando a Demo C# da AcbrLib.NFe, AcbrLib.ETQ, AcbrLib.CHQ e a AcbrLib.PosPrinter.
  18. Pessoal, Acabei descobrindo o problema. Quando a LIB lê o arquivo INI ela faz a leitura na pasta conforme eu declaro: _AcbrNFe = new ACBrNFe(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); Porém quando ela salva, o salvamento é feito na pasta raiz do EXE. Fiquei num loop quase sem fim por aqui...rsrsrsrs. Notei também que as configurações de núcleo (GERAIS), por exemplo, os dados do emissor, não estão sendo salvas. Não importa qual LIB se use.
  19. Só pra feito de teste, nos exemplo acima eu declarei todos os constructors que necessito, mas pra salvar eu usei apenas o do posprinter.
  20. Vejam que modifico a velocidade da posprinter pra 1200, modifico a impressora pra daruma, etc..., mas sempre carrega os valores padrão. ACBrLibNFE-20200316.log Vejam o que carrega na imagem abaixo. Só não reparem na distribuição dos campos na tela, ainda estou construindo...rsrsrsrs
  21. Olá, @José M. S. Junior, Obrigado pela resposta. Não modifiquei nada na AcbrDevice.cs porque esbarrei justamente no problema de salvamento do INI. Da forma como construí minha rotina de configurações, eu pensei em tratar tudo no mesmo formulário. Porém com a questão de estar sobrescrevendo o INI e não salvando as configurações que modifico, não consegui progredir. Fiz algumas alterações na velocidade da AcbrPosPrinter e não consegui efetivar as mesmas. Nem mesmo o arquivo de LOG foi gerado. Como sou sozinho por aqui e tive que fazer uns atendimentos, não pude trabalhar no problema agora à tarde. Mas vou dar uma mexida hoje à noite e ver o que descubro. Eu inicializo dessa forma: _AcbrNFe = new ACBrNFe(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini", ""); _AcbrETQ = new ACBrETQ(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini");
  22. Deve ser isso mesmo, ao se declarar vários constructors para cada LIB do Acbr, uma cópia do INI vai pra cada. Daí na hora de salvar sobrescreve. Creio que, por se tratar de um arquivo nem tão grande assim, o INI das configurações poderia ser criado com a totalidade das seções e das chaves, não importando qual LIB se use. Dessa forma, ao se lidar com as configurações do mesmo, a declaração de apenas um constructor seria suficiente.
  23. Olá @Daniel Simoes, Obrigado pela resposta. Segue anexo os enuns. Não sei se os nomes estão nas regras do Acbr. Não sei se devo abrir outro tópico mas, já que estou trabalhando nas configurações do INI, lá vai: 1 - Tenho notado que as configurações do arquivo INI da lib , às vezes não salvas informações. Notei que, se declarar o constructor, por exemplo, apenas da AcbrPosPrinter, no arquivo INI só são criadas as seções e chaves correspondentes à PosPrinter. Porém, para que todas as chaves do meu interesse sejam criadas, eu declaro vários contructors: AcbrNFe, PosPrinter, ETQ, etc.... Aí é que tenho notado que algumas informações são salvas e outras não no INI. Uma vez que tenho tratado as configurações numa única tela, pelo que parece ao executar o ConfigGravaValor() informações estão sendo sobrescritas. 2 - A LIB insiste em trabalhar com um INI na raiz do EXE, mesmo eu informando o path para inicialização. No path que informo eu já tenho um INI com todas as seções e chaves, porém a lib cria um novo na raiz do EXE. SerialBaud.cs SerialDataBits.cs
  24. Olá pessoa, Bom dia! Na AcbrLib Core serão criados enumeradores para as velocidades e databits da seção SERIAL? Ou deveremos informar os valores?
×
×
  • 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.