dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > загрузка DOS прог через LISP

загрузка DOS прог через LISP

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 10.08.2005, 12:35 #1
загрузка DOS прог через LISP
Gaa
 
сан-техник на пенсии
 
Регистрация: 23.05.2005
Сообщений: 132

Gaa вне форума Вставить имя

Спрашиваю без надежды на ответ, а для очистки совести перед собой. Проблема такая:
Есть прога (*.EXE) писаная в DOSe язык CLIPPER на рубеже 80-90 гг прошлого века, и через описание в ACAD.PGP она запускалась в процессе работы LISP проги, ес-но последовательно выполнялись LISP -> *.exe -> LISP. И все было хорошо до появления AcadWINа тут с точки загрузки ЕХЕ проги они заработали паралельно, а это разрушало весь алгоритм:
1. LISP -> подготовка параметров для расчета и запись в файл,
2. *.exe -> читала файл, вычисляла что-то и выгружала это в файл в виде списков
3. LISP -> загружал список и чертил или не чертил "табуретку".

Ничего легче не придумал, чем остановить прогу перед 3. и продолжить после 2.

Код:
[Выделить все]
 
........
  (setq Path_Pro (getvar "DWGPREFIX")) ;14 
   (setq F1 (open "c:\\PRG_14\\TEMP\\Path.tmp" "w")) ;14  
   (write-line Path_Pro F1) ;14  
   (close F1) ;14

 ;** ENTER NAME OF FILE                                     ;14
   (setq FILE "C:\\prg_14\\TEMP\\PRO_TEMP.PRF") ;14

   (COMMAND (strcat "PRO_" Param1))   ; запуск ЕХЕ файла 

   (getstring "\nPress any key....") ;14

   (if (findfile FILE)
.........

Для прояснения - Если кто помнит, в то время был просто LISP без всяких V.. и т.д. поэтому оптимизации и итерации всякие через него сделать и отладить было слабо, а комп был PC XT с 86 проц и даже сопроцессор не сильно усилял вычисления которые могли длиться до обеда и дальше поэтому сделал такой симбиоз. Все эти годы проще было подправить исходники и юзить дальше чем все переписывать на VBA или VL, просто лень, тем более, что ВСЕ РАБОТАЛО и продолжает работать.

М.Б. кто ни-дь что ни-дь посоветует как избавиться от (getstring "\nPress any key....")

или м.б. оставить - есть не просит?
__________________
Спасибо
Просмотров: 7102
 
Непрочитано 10.08.2005, 13:21
#2
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,208


В подобных случаях я использую такой алгоритм:

1. Лисп-прога сохраняет некие данные в файле на диске.
2. Лисп запускает ДОС-прогу, которая перые доли секунды работает параллельно с Лиспом.
3. Работа Лисп-проги приостанавливается посредством функции (alert ...).
4. ДОС-прога считывает данные из файла и обрабатывает их (возможно, интерактивно).
5. ДОС-прога записывает результаты своей бурной деятельности в файл и закрывается.
6. Юзер кликает на Ок в окошке функции (alert ...) - и Лисп продолжает свою работу: считывает данные из файла и делает с ними то что нужно.
Pilot вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 10.08.2005, 15:32
#3
Gaa

сан-техник на пенсии
 
Регистрация: 23.05.2005
Сообщений: 132


>>Pilot

Это элегантней,
Спасибо, попробую.
__________________
Спасибо
Gaa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 11.08.2005, 08:22
#4
Gaa

сан-техник на пенсии
 
Регистрация: 23.05.2005
Сообщений: 132


>>Pilot

Попробовал, но оставил СВОЙ вариант, т.к. (alert ...) закрывает доступ и к другим чертежам.
__________________
Спасибо
Gaa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 11.08.2005, 09:19
#5
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,208


Цитата:
Сообщение от Gaa
[b](alert ...) закрывает доступ и к другим чертежам.
Естественно.
Pilot вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 11.08.2005, 12:02
#6
Fogel

сисадмин/инженер-механик
 
Регистрация: 21.01.2005
Челябинск
Сообщений: 7,190


Можно высказать непродуманое предложение? Если ДОС программа в конце своих вычислений впишет некую строчку типа "FIN" а в лиспе завязать в цикле проверку наличия этой строчки...
Fogel вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 11.08.2005, 13:52
#7
Gaa

сан-техник на пенсии
 
Регистрация: 23.05.2005
Сообщений: 132


>>Fogel

что-то типа:

Код:
[Выделить все]
(while (not(findfile FIN)) (setq a 1))
так?
Спасибо ,земляк, попробую.
__________________
Спасибо
Gaa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 11.08.2005, 19:01
#8
Gaa

сан-техник на пенсии
 
Регистрация: 23.05.2005
Сообщений: 132


>>Fogel

поставил такую штуку в лисп прогу
Код:
[Выделить все]
(while (not(findfile "C:\\fin.txt")) (setq a 1))
смотрел в отладчике - на этой фуне циклит все нормально, ДОС работает, и после записи ДОС прогой файла fin.txt, ЛИСП продолжает работать дальше.
А в это время на экране происходит следующее:
АКАД плотно зависает и не реагирует даже на мат, белеет рабочее поле, потом исчезают тулбары и строка команд, и это продолжается до момента записи ДОС прогой файла fin.txt, потом АКАД продолжает работать как будто ничего не было!

Во как!
__________________
Спасибо
Gaa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 12.08.2005, 08:04
#9
Fogel

сисадмин/инженер-механик
 
Регистрация: 21.01.2005
Челябинск
Сообщений: 7,190


Но главное работает ведь! Впрочем картина знакомая. Может соорудить задержку чтобы диск не терроризировать? Допустим проверять каждую секунду...
Fogel вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 12.08.2005, 09:50
#10
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,208


А если в цикл (while ... внедрить (command "delay" ... - может так жестко виснуть перестанет? Или будет подвисать, но меньше?
Pilot вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 12.08.2005, 13:25
#11
Gaa

сан-техник на пенсии
 
Регистрация: 23.05.2005
Сообщений: 132


Цитата:
Может соорудить задержку чтобы диск не терроризировать?
А если в цикл (while ... внедрить (command "delay" ... -?
Террора меньше, а картина та-же.... [/quote]
__________________
Спасибо
Gaa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 12.08.2005, 13:29
#12
BigBrother

Design & programming :)
 
Регистрация: 14.02.2004
Новосибирск
Сообщений: 172
Отправить сообщение для BigBrother с помощью ICQ Отправить сообщение для BigBrother с помощью Skype™


В Doslib есть dos_exewait, подходит, если конечно exe после выполненной работы самозакрывается...
BigBrother вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 12.08.2005, 13:30
#13
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,106


> Gaa : http://www.autocad.ru/cgi-bin/f1/board.cgi?t=19678iP - там ничего интересного нет?
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 12.08.2005, 14:05
#14
Gaa

сан-техник на пенсии
 
Регистрация: 23.05.2005
Сообщений: 132


Цитата:
Doslib
а где она находится?
__________________
Спасибо
Gaa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 12.08.2005, 14:11
#15
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,106


http://www.mcneel.com/doslib.htm
И посмотри дополнительно: http://www.kurganobl.ru/cad/book.jsp...id=205&tn=main
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 12.08.2005, 19:19
#16
Gaa

сан-техник на пенсии
 
Регистрация: 23.05.2005
Сообщений: 132


Спасибо Всем.

Поиграл все предложенные варианты, но пока оставил свой старый, он хоть и корявый, однако до окончания ДОС проги не блокирует АКАД. Мне это важно, т.к. в этот период возникает потребность погулять по листам и посмотреть кое что.

м.б. еще что-нидь подкинут?
__________________
Спасибо
Gaa вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > загрузка DOS прог через LISP

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Быстрый переход

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||