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,

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,

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


Manoel Frederico
 

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
--
Magic Manoel Frederico da Silva (Fred)
Evangelista MAGIC Magic Software Brasil
MAGIC Evangelist 
Magic Software Brasil
NOVO Tel: +55-11-3048-0700  | Atendimento 24h http://suporte.magicsoftware.com.br/
suporte@... | www.magicsoftware.com.br | FacebookTwitterLinkedInYoutubeBlog


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().

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
--
Magic Manoel Frederico da Silva (Fred)
Evangelista MAGIC Magic Software Brasil
MAGIC Evangelist 
Magic Software Brasil
NOVO Tel: +55-11-3048-0700  | Atendimento 24h http://suporte.magicsoftware.com.br/
suporte@... | www.magicsoftware.com.br | FacebookTwitterLinkedInYoutubeBlog

-- 
Carlos Mollero.

Livre de vírus. www.avast.com.


Manoel Frederico
 

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.

--
Magic Manoel Frederico da Silva (Fred)
Evangelista MAGIC Magic Software Brasil
MAGIC Evangelist 
Magic Software Brasil
NOVO Tel: +55-11-3048-0700  | Atendimento 24h http://suporte.magicsoftware.com.br/
suporte@... | www.magicsoftware.com.br | FacebookTwitterLinkedInYoutubeBlog


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

Pode fazer como dito no Blog, sem problemas.... Mas se for apenas para o 'xpa', a DLL dele já está pronta.

--
Magic Manoel Frederico da Silva (Fred)
Evangelista MAGIC Magic Software Brasil
MAGIC Evangelist 
Magic Software Brasil
NOVO Tel: +55-11-3048-0700  | Atendimento 24h http://suporte.magicsoftware.com.br/
suporte@... | www.magicsoftware.com.br | FacebookTwitterLinkedInYoutubeBlog

-- 
Carlos Mollero.

Livre de vírus. www.avast.com.