Ir para conteúdo
  • Cadastre-se

dev botao

[ACBrLib.Core] - SERIAL - enumeradores de velocidade e databits


Nelson  A Sousa
Ver Solução Respondido por Rafael Dias,
  • Este tópico foi criado há 1466 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

16 horas atrás, Rafael Dias disse:

foram enviadas novas versões da dll favor testar com elas.

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

Link para o comentário
Compartilhar em outros sites

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?

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores
44 minutos atrás, Nelson A Sousa disse:

Não seria melhor se evitar usar arquivos de configuração na raiz do EXE?

Não é para ser assim... por isso que estamos questionando... mas estamos com alguma dificuldade de reproduzir o problema...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

29 minutos atrás, Daniel Simoes disse:

Não é para ser assim... por isso que estamos questionando... mas estamos com alguma dificuldade de reproduzir o problema...

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

Editado por Nelson A Sousa
Link para o comentário
Compartilhar em outros sites

 

1 hora atrás, Rafael Dias disse:

Mandei uma atualização das classes em c# favor usar as mesma, elas resolvem seu problema.

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"));

 

Link para o comentário
Compartilhar em outros sites

Resolveu sim fiz vários testes aqui e não tive problemas, verifique se atualizou realmente as classes.

E pela sua descrição você não atualizou a classe do ACBrLib por isso esta com este erro, pois se estivesse atualizado teria percebido que foi removido o valor padrão das função de salvamento e leitura do ini, o que estava causando erro anteriormente.

  • Curtir 1

 

Link para o comentário
Compartilhar em outros sites

33 minutos atrás, Rafael Dias disse:

Resolveu sim fiz vários testes aqui e não tive problemas, verifique se atualizou realmente as classes.

E pela sua descrição você não atualizou a classe do ACBrLib por isso esta com este erro, pois se estivesse atualizado teria percebido que foi removido o valor padrão das função de salvamento e leitura do ini, o que estava causando erro anteriormente.

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.

Link para o comentário
Compartilhar em outros sites

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().

Editado por Nelson A Sousa
Link para o comentário
Compartilhar em outros sites

7 horas atrás, Rafael Dias disse:

poste um ss da classe, especificamente dos métodos gravar e ler, pois não é possível isso esta ocorrendo, você deve ter alguma alteração local ai.

Olá @Rafael Dias,

Bom dia!

Muito obrigado pela atenção!

Segue anexo uma cópia completa:

FrmMain.cs ACBrNFe.cs

Link para o comentário
Compartilhar em outros sites

38 minutos atrás, Rafael Dias disse:

Arquivos enviados ao svn.

Obrigado @Rafael Dias

Quanto ao erro de salvamento do arquivo AcbrLib.INI eu descobri onde está o erro.

Está na declaração/utilização dos métodos ACBrNFe.ConfigLer() e ACBrNFe.ConfigGravar():

Para que a Lib respeite a pasta da inicialização os métodos devem ser utilizados sem o parâmetro, ou com o mesmo parâmetro da inicialização.

 

No demo existe um método intermediário que está passando um parâmetro diferente:

LoadConfig(string file = "ACBrLib.ini") <--- Viu?

Passando somente o nome do arquivo INI assume a pasta raiz do EXE.

Dá uma conferida lá no demo pra vc ver.

Acredito que o tópico possa ser encerrado...obrigado a todos!!!

 

 

 

Editado por Nelson A Sousa
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1466 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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 conta

Entrar

Já tem uma conta? Faça o login.

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