Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

Olá, 

Gostaria de saber se há porte da "ACBRSAT32.dll" para importar as assinaturas via C#?

Exemplo:

[DllImport("ACBRSAT32.dll")]
public static extern string Inicializar()

string ret = ACBrSAT32.Inicializar();

Grato.

  • Membros Pro
Postado

Olá,

 

Baixei o arquivo Cdecl.zip, com a ACBrSAT32.dll versão 0.0.1.0 

ACBr\Projetos\ACBrLib\Demos\Sat\C#\Demo\ACBrLibSat.Demo\bin\Debug\ACBrSAT32.dll 

var ret = ACBrSat.SAT_Inicializar("".ToUTF8(), "".ToUTF8());  

System.DllNotFoundException: 'Não é possível carregar a DLL 'ACBrSAT32.dll': Não foi possível encontrar o módulo especificado. (Exceção de HRESULT: 0x8007007E)'

obs: como gerar as dll?

private const string ACBr = "ACBrSAT32.dll";

private const string ACBr = "ACBrETQ32.dll";

private const string ACBr = "ACBrMail32.dll";

private const string ACBr = "ACBrPosPrinter32.dll";

 

 

Postado

As dll precisa estar em algum Path do windows ou no mesmo local do executavel no caso na pasta "bin\debug" ou "bin\release", também é necessário as dll do OpenSSL e LibXml2 você encontra as mesma no SVN em "DLLs\LibXml2\x86" e "DLLs\OpenSSL\1.0.2.13\x86", a dll não podem ficar junto do download pois as dll de openssl e libxml2 tem o mesmo nome tanto em x64 como em x86.

Para compilar as dlls vocês precisa.

  1. Baixar os fontes do SVN.
  2. Instalar o Lazarus.
  3. Instalar os componentes ACBr no Lazarus.
  4. Abrir o projeto da lib que você deseja que estarão na pasta "Projetos\ACBrLib\Fontes" dos fontes.

 

  • Membros Pro
Postado

Olá,

Copiei as dll´s acima e ao ativar o sistema mostrou o a tela e mostrou o erro:

// Inicializando a dll
var ret = ACBrSat.SAT_Inicializar("ACBrLib.ini".ToUTF8(), "123456".ToUTF8());
System.ApplicationException: 'Chave não existe no arquivo de configuração'

obs: ACBrLib.ini criado com sucesso!

  • Membros Pro
Postado

Olá,.

Eu estudei os fontes em pascal e em C#, já uso ACBrMonitorPlus, no intuído de apreender e ajudar!

Mais eu queria tirar algumas duvidas!

1) Para eu ter acesso as dll´s (ACBrSAT32.dll, ACBrETQ32.dll", ACBrMail32.dll, ACBrPosPrinter32.dll), é necessário compilar projeto em pascal?

2) Não exite um ACBrStarKit_C# _1.0.0 com "DLLs\LibXml2\x86" e "DLLs\OpenSSL\1.0.2.13\x86" e mais as dll´s acima, com todo ambiente preparado para desenvolvimento com manual?

3) Será possível simplificar o desenvolvimento como no estilo pascal? 

Exemplo:

 ACBrSAT1.EnviarDadosVenda( mVendaEnviar.Text );

if (ACBrSAT1.Resposta.codigoDeRetorno == 6000) {...}

Grato.

Postado
  1. Não será preciso vai ter os downloads disponíveis no fórum igual temos do ACBrMonitor.
  2. Podemos adicionar as mesma para Download sem problema.
  3. No demo de alto nível tem uma simplificação do uso da lib usando classe em vez de chamada direta da dll, mas o retorno ainda fico no estilo ini do monitor para o pessoal que já trabalha com ele ter um acesso melhor, lembrando que o retorno pode ser em xml, ini e json.
  • Curtir 1

 

  • Membros Pro
Postado

Obrigado pelo pronto retorno,

Pelo que entendi por suas respostas o projeto está em homologação!

Quanto tempo você acredita ter uma biblioteca para podermos colocar em Produção?

  • Membros Pro
Postado

Olá,

Framework simplificado, exemplo SAT:

