我正在编写一个可在车床和加工中心运行的程序。如何在不加载的情况下初始化API。我应该为每种机器类型调用一个类,还是可以在同一个类中调用每个(并关闭它们)?
添加了仅适用于车床的当前方法示例...
using Okuma.CLDATAPI.DataAPI;
using Okuma.CLDATAPI.Enumerations;
using Okuma.CLDATAPI.Structures;
using Okuma.CLDATAPI.DataAPI.MacMan;
public class LatheDutyOnline
{
private CMachine Objl;
private CVariables Objlv;
private CIO IO;
private CATC ObjAtc;
private CAxis objaxis;
private CBallScrew objBS;
private CProgram objProgram;
private CSpec objSpec;
private CSpindle objSpindle;
private void Form1_Load(System.Object sender, System.EventArgs e)
{
Objl = new CMachine();
Objl.Init();
Objlv = new CVariables();
IO = new CIO();
ObjAtc = new CATC();
objaxis = new CAxis();
objBS = new CBallScrew();
objProgram = new CProgram();
objSpec = new CSpec();
objSpindle = new CSpindle();
}
答案 0 :(得分:3)
您需要例程来检查当前的机器类型。像这样:
Private Sub CheckMachineType()
If System.IO.File.Exists("C:\OSP-P\SHAREDDLL\LDATAPI.DLL") And System.IO.File.Exists("C:\OSP-P\VOLANTE\CRAD\LCMDAPI.EXE") Then
MachineType = Lathe
ElseIf System.IO.File.Exists("C:\OSP-P\SHAREDDLL\MDATAPI.DLL") And System.IO.File.Exists("C:\OSP-P\VOLANTE\CRAD\MCMDAPI.EXE") Then
MachineType = MachiningCenter
Else
MachineType = NonOSP
End If
End Sub
然后,您可以根据MachineType的值初始化正确的API类型。
我们现在有一个标准的机器无关库,非常适合这种情况 请查看SCOUT的示例程序。
答案 1 :(得分:2)
查看c# intro to Interfaces和此视频using .Net interfaces for machine neutral applications。使用接口允许您针对接口进行编程,而不是直接针对API进行编程。