Jump to content

dev botao

MultiThread ponteiro


Go to solution Solved by Thiago Henrique Gaspar,
  • Este tópico foi criado há 456 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Posted

Olá pessoal, tudo bem?

Estou com um problema ao implementar o AcBr Lib com MultiThread, estou conseguindo chamar o Inicializar, mas quando chamo o Finalizar não estou conseguindo.

 

Chamo o Initializar passando como argumento a ref do ponteiro, string do arquivo de conf, e a senha, segue:

f'{prefix}_Inicializar': Signature([POINTER(c_int), c_char_p, c_char_p]),
retorno = self._invocar(metodo)(byref(self.pointeiro), self._b(arq_config), self._b(chave_crypt))

Está dando certo esta parte, esta retornando 0, porém quando eu chamo o finalizar não estou conseguindo, estou chamando da seguinte forma.

f'{prefix}_Finalizar': Signature([POINTER(c_int)]),
retorno = self._invocar(metodo)(byref(self.pointeiro))

 

No caso estou passando a referencia como primeiro argumento também, não sei se está o certo, tentei passar a variavel, a referencia, nenhuma forma deu certo, alguém poderia dar uma luz?

 

 

  • Membros Pro
Posted
1 minuto atrás, Renato Rubinho disse:

Boa tarde,

Qual é a sua linguagem?

Verificou como foi feito nos programas de exemplo?

Está levantando alguns exceção?

Obrigado pelo retorno Renato.

Estou utilizando Python, estou utilizando um código em Node como base, mas não tenho muito conhecimento também de Node, estou tentando replicar em Python.

  • Membros Pro
Posted
7 minutos atrás, Renato Rubinho disse:

Verifique se o ponteiro foi alimentado, se não está nulo.

Não conheço python, mas acredito que não precise do byref ao passar o ponteiro para finalizar.

no Inicializar ele aceita o argumento que eu passo, mas no finalizar ele não aceita, crasha o sistema.

Sabe me dizer como eu tenho que passar o ponteiro no initializar e como eu tenho que passar no finalizar?

  • Consultores
Posted
1 hora atrás, Thiago Henrique Gaspar disse:

Chamo o Initializar passando como argumento a ref do ponteiro, string do arquivo de conf, e a senha, segue:

f'{prefix}_Inicializar': Signature([POINTER(c_int), c_char_p, c_char_p]),
retorno = self._invocar(metodo)(byref(self.pointeiro), self._b(arq_config), self._b(chave_crypt))

No inicializar você vai passar uma variável que vai receber uma referência de ponteiro. Essa referência você vai utilizar em todas as próximas chamadas "dessa Thread".

1 hora atrás, Thiago Henrique Gaspar disse:

Estou utilizando Python, estou utilizando um código em Node como base, mas não tenho muito conhecimento também de Node

Dá uma olhada nesse código em python criado por usuários ACBr para utilizar a ACBrLibCEP:

https://github.com/base4sistemas/acbrlib-python/

Pode ajudar você a entender com funciona.

  • Like 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Membros Pro
Posted
1 minuto atrás, EMBarbosa disse:

No inicializar você vai passar uma variável que vai receber uma referência de ponteiro. Essa referência você vai utilizar em todas as próximas chamadas "dessa Thread".

Dá uma olhada nesse código em python criado por usuários ACBr para utilizar a ACBrLibCEP:

https://github.com/base4sistemas/acbrlib-python/

Pode ajudar você a entender com funciona.

Estou levando como base esse repositório, porém ele utiliza ai SingleThread,o SingleThread funciona normal, estou me batendo para rodar o MultiThread.

Estou fazendo o seguinte exemplo:

self.pointeiro = c_int()
print("INICIALIZAR", self.pointeiro)
retorno = arq.CEP_Inicializar(byref(self.pointeiro), self._b(arq_config), self._b(chave_crypt))
print("FINALIZAR",  self.pointeiro)
retorno = arq.CEP_Finalizar(self.pointeiro)
 

está me retornando o seguinte:

INICIALIZAR c_int(0)
FINALIZAR c_int(281032000)

Em seguida da crash na linha que chama o Finalizar. o Inicializar está dando certo, passando a referencia do ponteiro para ele, porém quando eu passo essa mesma variavel para o finalizar, é que ele não consegue utilizar, estou fazendo certo desta forma?

 

 

  • Membros Pro
  • Solution
Posted
8 minutos atrás, Thiago Henrique Gaspar disse:

Estou levando como base esse repositório, porém ele utiliza ai SingleThread,o SingleThread funciona normal, estou me batendo para rodar o MultiThread.

Estou fazendo o seguinte exemplo:

self.pointeiro = c_int()
print("INICIALIZAR", self.pointeiro)
retorno = arq.CEP_Inicializar(byref(self.pointeiro), self._b(arq_config), self._b(chave_crypt))
print("FINALIZAR",  self.pointeiro)
retorno = arq.CEP_Finalizar(self.pointeiro)
 

está me retornando o seguinte:

INICIALIZAR c_int(0)
FINALIZAR c_int(281032000)

Em seguida da crash na linha que chama o Finalizar. o Inicializar está dando certo, passando a referencia do ponteiro para ele, porém quando eu passo essa mesma variavel para o finalizar, é que ele não consegue utilizar, estou fazendo certo desta forma?

 

 

Segue código para teste.

 

teste.py

  • Consultores
Posted
1 hora atrás, Thiago Henrique Gaspar disse:

estou fazendo certo desta forma?

Aparentemente sim.

1 hora atrás, Thiago Henrique Gaspar disse:

Segue código para teste.

Como disse, não conheço python, mas segue uma sugestão que vi que talvez possa ser um problema

acbr_lib.NFE_Finalizar.argtypes = (c_int,)

Nesta declaração você colocou uma vírgula a mais

 

Tente no nosso canal do Discord, específico da lib + python, que talvez você consiga alguma dica.

https://discord.com/channels/798697718800318484/890605241668612126

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.