На главную страницу
Русский English
 


Поддержка
Форум
Техподдержка
Закрытый разделПерсональная

Авторизация

Запомнить меня на этом компьютере
  Забыли свой пароль?
  Регистрация



Поиск по сайту


Подписка

Изменение параметров

Hits 68081330
13943
Hosts 3698341
1087
Visitors 54157025
11638

23


Главная / Поддержка / Форумы / модуль ВРДО

Форум «модуль ВРДО»

Версия для печати Версия для печати

Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация

Сообщения 1 - 25 из 60
Начало | Пред. | 1 2 3 | След. | Конец 

Тема: «Loop - что это такое » в форуме: модуль ВРДО   Просмотров: 68319
 
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 12.01.2012 16:07:48
 
 
Уважаемые разработчики !
Вот и возник ряд вопросов по технологии loop или иначе - циклическом повторении задач.
Вопрос первый :
loop.exe - это Rastr без оболочки или это совершенно другое независимое приложение.
Вопрос второй:
Чтобы добавить в цикл выполнение макроса - достаточно ли прописать его в xml - файле loop_raw_ti
Вопрос третий:
Где и как прописывается запуск стороннего приложения в виде exe файла.
Вопрос четвертый: Правильно ли я понимаю, что есть два способа запустить цикл - нажать к нопку Оценка на панели Rastr или же запустить файл loop_raw_ti.bat - -равнозначны ли эти способы ?
Заранее спасибо !
 
Профиль
Наверх
Максименко Дмитрий
Гость
 
Создано: 12.01.2012 17:24:14
 
 
Итак для начала по порядку и кратко:
1. loop.exe - это независимое приложение , предназначено для последовательного запуска задач. Умеет запускать .exe файлы, скрипты (через скрипт машину C:\WINDOWS\system32\cscri­pt.exe), внутренние задачи:
VRDO,SETUP,CONVERT,CLEAR_­DIR,SERVICE_INSTALL (основные)

2. Пока что я предлагаю не привязываться к конкретным названиям. Вот пример запуска скрипта:

<TASK NAME = "GET_TI_RND" ENABLE="0" PATH = "%WINDIR%\system32\cscrip­t.exe" >
<PAR VAL = "C:\projects\fl\debug\LOO­P\get_ti_rnd.vbs" />
<PAR VAL = "\\B" />
<PAR VAL = "\\U" />
<OK VAL = "0"/>
</TASK>
Хотя возможно что вас интересует как запустить макрос *.rbs находясь в оболочке в цикле ?

3. Пример запуска стороннего приложения в виде .exe файла:
<TASK NAME = "sp_cycle" ENABLE="0" PATH = "C:\projects\fl\debug\LOO­P\TM\sp_cycle.exe" >
<PAR VAL = "cycle.cnf"/>
<OK VAL = "0"/>
т.е. можно запускать любой .exe файл с любым количеством параметров.

4. Функционал кнопки Оценка уже немного изменился, в вашем случае разница будет заключаться в указателях на растр, если запускать через батник то loop.exe создаст новый обьект растра, если запуск произведен из под растра, то будет использоваться уже созданный обьект растра. То же касается и задачи ВРДО по срезу - можно запускать из под оболочки, можно сторонне через loop_.bat.
 
Наверх
Александр Александров
Администратор
 
Всего сообщений: 660
Дата регистрации: 31.05.2008
Создано: 12.01.2012 17:42:01
 
 
По вопросу 4 можно добавить, следующее: существует способ инсталляции службы в системе (ключ SERVICE_INSTALL), после чего за LOOP будет присматривать система и общение будет возможно лишь по средством системы управления службами Windows и его LOG файлов.
 
