12
Руководство пользователя
×

2.1.5 Массив скаляров, рассчитанных в DLL

 Данный метод создает не один скаляр, а массив скаляров. Поэтому тип объекта, создаваемого этим методом, записывается в файле проекта не как scalar, а как scalar_array.
Метод используется для вычисления в программе пользователя значений скаляров, называемых выходными, по значениям входных параметров. Выходные скаляры можно использовать при описании механизма в соответствии с общими правилами. Программа пользователя должна быть оформлена в виде DLL-модуля.
Синтаксис метода создания
scalarDLL(DLLName, FunctionName, Input, Output)
Обязательные позиционные параметры метода
string DLLName
Имя DLL-модуля.
string FunctionName
Имя функции из DLL-модуля, которая используется для расчета.
string Input
Строка описания имен входных параметров – скаляров с указанием единиц измерения, в которых они передаются в функцию DLL-модуля. Объекты в строке отделяются друг от друга запятыми, единицы измерения каждого объекта указываются после его имени в квадратных скобках. Если величина безразмерная, то квадратные скобки можно опустить.
Пример строки, описывающей входные параметры:
«scalarIn_1 [kg], scalarIn_2, scalarIn_3 [m/s], …»
string Output
Строка описания имен выходных скаляров и единиц измерения их значений, в которых они передаются из функции DLL-модуля в программный комплекс. Объекты в строке отделяются друг от друга запятыми, единицы измерения каждого объекта указываются после его имени в квадратных скобках. Если величина безразмерная, то квадратные скобки можно опустить.
Пример строки, описывающей выходные скаляры:
«scalarOut_1, scalarOut_2 [N], scalarOut_3 [m], …»
Описание
Расчет значений скаляров проходит по следующей схеме. В момент создания объекта программный комплекс определяет значения объектов, заданных в качестве входных параметров. С этими значениями вызывается функция из DLL-модуля, а затем вычисляются значения выходных скаляров. Если возвращаемое значение функции равно нулю это означает успешное выполнение функции DLL-модуля, в результате чего создается массив скаляров. Если возвращаемое значение функции отлично от нуля, то массив не создается и выдается соответствующее ошибке сообщение.
Входные данные передаются в функцию DLL-модуля в единицах измерения, заданных пользователем в строке Input. Значения выходных данных (скаляров) должны вычисляться в единицах измерения, указанных пользователем в строке Output.
Алгоритм для расчета должен быть оформлен в виде функции, которая имеет в терминологии языка Си следующее описание:
int имя_функции (int sInput, double *input, int sOutput, double *output).
Возвращаемое значение функции
Переменная целого типа. Если значение переменной равно нулю, то расчет прошел корректно. В других случаях это значение – код ошибки, который будет выведен при расчете механической системы в информационном окне.
Входные параметры
      int sInput – количество входных параметров. Значение sInput вычисляется перед обращением к функции.
      double *input – указатель на массив значений входных параметров. Выделение памяти под массив и определение значения указателя происходит в программном комплексе. Перед обращением к функции в данный массив записываются значения входных параметров. При этом в первый элемент массива записывается значение первого входного параметра, во второй – второго параметра и т.д.
Выходные параметры
      int sOutput – количество выходных скаляров. Значение sOutput вычисляется перед обращением к функции.
      double *output – указатель на массив значений выходных скаляров. Выделение памяти под массив и определение значения указателя происходит в программном комплексе. После обращения к функции из этого массива извлекаются значения выходных скаляров. При этом из первого элемента массива извлекается значение первого выходного скаляра, из второго – второго скаляра и т.д.
Имя функции должно состоять из символов латинского алфавита, цифр, отдельных спецсимволов и начинаться не с цифры. При вызове функции программный комплекс EULER использует соглашение о вызове функций в стиле Си (__cdecl).