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 segundoint 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.
Howdy, Stranger!
- 106 CAD
- 2 CAM
- 69 CAE
- 41 Misc
- 233 All Categories