Membros Pro Thiago Henrique Gaspar Postado 24 Janeiro Membros Pro Compartilhar Postado 24 Janeiro 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? Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Renato Rubinho Postado 24 Janeiro Consultores Compartilhar Postado 24 Janeiro Boa tarde, Qual é a sua linguagem? Verificou como foi feito nos programas de exemplo? Está levantando alguns exceção? Link para o comentário Compartilhar em outros sites More sharing options...
Membros Pro Thiago Henrique Gaspar Postado 24 Janeiro Autor Membros Pro Compartilhar Postado 24 Janeiro 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. Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Renato Rubinho Postado 24 Janeiro Consultores Compartilhar Postado 24 Janeiro 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. Link para o comentário Compartilhar em outros sites More sharing options...
Membros Pro Thiago Henrique Gaspar Postado 24 Janeiro Autor Membros Pro Compartilhar Postado 24 Janeiro 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? Link para o comentário Compartilhar em outros sites More sharing options...
Consultores EMBarbosa Postado 24 Janeiro Consultores Compartilhar Postado 24 Janeiro 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. 1 []'s Elton Profissionalize o ACBr na sua empresa, conheça o ACBr Pro. (15) 2105-0750 (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. Link para o comentário Compartilhar em outros sites More sharing options...
Membros Pro Thiago Henrique Gaspar Postado 24 Janeiro Autor Membros Pro Compartilhar Postado 24 Janeiro 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? Link para o comentário Compartilhar em outros sites More sharing options...
Membros Pro Solution Thiago Henrique Gaspar Postado 24 Janeiro Autor Membros Pro Solution Compartilhar Postado 24 Janeiro 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 Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Renato Rubinho Postado 24 Janeiro Consultores Compartilhar Postado 24 Janeiro 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 Link para o comentário Compartilhar em outros sites More sharing options...
Recommended Posts