Профиль
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 12.01.2012 17:55:46
 
 
по вопросу 2 интерсует как запустить макрос rbs в цикле без запуска оболочки rastr.
Т.е. макрос должен отработать в объекте растра созданном loopом.
Задача прмиерно следующая - без запуска растра организовать циклическую оценку, на оцененном режиме организовать ряд вариантных расчетов(через собственно варианты или аварии из МДП). Для каждого вариантного режима оценить наличие нарушений и при необходимости запустить opf. По итогам работы opf найти использованное управление и кинуть его в протокол или ексел. И так по кругу.
 
Профиль
Наверх
Максименко Дмитрий
Гость
 
Создано: 12.01.2012 18:39:19
 
 
Ну в общем тогда процедура примерно следующая(преполагаю что оценка Космосом делается):
Запускаются задачи:
GET_TI
sp_cycle - в результате есть v_kos

в loop.exe есть внутренний таск \CONVERT
<TASK NAME = "CONVERT" ENABLE="0" PATH = "C:\projects\fl\debug\LOO­P\loop.exe" >
<PAR VAL = "C:\projects\fl\debug\LOO­P\TMP\log_CONVERT_.txt" />
<PAR VAL = "C:\projects\fl\debug\LOO­P\loop.xml" />
<PAR VAL = "/CONVERT" />
<OK VAL = "1"/>
</TASK>

с параметрами:
<CONVERT
FILE = "C:\projects\fl\debug\LOO­P\TMP\v_kos"
CONVFILE = "C:\projects\fl\debug\LOO­P\TMP\rastr_file"
SHABL = "C:\projects\fl\debug\LOO­P\TM\врдо.vrd"
/>
в результате будет сохранен файл rastr_file

следующий ТАСК запускает макрос (.vbs) в котором создается обьект растра , грузится файл rastr_file , выполняются необходимые расчеты и действия.

все таски прописываем напрмер в файле loop_cikl.xml
делаем .bat файл (loop_cikl.bat)
с содержимым типа:
CLS
start C:\projects\fl\debug\LOOP­\loop.exe^
C:\projects\fl\debug\LOOP­\TMP\log_LOOP_.txt^
C:\projects\fl\debug\LOOP­\loop_cikl.xml

Далее если все получится можно будет заморочиться с сервисом.




 
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 12.01.2012 20:14:17
 
 
Спасибо. Если получится обязуюсь отписаться о результатах.
 
Профиль
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 13.01.2012 23:10:43
 
 
Вот такой еще вопрос. Как я понял для успешного запуска vbs-скрипта он должен вернуть модулю loop код окончания, и этот код должен совпасть с прописанным в таске. Как это сделать ?
 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 660
Дата регистрации: 31.05.2008
Создано: 14.01.2012 00:39:41
 
 
По умолчанию скрипт всегда возвращает "0".
Вернуть другой код из скрипта:
WScript.Quit( -13 ) ' дальше ничего не будет выполнено

код успешного выполнения прописывается в тэге "<OK>"
в параметре "VAL":
<OK VAL = "0"/>
<OK VAL = "1"/>
<OK VAL = "2"/>
он может быть как один, так и несколько.

 
Профиль
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 16.01.2012 17:01:11
 
 
Подскажите пожалуйста, где зашита связь между модулем loop и ОИКом, а точнее где прописывается какой из доступных ОИКов будет использован для модуля get_ti
 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 660
Дата регистрации: 31.05.2008
Создано: 16.01.2012 17:08:02
 
 
loop ни к чему не привязан. Где у get_ti прописывается доступный ОИК я не в курсе по причине отсутствия доступа к какому-либо живому ОИКу Печально.
 
Профиль
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 17.01.2012 22:26:35
 
 
Короткое резюме об использовании программного модуля loop:
1. Из всех доступных функций единственно полезной оказалась функция convert(космос->растр).
2. Имеющиеся в базовом варианте модули get_ti по сути являются фиктивными. Пришлось заменить их скриптом обращающимся к живому get_ti (точнее get_tm).
3. Вызов sp_cycle (собственно оценивание) также пришлось отключить. Причиной явилось следующее - при вызове модуля get_ti передача фокуса из данного модуля в вызвавшую его программу происходит практически мгновенно. Формирование же файлов с ти_тс занимает еще секунд 10-15. Таким образом sp_cycle вызывается на пустые файлы ти и, естественно, не работает.
В остальном все достаточно красиво. Широкая улыбка



 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 660