namespace ACBrFrameWork
{
    public class ACBrSAT32
    {         
        #region Comandos

        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_Ativar(string CNPJ, string cUF);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_Inicializar();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_Desinicializar();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_AssociarAssinatura;
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_AssociarAssinatura(string CNPJ, string Assinatura);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_Bloquear();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_Desbloquear();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_TrocarCodigoAtivacao(string codigoDeAtivacaoOuEmergencia, string opcao, string novoCodigo);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_ConsultarSAT();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_ConsultarStatusOperacional();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_ConsultarNumeroSessao(string NumeroDeSessao);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_AtualizaSoftware();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_ComunicarCertificadoICPBRASIL();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_ExtrairLogs(string CaminhoArquivo);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_CriarCFe(string ArqINI);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_CriarEnviarCFe(string ArqINI);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_EnviarCFe(string ArqXML);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_CancelarCFe(string ArqXMLVenda);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_ImprimirExtratoVenda(string ArqXMLVenda, string NomeImpressora);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_ImprimirExtratoResumido(string ArqXMLVenda, string NomeImpressora);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_ImprimirExtratoCancelamento(string ArqXMLVenda, string ArqXMLCancelamento, string NomeImpressora);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_GerarImpressaoFiscalMFe(string cArqXMLVenda, string cNomeImpressora);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_TesteFimAFim(string ArqXMLVenda);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_GerarPDFExtratoVenda(string ArqXMLVenda, string NomeArquivo);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_SetLogomarca(string nLogo)

        #endregion

        #region Retornos

        [DllImport("ACBrFrameWork32.dll")]
        public static extern string SAT_Arquivo();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern string SAT_CodigoDeRetorno();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern string SAT_NumeroSessao();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern string SAT_ChaveAcesso();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern string SAT_ArquivoXML();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern bool SAT_VendaAprovada();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern bool SAT_VendaCancelada();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern bool SAT_TesteFimConcluido();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern bool SAT_StatusOperacionalConcluido();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern bool SAT_AtivacaoConcluido();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern string SAT_CodigoDeErro();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern string SAT_Mensagem();

        #endregion 

        #region TratarRetorno

        public static string TratarRetorno(int ret) {}

        #endregion

        #region Configuração

        [DllImport("ACBrFrameWork32.dll")]

        public static extern int SAT_ConfigLoad(string ArqINI);
        public static extern int SAT_ConfigSave(string ArqINI);

        #endregion

    }
}

Grato a Equipe ACBr

 

  • Membros Pro
Postado

Olá,

O modelo acima era apenas um ideia.

Eu baixei o seu novo demostrativo Enviado Ontem às 16:06

Mais o ACBrLib.Core, está apresentando erro para mim!

Pode auxiliar por favor!

 

projeto.PNG

  • Membros Pro
Postado

Olá Rafael,

> Restaurar Pacotes NuGet

Todos os pacotes já estão instalados e não há nada para ser restaurado.
Tempo Decorrido: 00:00:00.0658963
========== Concluído ==========

1>C:\Users\marco\Desktop\ACBr_C#\DemoCSharpSat\Shared\ACBrLib.Core\ACBrLib.Core.csproj(92,5): error : Este projeto faz referência a pacotes do NuGet que não estão presentes neste computador. Use a Restauração de Pacotes do NuGet para baixá-los.  Para obter mais informações, consulte http://go.microsoft.com/fwlink/?LinkID=322105. O arquivo ausente é ..\..\PosPrinter\Demos\packages\Fody.2.0.0\build\portable-net+sl+win+wpa+wp\Fody.targets.

obs: Comando executado Restaurar Pacotes NuGet, mais não encontra o pacote PosPrinter.

  • Membros Pro
Postado

 Baixei o exemplo e não compilou!

Fiz novamente procedimento de restaurar a NuGet

Todos os pacotes já estão instalados e não há nada para ser restaurado.
Tempo Decorrido: 00:00:00.0575676
========== Concluído ==========

Erro:   Este projeto faz referência a pacotes do NuGet que não estão presentes neste computador. Use a Restauração de Pacotes do NuGet para baixá-los.  Para obter mais informações, consulte http://go.microsoft.com/fwlink/?LinkID=322105. O arquivo ausente é ..\..\PosPrinter\Demos\packages\Fody.2.0.0\build\portable-net+sl+win+wpa+wp\Fody.targets.    ACBrLib.Core   

Procedimentos:

> Para compilar o mesmo basta baixar a versão CDECL da lib e colocar em Import\ACBrLibPosPrinter\Resources.

> ACBrSAT32.dll (copiado para pasta)

obs: Mesmo aviso como na lib anterior!

 


 

  • Membros Pro
Postado (editado)

Bom dia Rafael,

> Demo e Classe de Alto de Nivel em C# 20181211

>: Esta biblioteca necessita das dlls do OpenSSL e LibXml2 que se encontram no repositório SVN em "DLLs\LibXml2" e ""DLLs\OpenSSL\1.0.2.13\".

> ACBrSAT32.dll -> StdCall

>>> Perfeito compilou ACBrLibSat -

obs:    Como informar os parâmetros, para start da lib? ->  public ACBrSat(string eArqConfig = "", string eChaveCrypt = "") :

ps: Existe um manual ?

Grato.

sat_init.PNG

Editado por OFF-TI
anexo:Imagem configuração exceção
  • Membros Pro
Postado

Olá,

Rafael, pesquisando o fonte eu notei o seguinte:

 ACBrMonitorPlus 1.2.0.25

