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

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

   
Автор / Author Тема / Topic: Bat'аника в TraceMode 6
Сергей Александрович
Active Forum Member / Активный участник форума
Участник № / Member № 2884


Icon 1 отправлено / posted      Профиль для / Profile for Сергей Александрович           Редактировать/удалить сообщение / Edit/Delete Post 
Здравствуйте.

Решил поделиться со всеми вами определенной информацией, а также спросить совета знающих.

Потребовалось запустить внешний exe файл. С помощью канала Call типа Exec данное действие успешно реализуется.
Но! внешнее приложение - программа нашего программиста, и для ее успешного старта требуется обнаружение (ею самой) нескольких файлов в родной директории. При запуске с ТМ программа ругается на то, что не может запуститься, ибо не видит того, сего и третьего. Ладно, оставим это на совести разработчика, так как я нашел другое вполне приемлемое решение (так мне казалось сначала): запустить батник, который уже в свою очередь запустит исполняемое приложение.

Создал канал Call такой конфигурации:

ИМЯ: c:\windows\system32\cmd
КОММЕНТАРИЙ: "/k c:\test\ckyokean\start.bat"
ТИП: Output
ПАРАМЕТР: 1

Содержание bat файла:

start program.exe
exit

Вызов происходит по нажатию кнопки и записи 1 в канал.

Все успешно загружается (и в cmd.exe и в ТМ)...

Однако проблема в том, что путь до start.bat на самом деле другой и содержит пробелы! Раз пробелы есть, значит надо ставить кавычки, скажете вы и будете правы. Пробуем:

КОММЕНТАРИЙ: "/k "c:\program files\ckyokean\start.bat""

- не работает (оно и понятно, надо ведь экранировать)... а если так (без начальных кавычек):

КОММЕНТАРИЙ: /k "c:\program files\ckyokean\start.bat"

- тоже не работает.

Прошу обратить внимание, что в командной строке (на чем я и тестировал) все работает, то есть тест я проводил следующим образом:

cmd /k "c:\program files\ckyokean\start.bat" - так работает

Ладно, я подумал, что может ТМ ставит кавычки при перенесении комментария и без них не будет работать. Добился работоспособности в cmd.exe следующим образом:

cmd "/k ""c:\program files\ckyokean\start.bat"

- все работает. Перенес в комментарий строку

"/k ""c:\program files\ckyokean\start.bat"

- не работает!

Пробовал и так:

"/k ""c:\program files\ckyokean\start.bat"""

и так (уже показывал):

/k "c:\program files\ckyokean\start.bat"

- не работает.

Собственное вопрос такой, каким образом ТМ формирует строку запуска exe файла (в моем случае это cmd.exe) и передачу аргументов файлу? С кавычками или без? Как заставить работать данную схему в случае, когда путь к файлу указан с пробелами.

P.S. В большинстве случаев ошибка такая: 'C:\Program' is not recognized as an internal or external command,operable program or batch file.

Сообщения / Posts 65 | Из / From: Российская Федерация  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Romсheg
unregistered



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post 
ТМ6 вообще не управляет папками, поэтому при запуске внешнего ПО в системе текущей папкой всегда является папка узла, который запустили в рантайме. Совет вашему программисту - пусть прописывает в явном виде пути к своим конфигам, иначе ТМ ему все это перевернет. [Улыбка / Smile]
Вообще насчет запуска внешнего - тут правила такие (некоторые по личному опыту):
1) Пути с пробелами - берите в кавычки
2) Старайтесь избегать длинный путей - ТМ не умеет работать с длинными путями более 39 символов. [Улыбка / Smile] Старайтесь даже сам ТМ не ставить в директорию по умочанию, чем ближе положешь, тем быстрее возьмешь (в смысле проще потом работать будет и настраивать).
3) Замечен такой интересный факт - в некоторых случаях приложение приходилось по имени приводить к 8-символьному формату, потому как длинное имя ехе-шника не воспринималось ни в какую.
4) Все что запускаете из проекта - лучше кладите в отдельную папку, путь к которой прописывайте в PATH, так проще и проект потом будет настроить и вообще не мучиться с путями, потому как они будут уже на уровне самой ОС.

[Пдмигивание / Wink]

IP / IP: IP адрес / IP address | Report this post to a Moderator
Сергей Александрович
Active Forum Member / Активный участник форума
Участник № / Member № 2884


Icon 1 отправлено / posted      Профиль для / Profile for Сергей Александрович           Редактировать/удалить сообщение / Edit/Delete Post 
Romсheg, спасибо за комментарии.

