Разработка интерпретаторов
  • Разработка интерпретаторов
v3.0.3
Search Results for

    Show / Hide Table of Contents

    Программная библиотека интерпретатора

    Программная библиотека интерпретатора представляет собой библиотеку динамической компоновки (DLL). Вне зависимости от платформы, для которой реализована библиотека (.NET/нативная), библиотека должна экспортировать две функции:

    NCT_GetInterface — возвращает в CAM систему объект, реализующий интерфейс для взаимодействия ядра CAM системы с программной библиотекой (INCT_Interpreter);

    NCT_FreeMemory — освобождает память от всех объектов, созданных самостоятельно или полученных от CAM системы в процессе работы.

    Пример класса, описывающего функции библиотеки интерпретатора на языке C# (сборка для платформы .NET):

    namespace sample
    {
        public class Interpreter: MarshalByRefObject
        {
            public static INCT_Interpreter NCT_GetInterface()
            {
                /* реализация */
            }
            public static void NCT_FreeMemory()
            {
                /* реализация */
            }
        }
    }
    

    В сборке .NET эти функции могут быть как статическими, так и методами экземпляра: CAM система создаёт объект класса, заданного тегом NetNamespaceClass файла настроек интерпретатора, вызывает у него NCT_GetInterface, а при выгрузке библиотеки - NCT_FreeMemory. Поэтому у класса должен быть открытый конструктор без параметров.

    Описание функций нативной библиотеки интерпретатора на языке Delphi:

    function NCT_GetInterface: INCT_Interpreter; stdcall;
    procedure NCT_FreeMemory; stdcall;
    

    Описание функций нативной библиотеки интерпретатора на языке C++:

    void __stdcall NCT_GetInterface(INCT_Interpreter** Result);
    void __stdcall NCT_FreeMemory();
    

    Функция NCT_GetInterface объявлена в CAM системе как функция Delphi, возвращающая интерфейс. Такой результат передаётся не через регистр, а скрытым параметром: CAM система передаёт адрес, по которому библиотека должна записать указатель на объект INCT_Interpreter.

    Все типы, необходимые для взаимодействия CAM системы с программной библиотекой интерпретатора, приведены в библиотеках типов. Они распространяются пакетами NuGet из публичного источника пакетов производителя https://nexus.sprut.ru/repository/master/index.json (см. Версии продукта); берите пакеты той же основной версии, что пакет SDK, с которым собран продукт: для C++ и других языков — пакет SprutTechnology.NCInterpreterSDK.tlb (файлы *.tlb, *.h и *.idl), для Delphi — SprutTechnology.NCInterpreterSDK.bpl.x64 (модули IDL.<Имя>.pas). Оба пакета подтягивают по пакету на каждую библиотеку типов.

    Следующие TLB-файлы содержат описание типов, которые используются при взаимодействии с библиотекой интерпретатора:

    • STNCInterpreter.tlb — основной перечень типов;
    • STNCAnalyzer.tlb — типы, используемые для управления анализом текста управляющей программы;
    • STNCFormers.tlb — типы, используемые для упрощения построения траектории движения инструмента (линейные/круговые перемещения, циклы);
    • STNCConnect.tlb — типы, используемые для защиты интерпретатора (см. Интерпретаторы с защитой);
    • STNCCustomInterpreter.tlb — типы для интерпретатора с собственными параметрами (см. Список используемых типов).

    Для подключения библиотеки типов к вашей среде разработки, обратитесь к соответствующему разделу документации среды разработки.

    Примечание

    Регистрация библиотеки типов

    Для регистрации библиотеки типов в Microsoft Visual Studio попробуйте следующее:

    Найдите файл tlbImp.exe на вашем компьютере. Выполните команду "tlbimp.exe tlb-filename". В результате выполнения команды будет создан файл "tlb-filename.dll" (например, "STNCAnalyzer.dll"). Добавьте этот dll файл в ваш проект через пункт меню "Add Reference".

    На странице Примеры интерпретаторов с исходными кодами приведён пример исходных кодов библиотеки интерпретатора, собранной из них 'dll', и пример файла настроек.

    In this article