PDA

Просмотр полной версии : ФБ "Запуск процесса"



Alexandr
03.04.2012, 10:54
Добрый день!

Есть потребность использовать самописное приложение, как дополнение к скаде.
Реализуется без проблем.

Вопрос в следующем.
ФБ "Запуск процесса" копирует запускаемый exe-файл в папку, куда установлена Скада.
Дело в том, что мое exe приложение использует библиотеки, которые прописаны относительными адресами (т.е. библиотеки должны находиться в одной папке с exe файлом).
В принципе, я могу установить свое приложение (с библиотеками) в папку с MS, но логично предположить, что структурно мастерскада и мое приложение должны быть расположены в разных папках.

Хотелось бы узнать, чем обусловдена такая особенность этого ФБ?

SCADAMaster
03.04.2012, 11:02
Мы не наблюдали такого поведения данного ФБ.
Если указать полный путь к приложению, то оно никуда не копируется.

Alexandr
03.04.2012, 12:14
Извиняюсь, что ввел в заблуждение. ФБ работает нормально.
Тему можно удалить.

Спасибо.

Alexandr
05.04.2012, 09:32
Можно ли в ФБ "Запуск процесса" присвоить Имя команды из другой переменной (с выхода)?

SCADAMaster
05.04.2012, 09:40
Для этого нужно использовать входы данного ФБ. Задаете в настройках количество параметров, а затем формируете маску в строке аргументов или команды.
Вызовите справку к данному ФБ - там все описано.

Alexandr
05.04.2012, 10:32
Имя команды: {0}
Количество параметров: 1
Показывать окно: Истина
Строка аргументов:

С Параметр0 установлена связь, в него передается адрес приложения D:\prog.exe

При вызове ФБ в статусе ошибки выдается следующее:

System.ComponentModel.Win32Exception: Не удается найти указанный файл
в System.Diagnostics.Process.StartWithCreateProcess( ProcessStartInfo startInfo)
в System.Diagnostics.Process.Start()
в System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
в InSAT.Library.ProcessHlp.StartProcessWithoutOutput (ProcessStartInfo startInfo, String& output, String& errors)

В справке не удалось найти подробного описания на этой случай.

SCADAMaster
05.04.2012, 11:35
Это ошибка. Мы ее устраним.
Пока что можем предложить использовать модуль "Скрипт C#".
Код пример такой (код запускается по переднему фронту входа "Параметр1"):
using System;
using MasterSCADA.Script.FB;
using MasterSCADA.Hlp;
using FB;
using System.Linq;
using System.Diagnostics;

public partial class ФБ : ScriptBase
{
bool? M=false;
public override void Execute()
{
if (Параметр1==true && M==false)
{
ProcessStartInfo infoStartProcess = new ProcessStartInfo();
infoStartProcess.WorkingDirectory = @"C:\";
infoStartProcess.FileName = @"C:\Prog.exe";
Process.Start(infoStartProcess);
}
M=Параметр1;
}
}