Да, я уже понял, что текущая директория устанавливается самим TM, так что тут все понятно.
1) Так вот и не получается тут эта схема, причем в CMD.EXE все работает, а в ТМ видимо своя особенность. Все таки хотелось видеть комментарий группы разработки.
2) Соглашусь, хотя обычно ставлю в директорию по-умолчанию, так как считаю, что программы должны корректно работать и с пробелами и с длинными путями (раз уж в инсталляторе такой путь прописан). Кроме того, путь установки наших программ (а здесь инсталлятор) тоже имеет в себе "Program Files". Но, если не получится заставить работать в таком варианте, придется ставить в папку C:\TraceMode\ [Улыбка / Smile]
3) Такой вариант не пробовал, но если ничего не останется, ...

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


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
CALL_EXEC. Запуск bat-файлов.
a. ПАРАМЕТР=1
b. Имя канала=C:\Windows\System32\cmd.exe
c. Комментарий=/c start <путь>\<name>.bat
d. Последней строкой в bat-файле должна быть: EXIT.

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


Icon 1 отправлено / posted      Профиль для / Profile for Сергей Александрович           Редактировать/удалить сообщение / Edit/Delete Post 
Попробовал. Не работает.

Пробовал следующие варианты:

1. Комментарий=/c start <путь с пробелами>\<name>.bat
2. Комментарий=/c start "<путь с пробелами>\<name>.bat"
3. Комментарий="/c start ""<путь с пробелами>\<name>.bat"

Ошибки разные. Не знаю, может у вас и получилось, но у меня не в какую.

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


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Задайте путь без пробелов.
Комментарий=/c start <путь без пробелов>\<name>.bat
Перепроверено в релизе 6.07.

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


Icon 1 отправлено / posted      Профиль для / Profile for Сергей Александрович           Редактировать/удалить сообщение / Edit/Delete Post 
Так понятно, что будет работать без пробелов [Улыбка / Smile] Я же это написал еще в первом сообщении.
Ясно, что заставить работать это нельзя штатными средствами.

Выхода два: либо подключить DLL библиотеку, либо задать путь без пробела.

Спасибо за ответы.

Сообщения / Posts 65 | Из / From: Российская Федерация  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Rinag
Forum Member / Участник форума
Участник № / Member № 4499


Icon 1 отправлено / posted      Профиль для / Profile for Rinag           Редактировать/удалить сообщение / Edit/Delete Post 
Аналогичная задача по созданию Helpa. Сам Help в формате pdf. Acrobat Reader расположен в C:\Program Files\Adobe\Reader 9.0\Reader. Добывил в path=C:\Program Files\Adobe\Reader 9.0\Reader; C:\WINDOWS\system32. Прописал в CALC_EXEC
Имя: AcroRd32.exe
Комментарий: "help.pdf"
Тип вызова: Exec
Параметр:1
Период: 3 цикл CALC.
У меня 2 вопроса, почему не запускается даже Acrobat reader, не говоря уж о том что сам файл не подгружается в нее. И как реализовать вызов по событию, мне не нравится, что канал вечно с периодом 3 calc крутится в памяти.

Сообщения / Posts 40 | Из / From: RU  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Rinag
Forum Member / Участник форума
Участник № / Member № 4499


Icon 1 отправлено / posted      Профиль для / Profile for Rinag           Редактировать/удалить сообщение / Edit/Delete Post 
Экмперементировал и с cmd.exe. Пока не пропишу весь путь к нему или не положу cmd.exe в корень узла, так же не запускается.
Сообщения / Posts 40 | Из / From: RU  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Почему ОС не запускает файлы при указании доступа к нми в переменной path, надо смотреть в настройках ОС. Trace Mode 6 передает в ОС имя файла, дальше - функции ОС.

Чтобы функция запуска приложения не реализовывалась с каждым своим периодом, сделайте канал CALL.EXEC типа OUT и запускайте ее интерактивно или программно.

Сообщения / Posts 17321 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Romсheg
unregistered



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post 
2AdAstra Technical Support:
В том и дело, что в ОС некорректно строку запуска передает сам ТМ6.

[ 07.07.2011, 17:33: Сообщение отредактировал / Message edited by AdAstra Technical Support ]

IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


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

Послать новую тему / Post New Topic  
Тема закрыта / Topic Closed  Тема закрыта / Topic Closed
Открыть тему / Open 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