Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » Редактор проекта TRACE MODE 6 / » Остановка МРВ

   
Автор / Author Тема / Topic: Остановка МРВ
PMA
Forum Professor / Завсегдатай форума
Участник № / Member № 1387


Icon 1 отправлено / posted      Профиль для / Profile for PMA           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Добрый день !
При работе МРВ нужно отловить событие когда оператор нажал кнопку остановить МРВ, и выполнить определённую программу.
Это необходимо для установки выходных сигналов
в исходное состояние.
Как можно это сделать ???

Сообщения / Posts 159 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Тогда необходимо останавливать МРВ не через меню, а программно через системную переменную @Exit - смотрите описание в справочной системе.
А в графике реализовать оператору кнопку выключения МРВ.

Сообщения / Posts 17321 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
PMA
Forum Professor / Завсегдатай форума
Участник № / Member № 1387


Icon 1 отправлено / posted      Профиль для / Profile for PMA           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Использовал переменную @Exit, результат очень
странный, предполагалось что произойдёт отключение монитора аналогичное нажатию кнопки на бегущем человеке однако...
1. Остановка происходит вроде бы, но сохраняется работоспособность всех графических элементов, то есть можно открывать - закрывать окна вводить значения.
2. Кнопка с бегущим человеком находится в утопленном состоянии, так как будто монитор запущен.

Пожалуйста дайте более подробное описание того, что происходит при присваивании значени 5 переменной @Exit, в документации очень мало информации.

Сообщения / Posts 159 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Все верно - сервер останавливается, но графика еще работоспособна, она независит от математики. После останова МРВ может быть закрыт штатными средствами (например, Alt+F4). Других способов нет.
Сообщения / Posts 17321 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Виталий
Junior Member / Новичок
Участник № / Member № 2118


Icon 1 отправлено / posted      Профиль для / Profile for Виталий           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Кстати, в полноэкранном режиме все равно alt+F4 не работает, и смысл в @Exit теряется полностью.

У меня например за машиной сидит "чайник" и для него нажать в полноэкранном режиме с отключенным меню ctrl+f ctrl+r alt+F4 совершенно нереально. Ему надо так - запустил весь проект одной кнопкой (это я по простому на bat сделал) и закрыл одной же кнопкой целиком, т.е. чтобы на экране ничего не осталось и в задачах тоже.

Может быть можно передать среде последовательность нажатых клавиш?
Может кто пробовал ActiveX объект сделать, который бы выполнил подобную операцию, или грубо закрыл процесс в диспетчере или еще что от внешнего программирования?

Сообщения / Posts 16 | Из / From: Kazakhstan  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Дмитрий Юрьевич М.
Junior Member / Новичок
Участник № / Member № 1930


Icon 1 отправлено / posted      Профиль для / Profile for Дмитрий Юрьевич М.           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Подпишусь под каждым словом Виталия. Мне нужно то же самое! Идея была вызвать внешнюю dll, которая найдёт процесс МРВ и добьёт его снаружи. Но пока не писал, всё ещё надеюсь, что ADASTRA Technical Support поможет решить проблему более гуманными способами. Может, в релиз 6.05 добавить такую возможность???? Закрытие программы для чайника?
Сообщения / Posts 23 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Константин Арапов
Forum Member / Участник форума
Участник № / Member № 1998


Icon 1 отправлено / posted      Профиль для / Profile for Константин Арапов           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Народ ! Эта тема параллельно обсуждается в разделе
"Мониторы Реального Времени / Real Time Monitors".

Разаработчики сказали, что им
"необходимо обоснование, в каких случаях и почему необходима остановка (а возможно и полное завершение работы) удалённого узла."
И они просят направлять это обоснование на адрес техподдержки hotline2@adastra.ru

Предлагаю всем написать. Я уже это сделал.

Сообщения / Posts 32 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Константин Арапов
Forum Member / Участник форума
Участник № / Member № 1998


Icon 1 отправлено / posted      Профиль для / Profile for Константин Арапов           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Параллельно эта тема обсуждается здесь.

http://forum.adastra.ru/ubb/ultimatebb.php/ubb/get_topic/f/35/t/000084.html

Сообщения / Posts 32 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Майборода Алексей
Forum Haunter / Завсегдатай форума
Участник № / Member № 1701


Icon 1 отправлено / posted      Профиль для / Profile for Майборода Алексей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Можно это делать вот так (вариант не оптимален накидал за 5 минут)
Пишем на делфи (например) получаем exe теперь если запустить exe то RTM выгрузится полностью.
Как запустить внешнее приложение из TM наверное уже все знают.
program KillRTM;

uses
Windows;

const
PROCESS_TERMINATE = $0001;
var
ProcessHandle : THandle;
ProcessID: Integer;
TheWindow : HWND;

{$R *.res}

begin
TheWindow := FindWindow('QWidget', nil);
if TheWindow <> 0 then
begin
GetWindowThreadProcessID(TheWindow, @ProcessID);
ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
TerminateProcess(ProcessHandle,4);
end;
end.

Сообщения / Posts 106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Константин Арапов
Forum Member / Участник форума
Участник № / Member № 1998


