Функция получения ссылки на переменную в другом проекте
getprojectdataptr(prjid, var_name);
prjid – идентификатор проекта, ссылку на переменную которого нужно получить;
var_name – строковое значение имени переменной, ссылку на которую нужно получить.
getprojectdataptr – функция позволяет получить ссылку (указатель) на переменную (сигнал) с именем var_name в рамках проекта с идентификатором prjid. Иденфикатор prjid может быть получен с помощью функции openproject. Доступ к переменной по полученной ссылке может быть получен с помощью функции ~.
нет
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 секунд и получение от него результата расчета. При окончании расчета происходит закрытие второго проекта без запроса на сохранение изменений.