getprojectdataptr
Функция получения ссылки на переменную в другом проекте
Синтаксис
res = getprojectdataptr(prjid, var_name);
Аргументы
| Имя | Тип данных | Описание |
|---|---|---|
| prjid | integer |
Идентификатор проекта, ссылку на переменную которого нужно получить |
| var_name | string |
Строковое значение имени переменной, ссылку на которую нужно получить |
Описание
getprojectdataptr – функция позволяет получить ссылку (указатель) на переменную
(сигнал) с именем var_name в рамках проекта с идентификатором
prjid. Идентификатор prjid может быть получен с помощью
функции openproject.
Доступ к переменной по полученной ссылке может быть получен с помощью функции
~.
Результат
| Имя | Тип данных | Описание |
|---|---|---|
| res | tcomplex |
Ссылка на переменную в проекте с идентификатором prjid |
Пример
initialization
prjid = openproject("Loading_project.prt",0); //Открываем другой проект
initproject(prjid,1); //Запуск проекта
input_ptr = getprojectdataptr(prjid,"parameter_value"); //Получим ссылку на сигнал другого проекта, которой потом будем управлять
result_ptr = getprojectdataptr(prjid,"result_value"); //Получим ссылку на сигнал другого проекта, который потом будем выводить
saveprojectstartpoint(prjid); //Запомним начальную точку, чтобы делать повторяющийся расчёт
end;
if goodstep then begin //на каждом "хорошем" шаге запускаем другой проект на расчет до 50 секунд
loadprojectstartpoint(prjid); //Восстановим начальную точку для циклического расчёта
~(input_ptr) = variable_input; //Присваиваем варьируемую величину
runprojectto(prjid,50); //Запуск на расчёт до 50 секунд
waitprojectfortime(prjid,0); //Ждём пока оно досчитается
result_data = ~(result_ptr); //Считываем результат работы и направляем его в переменную
end;
finalization
closeproject(prjid,0); //закрываем другой проект
end;
При инициализации данного скрипта происходит открытие проекта
Loading_project.prt, получение его идентификатора и инициализация на
расчет. Затем на каждом "хорошем" шаге интегрирования выполняется загрузка начального
состояния второго проекта, передача в него очередного значения "аргумента", расчет проекта до
50 секунд и получение от него результата расчета. При окончании расчета происходит закрытие
второго проекта без запроса на сохранение изменений.