A COM szerver beüzemelése Visual Studio használatával

Az AXISVM támogatja a Microsoft COM technológiáját, ezzel lehetővé téve más programok számára, hogy külsőleg meghajtsák az AXISVM-et. Bármilyen program elindíthatja az AXISVM-et, modelleket építhet, számításokat futtathat és kinyerheti a számítási eredményeket a COM-szerveren keresztül. Számos programozási nyelv használható az AXISVM vezérlésére a COM szerveren keresztül, például C#, Python, Delphi vagy akár Excel is az Excel VBA alkalmazásával. Ez a cikk bemutatja az AXISVM COM-szerver konfigurálásához és az AXISVM szoftverrel való interakcióhoz szükséges lépéseket. Ebben a cikkben Visual Studio környezet és C# programozási nyelvet fogunk alkalmazni, de ugyan ezek a lépések érvényesek más környezet és nyelv használata során is.

Regisztráció #

A COM-szervert regisztrálni kell az operációs rendszer beállításjegyzékében (registry), hogy az IDE-k (pl. Visual Studio, Delphi IDE, Visual Basic Editor in Excel és others) láthassák az AXISVM típusú könyvtárat. A COM-szerver regisztrálása automatikusan megtörténik az AXISVM telepítése során. Az IDE megjeleníti a COM-szerver összes regisztrált verzióját.

Az AXISVM indítása a COM-szerveren keresztül #

Jelen cikkben a Visual Studio 2022 és a C# programming nyelv használatával hozunk létre egy új projektet, és kapcsolódunk az AXISVM-hez a COM-szerveren keresztül. A projekt egy Windows Form App lesz, egyetlen gombbal az AXISVM futtatásához.

A COM server library (AXISVM Type Library) regisztrálása a felhasználói projektbe #

  • hozzon létre egy új “Windows Form App” C# projektet a Visual Studio-ban

  • kattintson jobb gombbal a projekt nevére (itt: AxisVMTutorial) a Solution Explorer ablak tetején és válassza az Add menüt, majd a COM Reference -t. A Reference Manager ablak jön majd fel, a keresőmezőbe kezdje el gépelni az AXISVM -t. A felajánlott lehetőségek közül az AXISVM Library –t kell választani. Ha több van, azt, amelyik AXISVM –et szeretné használni (valószínűleg a legmagasabb verziójút). Az AXISVM Library meg kell jelenjen a Dependencies listában.
  • állítsa az “Embed Interop Types” -t No -ra

C#-ban az AXISVM COM szerver elérése #

Az alábbi OpenAxisVM eljárást használjuk az AXISVM-hez való kapcsolódáshoz. Ennek konkrét belső működése:

  • Egy globális változót definiálunk: IAxisVMApplication típussal, ebbe kerül majd a konkrét AxisVMApplication objektum.
  • New AxisVMApplication() hívással létrehozunk egy új AXISVM objektumot, majd megvárjuk amíg ez betöltődik (a Loaded tulajdonság vizsgálatával).
  • Az elindított AXISVM –et a Visible tulajdonság állításával láthatóvá tesszük.
				
					IAxisVMApplication axisVMApplication;           // Define a global variable for AxisVM.
public int OpenAxisVM(int _MaxWaitTime)         // _MaxWaitTime in seconds.
        {   const int cSleepTime = 100;         // In milliseconds
            int axisVMStatus=0;                 // Variable to track the status of AxisVM.
            uint openTrialTimes = 0;            // Number of times the program is trying to launch AxisVM.
            if (this.axisVMApplication == null) // check if axisVMApplication is not defined.
            {
                this.axisVMApplication = new AxisVMApplication();     //Create an object of AxisVMApplication.
                // Check the status of AxisVM (loaded or not) and the openTrialTimes is less than the maximum trial times. 
                while (((IAxisVMApplication)this.axisVMApplication).Loaded == ELongBoolean.lbFalse && (openTrialTimes < _MaxWaitTime * 1000 / cSleepTime))
                {
                    System.Threading.Thread.Sleep(cSleepTime); // Put the thread to sleep.
                    openTrialTimes++;                                       // Increase the number of trial times after each trial.
                }
                // check if the AxisVM is loaded and assign.
                if (((IAxisVMApplication)this.axisVMApplication).Loaded == ELongBoolean.lbTrue)
                {
                    axisVMStatus = 1;                                       // Assign a value of 1 if loaded.
                }
                else
                {
                    axisVMStatus = -1;                                      // Assign -1 if not loaded.
                }
                // Check if the status is larger than 1 (i.e. loaded).
                if (axisVMStatus > 0)
                {
                    this.axisVMApplication.Visible = ELongBoolean.lbTrue;   // Make AxisVM Visible.
                }
                else
                {
                    this.axisVMApplication = null;                          // Assign null for the object.
                }
                return axisVMStatus;                                        // Return the status of AxisVM.
            }
            return -1;                                                      // Return -1 if there is an defined object.
        }

				
			
  • Az OpenAxisVM eljárás hívása után az axisVMApplication fel lesz töltve a tényleges hivatkozással; jelen példában ezt a hívást a button1_Click eljárásban végezzük el.
				
					private void button1_Click(object sender, EventArgs e)
{
    OpenAxisVM(100);   // Execute the OpenAxisVM method. 
}

				
			
  • Futtasa a projektet a Debug menu –ből a Start debugging opcióval, vagy direktbe az F5 billentyű lenyomásával. A Form amire egy gombot tett meg fog jelenni. Kattintson a gombra, majd pár másodperces várakozás után az AXISVM meg fog jelenni.
  • Az AXISVM használatának befejezéséhez a programból az AxisVMApplication Quit() eljárását kell hívni.

Tipikus problémák #

  • Több AXISVM COM szerver is regisztrálva van, és emiatt nem találja meg az operációs rendszer az AXISVM-t.

Megoldás: Zárja be a Visual Studio-t és minden futó AXISVM példányt. Futtassa a használni kívánt AXISVM könyvtárából az !UnregAxisVMComServer.bat-ot adminisztrátori jogosultsággal. Ez minden AXISVM COM szervert törölni fog (fogadja el a registry módosítást). Ezután regisztrálja a COM szervert adminisztrátor ként futtatva a !REGISTER_AXISVM_X64.bat –ot és/vagy a !REGISTER_AXISVM.bat-ot (az első a 64 bites a második a 32 bites verziót regisztrálja. Alapértelmezésben csak a 64 bites verzió telepítődig, de ez csak 64 bites kliensekkel tud együttműködni. Ha 32 bites klienssel akarja használni, az AXISVM telepítését elindítva válassza annak a 32 bites verzióját telepítésre). Ha még mindig nem elérhető az AXISVM COM szerver, telepítse újra az AXISVM-et. 

További információ: AXISVM COM Server Interface.