Дата регистрации: 31.05.2008
Создано: 17.01.2012 23:30:38
 
 
Цитата
3. Вызов sp_cycle (собственно оценивание) также пришлось отключить. Причиной явилось следующее - при вызове модуля get_ti передача фокуса из данного модуля в вызвавшую его программу происходит практически мгновенно. Формирование же файлов с ти_тс занимает еще секунд 10-15. Таким образом sp_cycle вызывается на пустые файлы ти и, естественно, не работает.


с get_ti/get_tm пока особых проблем не отмечено (мы уже порядка 3-4 раз настраивали его в ЦДУ) вот как
примерно выглядит часть настройки loop.xml в ЦДУ.

- <TASK NAME="get_ti_CDU" ENABLE="1" PATH="C:\kocmoc07\Get_TM\­Get_TM.exe">
<PAR VAL="C:\PROGRA~1\RASTRW~1­\LOOP\TMP" QUOTS="NO" />
<PAR VAL="[KDATE]" QUOTS="NO" />
<OK VAL="0" />
</TASK>
- <TASK NAME="CHECK_GET_TI" ENABLE="1" PATH="C:\PROGRA~1\RASTRW~­1\LOOP\loop.exe">
<PAR VAL="C:\PROGRA~1\RASTRW~1­\LOOP\TMP\log_CHECK_GET_T­I_.txt" />
<PAR VAL="C:\PROGRA~1\RASTRW~1­\LOOP\loop.xml" />
<PAR VAL="/CHECK_GET_TI" />
<OK VAL="1" />
</TASK>
- <TASK NAME="GET_TI_RND" ENABLE="0" PATH="%WINDIR%\system32\c­script.exe">
<PAR VAL="C:\PROGRA~1\RASTRW~1­\LOOP\get_ti_rnd.vbs" />
<PAR VAL="\\B" />
<PAR VAL="\\U" />
<OK VAL="0" />
</TASK>
- <TASK NAME="sp_cycle" ENABLE="1" PATH="C:\PROGRA~1\RASTRW~­1\LOOP\TM\sp_cycle.exe">
<PAR VAL="cycle.cnf" />
<OK VAL="0" />
</TASK>
- <TASK NAME="CHECK_SP_CYCLE" ENABLE="1" PATH="C:\PROGRA~1\RASTRW~­1\LOOP\loop.exe">
<PAR VAL="C:\PROGRA~1\RASTRW~1­\LOOP\TMP\log_CHECK_SP_CY­CLE_.txt" />
<PAR VAL="C:\PROGRA~1\RASTRW~1­\LOOP\loop.xml" />
<PAR VAL="/CHECK_SP_CYCLE" />
<OK VAL="1" />
</TASK>

1)Ни какой досрочной передачи фокуса в данном случае не отмечается
2) результат get_ti/get_tm нужно проверять
3) sp_cycle необходмо так же настраивать при помощи файла *.CNF. С ним известна всего одна беда, это коммутационные схемы Космоса, их недолжно быть в базовом файле, тогда все проходит на ура.

p.s. Пришлите плиз Ваши настройки LOOP, попробуем его настроить.
 
Профиль
Наверх
Максименко Дмитрий
Гость
 
Создано: 18.01.2012 10:13:16
 
 
Да, про досрочное выполнение последующих задач раньше не слышали и не сталкивались. Действительно хотелось бы взглянуть на ваши настройки LOOP. Ну а приостановку при необходимости можно сделать по деревенски- воткнуть таск паузы который будет запускать скрипт sleep (20000).
 
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 18.01.2012 12:35:52
 
 
Цитата
Александр Александров пишет:
вот как
примерно выглядит часть настройки loop.xml в ЦДУ.