Parâmetro que está funcionando normalmente com SAT:

>>> satDinamico_stdcal

ACBrSAT.Inicializado
NumeroSessao: 373279 - Comando: ConsultarStatusOperacional
NumeroSessao: 373279 - Resposta:373279|10000|Resposta com sucesso|||900009261|DHCP|192.168.000.021|70:51:16:24:61:92|255.255.255.000|192.168.000.003|008.008.008.008|008.008.004.004|CONECTADO|ALTO|4 GB|14 MB|20181212083612|02.02.00|00.07|35181208723218000186599000092610054943431246|35180908723218000186599000092610053604998019|35181208723218000186599000092610054943431246|20180914105654|20181212080336|20160824|20210824|0

namespace ACBrLib.Sat

private class Delegates
{
   [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
    public delegate int SAT_Inicializar(string eArqConfig, string eChaveCrypt);
}

Troquei a ACBrSAT32.dll para versão ->  Cdecl

> Criou automaticamente o arquivo de ACBrLib.ini 

obs: CheckResult igual -3  (System.StackOverflowException: 'Exception of type 'System.StackOverflowException' was thrown.')

Grato.

sat_erro_3.PNG

  • Fundadores
Postado

Uma coisa é a convenção de chamada da DLL do equipamento SAT e outra a do ACBrLibSAT

A versão da ACBrLibSAT dependerá de como a sua linguagem tem mais aptidão para instância-la... Creio que a classe em alto nível, desenvolvida pelo @Rafael Dias, usa por padrão CDECL...

O ACBrLibSAT, quando inicializada, fará a carga da DLL do Fabricante, para que a mesma fale com o SAT... A configuração de ACBrSAT.Modelo, diz respeito a como a DLL do fabricante foi construida... a grande maioria, usa satDinamico_stdcal , mas alguns como a Gertec e o Emulador de SP usam satDinamico_cdecl .. Usar o modelo errado, pode causar A.V.

  • Curtir 2
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.

  • Membros Pro
Postado (editado)

Bom dia Daniel,

Segue a configuração:

Uso: Tanca S@T SDK, versão 2.0.0.0

em anexo arquivo log e ACBrLib.ini (criado automáticamente)

17/12/18 08:52:58:816 - Destravar
17/12/18 08:52:58:822 -    SetRetorno(0, )
17/12/18 08:52:58:829 - LIB_ConfigLerValor(SAT, NomeDLL)
17/12/18 08:52:58:834 -    Valor:, len:0
17/12/18 08:52:58:839 -    SetRetorno(0, )
17/12/18 08:52:58:845 - LIB_ConfigLerValor(SAT, Modelo)
17/12/18 08:52:58:850 -    Valor:0, len:1
17/12/18 08:52:58:855 -    SetRetorno(0, 0)
17/12/18 08:52:58:860 - LIB_ConfigLerValor(SAT, CodigoDeAtivacao)
17/12/18 08:52:58:865 -    Valor:, len:0
17/12/18 08:52:58:870 -    SetRetorno(0, )
17/12/18 08:52:58:875 - LIB_ConfigLerValor(SATConfig, infCFe_versaoDadosEnt)
17/12/18 08:52:58:880 -    Valor:0,07, len:4
17/12/18 08:52:58:885 -    SetRetorno(0, 0,07)
17/12/18 08:52:58:890 - LIB_ConfigLerValor(SATConfig, PaginaDeCodigo)
17/12/18 08:52:58:895 -    Valor:0, len:1
17/12/18 08:52:58:899 -    SetRetorno(0, 0)
17/12/18 08:52:58:904 - LIB_ConfigLerValor(SAT, SignAC)
17/12/18 08:52:58:908 -    Valor:, len:0
17/12/18 08:52:58:913 -    SetRetorno(0, )
17/12/18 08:52:58:919 - LIB_ConfigLerValor(SATConfigArquivos, SalvarCFe)
17/12/18 08:52:58:923 -    Valor:0, len:1
17/12/18 08:52:58:928 -    SetRetorno(0, 0)
17/12/18 08:52:58:940 - LIB_ConfigLerValor(SATConfigArquivos, SalvarEnvio)
17/12/18 08:52:58:945 -    Valor:0, len:1
17/12/18 08:52:58:952 -    SetRetorno(0, 0)
17/12/18 08:52:58:959 - LIB_ConfigLerValor(SATConfigArquivos, SalvarCFeCanc)
17/12/18 08:52:58:966 -    Valor:0, len:1
17/12/18 08:52:58:972 -    SetRetorno(0, 0)
17/12/18 08:52:58:979 - LIB_ConfigLerValor(SATConfigArquivos, SepararPorCNPJ)
17/12/18 08:52:58:984 -    Valor:0, len:1
17/12/18 08:52:58:990 -    SetRetorno(0, 0)
17/12/18 08:52:58:997 - LIB_ConfigLerValor(SATConfigArquivos, SepararPorDia)
17/12/18 08:52:59:003 -    Valor:0, len:1
17/12/18 08:52:59:008 -    SetRetorno(0, 0)
17/12/18 08:52:59:017 - LIB_ConfigLerValor(Extrato, Tipo)
17/12/18 08:52:59:022 -    Valor:0, len:1
17/12/18 08:52:59:027 -    SetRetorno(0, 0)
17/12/18 08:52:59:033 - LIB_ConfigLerValor(Extrato, NumCopias)
17/12/18 08:52:59:038 -    Valor:1, len:1
17/12/18 08:52:59:043 -    SetRetorno(0, 1)
17/12/18 08:52:59:047 - LIB_ConfigLerValor(Extrato, SoftwareHouse)
17/12/18 08:52:59:053 -    SetRetorno(-3, Chave não existe no arquivo de configuração)

===================================================================================================

17/12/18 08:52:59:060 - LIB_UltimoRetorno
17/12/18 08:52:59:065 -    Codigo:-3, Mensagem:Chave n[195][163]o existe no arquivo de configura[195][167][195][163]o

===================================================================================================

obs: S@T TANCA SDK. compatível com a versão ACBrMonitorPLUS 1.2.025

Qualquer coisa me prontifico caso necessário a disponibilizar o terminal para remoto e testes!

ps: Ao mostrar a janela de configuração já mostra a mensagem, será que tenho que configurar editando o arquivo ACBrLib.ini?

Grato.

sat-ini-log.PNG

Editado por OFF-TI
observações
  • Fundadores
Postado
Em 17/12/2018 at 09:02, OFF-TI disse:

17/12/18 08:52:59:060 - LIB_UltimoRetorno
17/12/18 08:52:59:065 -    Codigo:-3, Mensagem:Chave n[195][163]o existe no arquivo de configura[195][167][195][163]o

Faltou anexar o INI de configuração.. o erro acima, é porque essa chave não existe no INI

Você conseguiu rodar o Demo na sua linguagem ? é bem mais simples iniciar por ele..

