Date
1 - 6 of 6
DLL
Carlos Mollero
Boa tarde a todos,
Estamos iniciando uma integração com uma DLL que irá se comunicar via TCP com uma datadora e estou com algumas dúvidas com relação a como preceder, já que não temos o conhecimento de .NET (em que foi feito a dll). O dev que criou a dll me passou este exemplo de uso da dll, más em .NET. Classe GatewaySocketTPC.Commands Criando a instância de um objeto desta classe. meuObjeto = new GatewaySocketTPC.Commands(string IP, int Port) = Abre a conexão com o equipamento retorno = meuobjeto.SendMessage(string messageToSend) = Envia a mensagem ao equipamento e recebe o retorno meuobjeto.Dispose() = Fecha a conexão; Não estou entendendo.. ele falou que tenho que instanciar a DLL passando o IP, PORTA e com isso estará em colocando a classe em memória e depois seria apenas enviar os comandos SendMessage sendo um json com o comando. Alguém poderia dar uma mão para entender como proceder no XPA, inicialmente iria tentar o comando abaixo, seguindo como exemplo outras integrações que temos com DLL, más acredito que não seja isso. CallDLL('%WorkingDir%'&'GatewaySocketTPC.Commands' , 'A4A1' , IP , PORTA, Trim(json), '') Desde já agradeço qualquer ajuda. Obrigado. -- Carlos Mollero. -- Este email foi escaneado pelo Avast antivírus. https://www.avast.com/antivirus
|
||
|
||
Carlos Mollero
Bom dia,
toggle quoted messageShow quoted text
Sobre esta integração com a DLL "GatewaySocketTCP.dll" (email abaixo), teria a necessidade de se seguir estes passos/exemplos para o uso junto ao XPA ? http://blog.magicsoftware.com.br/integrando-unipaas-e-com-net/ Obrigado. Em 08/02/2022 16:57, Carlos Mollero via groups.io escreveu:
Boa tarde a todos,-- Carlos Mollero.
|
||
|
||
Se o módulo fornecido é .NET, não poderá usar CALLDLL().
Não há necessidade de usar a interface 'COM', exceto se quiser integrar com uniPaaS/eDev9 também (além do xpa). Mas convém fazer a integração num assembly (DLL) .NET á parte, com Visual Studio, e referenciá-lo no CRR (SHIFT+F7) do xpa. Você tem 2 opções: 1. Conectar, transmitir e descontar todas as vezes: using( meuObjeto = new GatewaySocketTPC.Commands( IP, Port ) ) { meuobjeto.SendMessage( messageToSend ) } 2. Ou criar um objeto estático para uma instância 'singleton' do "meuObjeto ", e com isso mantê-lo sempre aberto A opção '1' é mais simples, mas menos performática, e caso você coloque esse código num .EXE ao invés de .DLL, pode até usar com Magic8, Magic7 ... De qqer modo, você terá de realizar programação .NET ( C# ou VB.NET ) nesta integração. []s --
|
||
|
||
Carlos Mollero
Bom dia Fred,
Só para entender, pois ainda poderei solicitar ao dev da DLL alterações necessárias. Hoje utilizamos uma DLL para o envio de emails que foi disponibilizada no blog MagicBrasil a bastante tempo ( http://blog.magicsoftware.com.br/integrando-unipaas-e-com-net/ ) e conforme o post existem alguma instruções a serem feitas no código .NET para que possamos registrar a mesma no GAC do Windows para poder utilizar "invoke COM". Neste caso, pode ser feito desta forma ?, podemos solicitar ao dev da dll para seguir as instruções do post e gerar um assembly e então podemos registrar ela em cada maquina que utilizará ?. Desde já agradeço. Obrigado. Em 09/02/2022 08:06, Manoel Frederico
escreveu:
Se o módulo fornecido é .NET, não poderá usar CALLDLL(). -- Carlos Mollero.
|
||
|
||
As instruções de "Invoke COM" são para o caso de querer integrar também com uniPaaS/eDev9 ...
Pode fazer como dito no Blog, sem problemas.... Mas se for apenas para o 'xpa', a DLL dele já está pronta. --
|
||
|
||
Carlos Mollero
Fred,
Eu poderia usar como este exemplo abaixo para fazer esta chamada direta a dll que já está pronta ?, assim acredito que seria mais fácil a intervenção do dev C# direto no Magic XPA passando os parâmetros necessários. Este é o programa de exemplo EL09 do projeto Online Samples. using System; using System.Runtime.InteropServices; public static class Snippet { public static System.Double func() { return MessageBoxA(IntPtr.Zero, "This is an example of a DLL Call", "Example", 3); } [DllImport("user32.dll", CharSet=CharSet.Ansi)] public static extern int MessageBoxA(IntPtr hWnd, String text, String caption, int options); } Em 09/02/2022 09:14, Manoel Frederico
escreveu:
As instruções de "Invoke COM" são para o caso de querer integrar também com uniPaaS/eDev9 ... -- Carlos Mollero.
|
||
|