Icon 1 отправлено / posted      Профиль для / Profile for Константин Арапов           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
А если речь идет о закрытии NLL? Насколько я понимаю, там вообще никакой мат. обработки нет.
И внешнюю программу, насколько я понимаю запустить нельзя...

Сообщения / Posts 32 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
В узле NLL можно использовать программы, а соответственно и внешние библиотеки.
Сообщения / Posts 17321 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Константин Арапов
Forum Member / Участник форума
Участник № / Member № 1998


Icon 1 отправлено / posted      Профиль для / Profile for Константин Арапов           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Интересно. Код работает. Возникают два вопроса:

1.Почему именно класс QWidget ? Как Вы определили,
можно поинтересоваться ?
2. Не убьем ли мы таким образом какое нибудь другое приложение, имеющее такой же класс ?

Сообщения / Posts 32 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Майборода Алексей
Forum Haunter / Завсегдатай форума
Участник № / Member № 1701


Icon 1 отправлено / posted      Профиль для / Profile for Майборода Алексей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
1) Определил при помощь Spy++ входит в состам Visual Studio.
2) Если запустите более одного раза то можете и убить, например у меня была запушена среда разработки и профайлер, первым запуском вынесло профайлер а второй запуск вынес среду разработки [Улыбка / Smile] . Это я и имел ввиду говоря о неоптимальности. Просто у меня такая задача не стоит и я с этим не занимался, просто столо интересно и накидал за 5 минут.
Ещё как вариант можно написать программку которая в это окно будет посылать нажатия клавишь (Ctrl+R и т.д.).
Можно узнать какое окно находится под указателем мыши (получим кнопку на которую нажимаем) подняться по иерархии объектов до главного окна и тогда закроется именно то главное окно где был курсор.
Вобщем вариантов море, главное фантазия.

Сообщения / Posts 106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Константин Арапов
Forum Member / Участник форума
Участник № / Member № 1998


Icon 1 отправлено / posted      Профиль для / Profile for Константин Арапов           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Наклепал DLL-ку. Вроде как работает. Вот интересно только КАКИЕ ЕЩЕ
приложения эта штука может убить ?
Просто я в этих классах окон не секу... То что IDE выбило - фиг с ним, а вот если какое другое приложение...
У меня вот куча приложений разных открыто, но вроде как ничего не убилось... Но может быть есть такие приложения ? Если есть, то интересно какие, кроме TM6 IDE ?

Сообщения / Posts 32 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Майборода Алексей
Forum Haunter / Завсегдатай форума
Участник № / Member № 1701


Icon 1 отправлено / posted      Профиль для / Profile for Майборода Алексей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Те приложения графика которых разработана с помощью библииотеки Qt3 (версии могут быть разные). Можно сделать так [Улыбка / Smile] смотреть есть ли процесс rtm.exe и если есть выполнять код, если нету то не выполнять тем самым вы не убъете остальные приложения.
Сообщения / Posts 106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Майборода Алексей
Forum Haunter / Завсегдатай форума
Участник № / Member № 1701


Icon 1 отправлено / posted      Профиль для / Profile for Майборода Алексей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Ну вот в общем накидал за 15 минут. Теперь она избавлена от указанных недостатков. Убивает именно процесс rtc.exe и ничего более.
program KillRTM;

uses
Windows,
Tlhelp32;

const
PROCESS_TERMINATE = $0001;

var
hProcessSnap : THandle;
pe32 : PROCESSENTRY32;
temp : string;
PID : cardinal = 0;
ProcessHandle : THandle;

{$R *.res}

begin
hProcessSnap := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
pe32.dwSize := sizeof(PROCESSENTRY32);

if Process32First(hProcessSnap, pe32) then
temp := pe32.szExeFile;
if Pos('rtc.exe', temp) <> 0 then
begin
PID := pe32.th32ProcessID;
CloseHandle(hProcessSnap);
end
else
begin
pe32.dwSize := sizeof(PROCESSENTRY32);
while Process32Next(hProcessSnap,pe32) do
begin
temp := pe32.szExeFile;
if Pos('rtc.exe', temp) <> 0 then
begin
PID := pe32.th32ProcessID;
CloseHandle(hProcessSnap);
end;
pe32.dwSize := sizeof(PROCESSENTRY32);
end;
end;

if PID <> 0 then
begin
ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, PID);
TerminateProcess(ProcessHandle,4);
end;

end.

Сообщения / Posts 106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
amber
Junior Member / Новичок
Участник № / Member № 4553


Icon 1 отправлено / posted      Профиль для / Profile for amber           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Не появились ли в версии 6.07 штатные (более простые) способы добавить на экран кнопку, по нажатии на которую будет останавливаться / закрываться МРВ?
Сообщения / Posts 20 | Из / From: Ukraine  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Не появились.
Сообщения / Posts 17321 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
amber
Junior Member / Новичок
Участник № / Member № 4553


Icon 1 отправлено / posted      Профиль для / Profile for amber           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Планируется ли добавление в будущих релизах?
Сообщения / Posts 20 | Из / From: Ukraine  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
По вопросам развития системы следует обращаться по sales@adastra.ru.
Сообщения / Posts 17321 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2