Лучший способ инициализации Okuma API, если мне нужна программа, которая работает как на токарном, так и на фрезерном станке?

Я пишу программу, которая будет работать как на токарном станке, так и на обрабатывающих центрах. Как лучше всего инициализировать 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();
    }

person chris heeg    schedule 09.09.2013    source источник
comment
У меня недостаточно информации по этому вопросу, чтобы предложить какие-либо предложения. Не могли бы вы предоставить пример кода?   -  person Sven Grosen    schedule 09.09.2013
comment
Я добавил код, который буду использовать в настоящее время. Я также хочу, чтобы программа работала для обрабатывающего центра. Для этого потребуются одни и те же объекты.   -  person chris heeg    schedule 10.09.2013
comment
Что происходит с этими вопросами Окума? Производитель отправляет сюда своих клиентов? Это не сработает, если никто не использует правильный тег.   -  person Hans Passant    schedule 10.09.2013
comment
Ни у кого из нас пока нет достаточного количества баллов, чтобы сделать тег :(   -  person Scott Solmer    schedule 11.09.2013
comment
Спасибо за тег Ханс!   -  person Scott Solmer    schedule 11.09.2013


Ответы (2)


Вам нужна подпрограмма для проверки текущего типа машины. Что-то вроде этого:

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

Затем вы можете инициализировать правильный тип API на основе значения MachineType.


ОБНОВИТЬ

Теперь у нас есть стандартная машинно-независимая библиотека, которая идеально подходит для этого.
Пожалуйста, взгляните на образец программы для SCOUT.

person Scott Solmer    schedule 10.09.2013

Взгляните на введение C# в интерфейсы и это видео использование интерфейсов .Net для машинно-нейтральных приложений. Использование интерфейсов позволяет вам программировать интерфейс, а не напрямую API.

person jweaver    schedule 11.09.2013