- <TASK NAME="get_ti_CDU" ENABLE="1" PATH="C:\kocmoc07\Get_TM\­?Get_TM.exe">
<PAR VAL="C:\PROGRA~1\RASTRW~1­?\LOOP\TMP" QUOTS="NO" />
<PAR VAL="[KDATE]" QUOTS="NO" />
<OK VAL="0" />
</TASK>


Александр, может быть я чего то не понимаю, но у get_tm 5 параметров, два последних - debug level и dump необязательные - но три первых - папка , дата , и алиас БДРВ оика обязательны, а как раз третьего параметроа я у Вас и не вижу.
Правда дело может быть в том, что у коллег из ЦДУ один боевой ОИК. У нас их несколько и периодически один преключается на другой, так что без указания оика мне никак не обойтись.
 
Профиль
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 18.01.2012 12:40:14
 
 
Цитата
Максименко Дмитрий пишет:
Да, про досрочное выполнение последующих задач раньше не слышали и не сталкивались. Действительно хотелось бы взглянуть на ваши настройки LOOP. Ну а приостановку при необходимости можно сделать по деревенски- воткнуть таск паузы который будет запускать скрипт sleep (20000).


В принципе обошелся следующим образом - впихнул в один скрипт вызовы get_tm и sp_cycle
Синтаксис примерно следующий
Return=WSShell.Run(...) в таком варианте пуск sp cycla идет как раз после самозакрытия окна get_tm.

 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 660
Дата регистрации: 31.05.2008
Создано: 18.01.2012 13:15:09
 
 

Цитата
Правда дело может быть в том, что у коллег из ЦДУ один боевой ОИК. У нас их несколько и периодически один преключается на другой, так что без указания оика мне никак не обойтись


их вполне можно описать в
<PAR VAL="бла бла блаа1" QUOTS="NO" />
<PAR VAL="бла бла блаа2" QUOTS="NO" />
<PAR VAL="бла бла блаа3" QUOTS="NO" />

что и было сделано в ЦДУ.
Вот еще вариант ОДУ Юга:

<TASK NAME="GET_TI" ENABLE="1" PATH="c:\Program Files\RastrWin3\LOOP\TM\g­et_tm\Get_tm.exe" QUOTS="NO">
<PAR VAL="..\..\TMP" QUOTS="NO" />
<PAR VAL="[KDATE]" QUOTS="NO" />
<PAR VAL="/oik:ОДУ Юга СК7\" QUOTS="NO" />
<PAR VAL="/dump:1" QUOTS="NO" />
<PAR VAL="/debug_level:7" QUOTS="NO" />
<OK VAL="0" />


Если Вы нам пришлете коммандную строку получения ТИ из ОИК, мы Вам поможем её преобразовать в наш XML.

Цитата
таком варианте пуск sp cycla идет как раз после самозакрытия окна get_tm.


Это потому, что WSShell.Run не ждёт окончания порождённого им процесса. Вот справка по нему

WSShell.Run<Command>,<Win­dowStyle>,<WaitOnReturn>)­

Назначение: создаёт новый независимый процесс, который запускает заданное приложение.

Параметры:

<Command> - строка, командная строка запуска приложения.
<WindowStyle> - необязательный, число. Определяет вид окна запускаемого приложения. Некоторые возможные значения:
0 - Не отображает окно.
1 - Активизирует и отображает окно.
2 - Активизирует окно и отображает его в свёрнутом виде.
3 - Активизирует окно и отображает его в максимизированном виде.
<WaitOnReturn> - необязательный, булево (число). True - сценарий возобновит работу только после завершения вызванного процесса. False (по умолчанию) - управление передаётся сразу обратно в сценарий.
Описание: если параметр "WaitOnReturn" установлен в True, метод возвращает код выхода вызванного приложения. Иначе метод всегда возвращает ноль.

 
Профиль
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 18.01.2012 16:55:55
 
 
Океюшки Шутливо Спасибо за помощь. Попробую использовать возможности loop по максимуму с учетом всего вышесказанного.
 
