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.