  • Curtir 1
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.

  • Membros Pro
Postado

Bom dia Pessoal.

Grato pelo pronto atendimento:

Sim, muito fácil a Equipe ACBr realmente é muito qualificada e tenho certeza que será um sucesso está nova fase!

Segue em anexo arquivo log e ini e demais telas para analise;

obs: Abriu o form de configuração, mais não pode gravar os parametros!!! 

Grato.

 

SAT_DLL_BUG2.PNG

sat_dll_bug1.PNG

ACBrLib.ini

ACBrLibSAT-20181220.log

Postado

Olha eu montei uma VM baixei o demo do Site, copie as dll do ACBrSat (Cdecl) e as dll do OpenSSL e LibXml2, e não consegui emular este problema.

Obs: todas as dll foram x86 pois o demo é 32 bits.

 

  • Curtir 1

 

  • Membros Pro
Postado (editado)

Bom dia Rafael.

Apaguei a pasta e montei novamente ambiente 32bit.

Eu baixei o demo do Site, copie ACBrSAT32.dll do ACBrSat (Cdecl) e as dll do OpenSSL e LibXml2. (SVN UpDate)

> S@T SDK TANCA (ok)

> ACBrLibSAT-0.1.0.0 (Cdecl)

> C:\Windows\system32>ver

Microsoft Windows [versão 10.0.17763.195]
(c) 2018 Microsoft Corporation. Todos os direitos reservados.

>>> O mesmo problema:

MDA loaderLock

MDA (Assistente de Depuração Gerenciado) de loaderLock detecta tentativas de executar código gerenciado em um thread que mantém o bloqueio do carregador do sistema operacional Microsoft Windows. Qualquer execução desse tipo é inválida porque pode levar a deadlocks e ao uso de DLLs antes de elas terem sido inicializadas pelo carregador do sistema operacional.

Grato.

SAT_ONLINE.PNG

ACBrLib.ini

ACBrLibSAT-20181221.log

Editado por OFF-TI
  • Fundadores
Postado

Eu nunca usei o Visual Studio... mas resolvi baixar uma versão communit e testar...

Conseguiu Debugar e rodar a aplicação...

 

image.png

 

Senti falta de botões importantes como o "Consultar SAT" e "Consultar Status Operacional"... e já comuniquei isso ao @Rafael Dias...

Usei o emulador SAT do SEFAZ e consegui comunicação e envio de um CFe...

 

Nossa suspeita é que há alguma mistura de DLLs 32 e 64 em sua máquina... por via das dúvidas, copie as DLLs APENAS na mesma pasta do .EXE, pois lá é o 1o Local que o Windows irá procurar

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.

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