Профиль
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 18.01.2012 18:37:39
 
 
Вот еще такая проблема встала - возможно ли использование динамического обмена данными с Excel для отображения результатов циклических расчетов ?
 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 660
Дата регистрации: 31.05.2008
Создано: 18.01.2012 19:47:58
 
 
Так далеко мы не зашли, сейчас есть лишь прототип с записью текстовых файлов и дампов неудачных циклов. По моему убеждению цикл и отображатель должны жить в отдельных процессах и быть как можно менее связанными.
 
Профиль
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 18.01.2012 21:55:13
 
 
Согласен. Но что менее связанное можно предложить, чем Loop и Excel ?
 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 660
Дата регистрации: 31.05.2008
Создано: 18.01.2012 22:26:15
 
 
Loop+БД+Rastr3
 
Профиль
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 18.01.2012 22:32:15
 
 
Что имеется в виду под БД ?
Что то близкое к мегаточке или например к Oracle
 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 660
Дата регистрации: 31.05.2008
Создано: 18.01.2012 23:57:28
 
 
Можно начать с Firebird, а там как пойдёт.
 
Профиль
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 19.01.2012 14:17:25
 
 
Цитата
Александр Александров пишет:
2) результат get_ti/get_tm нужно проверять


Правильно я понял, что этим занимается таск "CHECK_GET_TI" ? А можно рассказать немного поподробнее о тасках
"CHECK_GET_TI"
"GET_TI_RND"
"CHECK_SP_CYCLE" ?
 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 660
Дата регистрации: 31.05.2008
Создано: 19.01.2012 15:11:12
 
 
Взято из текущей инструкции администратора Растр3.

-------------------------­-------------------------­-----
Проверка результатов выполнения программы "get_ti"
LOOP.exe "PATH2LOG" "PATH2XML" "/CHECK_GET_TI"
"PATH2LOG" ? полный путь к логу программы (по молчанию "%RASTRWIN3%\LOOP\TMP\log­_CHECK_GET_TI_.txt")
"PATH2XML" ? полный путь к XML настройкам программы (по молчанию %RASTRWIN3%\LOOP\loop.xml­")
Проверяется содержимое файла "type", если первые два символа "ОК" то возвращается код успешного выполнения, иначе ошибка.

Соответствует тэг <CHECK_GET_TI>

Параметры:
@DIR_TI ? полный путь к директории с файлом "type" программы "get_ti".

-------------------------­-------------------------­-----

Проверка результатов выполнения программы "sp_cycle"

LOOP.exe "PATH2LOG" "PATH2XML" "/CHECK_SP_CYCLE"
"PATH2LOG" ? полный путь к логу программы (по молчанию "%RASTRWIN3%\LOOP\TMP\log­_CHECK_SP_CYCLE_.log")
"PATH2XML" ? полный путь к XML настройкам программы (по молчанию %RASTRWIN3%\LOOP\loop.xml­")
Проверяется содержимое файла "astra_k", если он содержит две строки, начинающиеся строчкой " 0" ? то возвращается код успешного выполнения, иначе ошибка.
Соответствует тэг <CHECK_SP_CYCLE>

Параметры:
@DIR_OC ? полный путь к директории с файлом "astra_k" программы "sp_cycle".

-------------------------­-------------------------­-----

GET_TI_RND - где-то у нас существует эмулятор обновления данных ТИ.
 
Профиль
Наверх


Сообщения 1 - 25 из 60
Начало | Пред. | 1 2 3 | След. | Конец 

Читают тему
гостей: 2, пользователей: 0, из них скрытых: 0


Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация







Программный комплекс «RasrWin»
Программный комплекс «RastrWin»
© «RastrWin», 1988-2019