Ir para conteúdo
  • Cadastre-se

ricaalm

Membros
  • Total de ítens

    4
  • Registro em

  • Última visita

Últimos Visitantes

848 visualizações

ricaalm's Achievements

Rookie

Rookie (2/14)

  • First Post
  • Week One Done
  • One Month Later
  • One Year In
  • Conversation Starter

Recent Badges

1

Reputação

1

Community Answers

  1. ricaalm

    Função Ativarsat

    Amigos Uma dúvida que tenho é com relação a função AtivarSAT. Pelo que verifiquei na documentação do SEFAZ, esta função não será de responsabilidade do meu AC, mas sim será disponibilizada pelo fabricando do S@T. Desta forma não preciso me preocupar em implementar esta função em meu AC. Meu intendimento esta correto ?
  2. Boa noite engenheiros Esta noite vou finalmente conseguir dormir porque encontrei a solução. O problema é que a SAT.DLL foi construída em C e o tratamento de tamanhos e endereçamento de variáveis do C é diferente daquele utilizado pelo .NET. Por isso é necessário obter o retorno da chamada da função através do endereçamento de memória da variável e não da variável propriamente dita. Para isto é preciso utilizar um ponteiro. Fiz da seguinte forma caso alguém precise? Vinculação da DLL dentro da classe pelo PInvoke: <DllImport("c:\SAT\SAT.dll", CallingConvention:=CallingConvention.Cdecl)> _ Public Function ConsultarSAT(ByVal nSessionRandom As Int32) As IntPtr End Function Chamada da função e leitura do resultado na memória: Dim cmdLineStr As IntPtr = ConsultarSAT(Sessao) Dim strResposta As String = Marshal.PtrToStringAnsi(cmdLineStr) MsgBox(strResposta) Agora esta funfando legal e estou indo em frente até o próximo buraco, obrigado a todos que tentaram ajudar.
  3. Pois é Rafael, eu já tentei definir desta forma também mas dá o mesmo erro: <DllImport("C:\SAT\SAT.DLL", CallingConvention:=CallingConvention.StdCall)> _ Public Function ConsultarSAT(ByRef numeroSessao As Integer) As String End Function
  4. Bom dia engenheiros Peço desculpa caso esteja postando em forum errado. Estou iniciando um projeto de um aplicativo comercial que ira trabalhar com o S@T. Já há alguns dias estou queimando a pestana na tentativa de comunicar meu aplicativo com a SAT.DLL disponibilizada para testes pelo SEFAZ. Meu aplicativo esta sendo desenvolvido em VB.NET. Ao acionar a DLL recebo o seguinte erro: "Uma chamada para a função PInvoke 'TesteAcessoSAT!TesteAcessoSAT.Module1::ConsultarSAT' desbalanceou a pilha. Isso ocorreu provavelmente porque a assinatura gerenciada de PInvoke não corresponde à assinatura de destino não gerenciada. Verifique se a convenção e o parâmetro de chamada da assinatura de PInvoke são iguais aos da assinatura não gerenciada de destino." O código que fiz para teste é bastante simples, criei um modulo e defini a DLL conforme abaixo: Module SAT Public Declare Ansi Function myConsultarSAT Lib "C:\SAT\SAT.DLL" Alias "ConsultarSAT" (ByVal numeroSessao As Integer) As String End Module Em seguida, criei um código para acessar esta DLL como segue: Public Sub Main() Dim strRetorno As String Dim Randomizer As New Random Dim Sessao As Integer Sessao = Randomizer.Next(1, 1000000) Try strRetorno = myConsultarSAT(Sessao) Catch ex As Exception MsgBox(ex.Message) End Try End Sub Ao executar verifico que a chamada até é feita pois aparece no log do emulador do SEFAZ, mas o erro que informei é demonstrado na tela e nenhum valor retorna para meu aplicativo. alguém já passou por isso ou tem alguma dica ? Já procurei em diversos forums e sites especializados e atá agora não encontrei nada que pudesse me ajudar. Fico imensamente grato caso alguém possa me auxiliar.
×
×
  • 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.