AXISVM - Configurar o servidor COM utilizando o Visual Studio

O AXISVM suporta a tecnologia COM da Microsoft, permitindo que outros programas interajam com ele. Qualquer programa pode iniciar o AXISVM, criar modelos, executar cálculos e obter os resultados da análise através do servidor COM. Podem ser utilizadas várias linguagens de programação para controlar o AXISVM através do servidor COM, tais como C#, Python, Delphi ou mesmo o Excel utilizando o VBA do Excel. Este artigo irá mostrar os passos necessários para configurar o servidor COM do AXISVM e interagir com o software AXISVM. O Visual Studio e o C# são utilizados neste artigo, mas procedimentos semelhantes podem ser seguidos no caso de outras linguagens de programação e IDEs.

Registo

O servidor COM deve ser registado no registo do sistema operativo para permitir que as IDEs (por exemplo, Visual Studio, Delphi IDE, Visual Basic Editor no Excel e outras) vejam a biblioteca de tipos do AXISVM. O servidor COM é registado automaticamente durante a instalação do AXISVM. O IDE irá mostrar todas as versões registadas do servidor COM.

Iniciar o AXISVM através do servidor COM

Aqui, o Visual Studio 2022 e a linguagem de programação C# são utilizados para criar um projeto e estabelecer uma ligação ao AXISVM através do servidor COM. O projeto será uma aplicação Windows Form com um único botão para executar o AXISVM. 

Adicionar a biblioteca do servidor COM ao Visual Studio.

  • Crie um novo projeto de aplicação Windows Forms.
  • Clique com o botão direito do rato no nome do projeto (neste caso: AxisVMTutorial) no Explorador de Soluções e, no menu «Adicionar», selecione «Referência COM». A janela do Gestor de Referências será exibida e, na barra de pesquisa, digite AXISVM. Marque a caixa de seleção ao lado de Biblioteca AXISVM e clique em OK, conforme mostrado nas capturas de ecrã abaixo. Se houver mais de uma versão do AxisVM, mais de uma biblioteca AXISVM será exibida. A biblioteca AXISVM aparecerá nas Dependências do projeto se tiver sido adicionada com sucesso ao projeto. 
  • Defina a opção «Incorporar tipos de interoperabilidade» como «Não» para Interop.AxisVM


Definir a lógica para iniciar o servidor COM
O método OpenAxisVM apresentado abaixo é utilizado para definir os passos necessários para iniciar o AXISVM. A descrição de cada linha de código encontra-se ao lado da mesma. Em geral, devem ser seguidos os seguintes passos:

  • Defina uma instância global da interface IAxisVMApplication e inicialize-a com um objeto de AxisVMApplication. 
  • Verifique continuamente se o AXISVM está carregado utilizando a propriedade Loaded do objeto AxisVMApplication.
  • Torne o AXISVM visível utilizando a propriedade Visible do objeto AxisVMApplication.

  • Clique com o botão direito do rato no nome do projeto (aqui: AxisVMTutorial) no explorador de soluções e, no menu Adicionar, selecione Referência COM. A janela do gestor de referências irá aparecer e, na barra de pesquisa, digite AXISVM. Marque a caixa de seleção ao lado de AXISVM Library e clique em OK, conforme mostrado nas capturas de ecrã abaixo. Se houver mais de uma versão do AXISVM, aparecerão mais de uma biblioteca AXISVM. A biblioteca AXISVM aparecerá nas Dependências do projeto se tiver sido adicionada com sucesso ao projeto. 

Comments

  • IAxisVMApplication axisVMApplication;           // Defina uma variável global para o AXISVM.
    public int OpenAxisVM(int _MaxWaitTime)         // _MaxWaitTime em segundos.
            {   const int cSleepTime = 100;         // Em milésimos de segundo
                int axisVMStatus=0;                 // Variável para acompanhar o estado do AXISVM.
                uint openTrialTimes = 0;            // Número de vezes que o programa está a tentar iniciar o AXISVM.
                if (this.axisVMApplication == null) // verifique se axisVMApplication não está definido.
                {
                    this.axisVMApplication = new AxisVMApplication();     //Criar um objeto de AxisVMApplication.
                    // Verifique o estado do AxisVM (se está carregado ou não) e se o valor de openTrialTimes é inferior ao número máximo de tentativas.
                    while (((IAxisVMApplication)this.axisVMApplication).Loaded == ELongBoolean.lbFalse && (openTrialTimes < _MaxWaitTime * 1000 / cSleepTime))
                    {
                        System.Threading.Thread.Sleep(cSleepTime); // Colocar o segmento em espera.
                        openTrialTimes++;                                       // Aumentar o número de tentativas após cada tentativa.
                    }
                    // verificar se o AXISVM está carregado e atribuir.
                    if (((IAxisVMApplication)this.axisVMApplication).Loaded == ELongBoolean.lbTrue)
                    {
                        axisVMStatus = 1;                                       // Atribua o valor 1 se estiver carregado.
                    }
                    else
                    {
                        axisVMStatus = -1;                                      //Atribuir -1 se não estiver carregado.
                    }
                    // Verifique se o estado é superior a 1 (ou seja, carregado).
                    se (axisVMStatus > 0)
                    {
                        this.axisVMApplication.Visible = ELongBoolean.lbTrue;   // Tornar o AxisVM visível.
                    }
                    else
                    {
                        this.axisVMApplication = null;                          // Atribua o valor nulo ao objeto.
                    }
                    return axisVMStatus;                                        // Retornar o estado do AxisVM.
                }
                return -1;                                                      // Retorna -1 se houver um objeto definido.
            }
    • Chame o método OpenAxisVM no projeto, no local pretendido; neste exemplo, ele é chamado no método button1_Click, que será executado quando o utilizador clicar no botão, conforme ilustrado na figura abaixo.

    private void button1_Click(object sender, EventArgs e)
    {
        OpenAxisVM(100);   // Execute o método OpenAxisVM.
    }

    • Execute o projeto a partir do menu «Depuração» e inicie a depuração ou utilize a tecla F5. Será apresentado o formulário com o botão adicionado. Clique no botão 1 para iniciar o AXISVM.
    • Para fechar o AXISVM, é necessário chamar o método Quit() do objeto AxisVMApplication.



    Problemas comuns

    • Existem várias versões do servidor COM disponíveis no sistema operativo, o que provoca falhas na ligação ao AXISVM. 
    Solução: Feche o Visual Studio e qualquer instância do AXISVM em execução. Execute o ficheiro UnregComServer.exe como administrador, disponível no diretório de instalação do AXISVM. Isto irá remover os servidores COM registados anteriormente. Registe novamente o servidor COM para a versão necessária, executando como administrador o ficheiro !REGISTER_AXISVM.bat ou !REGISTER_AXISVM_X64.bat para 32 bits ou 64 bits, respetivamente. Se o problema não for resolvido, reinstale o AXISVM. 
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!