powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [gt.m] Обработка прерываний в mumps
38 сообщений из 38, показаны все 2 страниц
[gt.m] Обработка прерываний в mumps
    #39004785
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли как то обрабатывать прерывания в mumps в частности в gt.m?
Например если надо выполнить подпрограмму после нажатия клавиши F9
Можно ли это сделать средствами mumps - например какими нибудь функциями z...
Если можно то какими и как? Или средствами mumps это сделать не возможно и надо делать только при помощи библиотечных функций Си или ещё каких нибудь?
Если кто знает как это сделать подскажите пожалуйста.
За помощь заранее буду благодарен!
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39004811
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39005133
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я совсем не про отладку спрашивал.
Break, Breakpoint совсем про другое.
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39005145
andrew000999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Распознать нажатую клавишу можно с помощью команды read
вот так примерноr1 r *%:1  g:'$t r1 s s=% 
r2 f i=1:1:100 r *%:0 i $t s s=$s(s'<0:s_","_%,1:$a(%))в переменной s для клавиши F9 будет примерно следующая строка
s="27,79,88" - для разных терминалов по разному
в пределах одного терминала генерируемый код уникален
для разных функциональных клавиш
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39005162
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет с помощью команды read сделать не получится, после строки:
r1 r *%:1 g:'$t r1 s s=%
программа останавливается и ждёт нажатия клавиши.
Мне же нужно совсем другое, у меня есть подпрограмма которая должна выполниться после нажатия клавиши F9 и есть основная программа которая всё время выполняется. Клавиша F9 может быть нажата в любой момент выполнения основной программы, в какой момент будет нажата клавиши F9 заранее не известно.
То есть необходимо например как в ассемблере реализовать выполнение подпрограммы по прерыванию вызванному нажатием клавиши.
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39005195
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Виталийv4567 у меня есть подпрограмма которая должна выполниться после нажатия клавиши F9 и есть основная программа которая всё время выполняется.
Делаете job программы "которая всё время исполняется", а сами терпеливо ждёте F9 :)
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39005196
andrew000999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я могу ошибаться, но похоже такого механизма в gt.m нет
во всяком случае на уровне языка
Данную проблему можно решить следующим образом
вот эту функцию вызываете в где-нибудь в основном цикле головной программы
s s=$$read()
и в зависимости от значения s либо продолжаете основной цикл
либо вызываете свою подпрограмму с последующим выходом в основной цикл
но это то-же плохо:
1. На время выполнения подпрограммы приостанавливается основной цикл
2. Использование в команде read нулевого времени ожидания
в цикле основной программы может значительно перегружать процессорread()
  r *%:0 q:%=-1 ""   s s=%
  f i=1:1:100 r *%:0 i $t s s=$s(s'<0:s_","_%,1:$a(%))
  q s
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39005198
andrew000999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или действительно что-то мудрить c jobами
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39005482
velmar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Виталийv4567.
Мне же нужно совсем другое, у меня есть подпрограмма которая должна выполниться после нажатия клавиши F9 и есть основная программа которая всё время выполняется. Клавиша F9 может быть нажата в любой момент выполнения основной программы, в какой момент будет нажата клавиши F9 заранее не известно.
То есть необходимо например как в ассемблере реализовать выполнение подпрограммы по прерыванию вызванному нажатием клавиши.
А зачем на сервере обрабатывать события, которые нужно обрабатывать на клиенте? Ничего не понимаю :(
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39005560
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виталийv4567надо выполнить подпрограмму после нажатия клавиши F9
Давай рассмотрим твою проблему т.с. в общем аспекте...

Есть М-сервер... Есть какие-то клиентские компы... Они все как-то могут подключаться к М-серверу, типы подключений так же разные... При подключении все они каким-либо образом запускают какие-то программки...
Где будут давить F9?
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39006471
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaВиталийv4567надо выполнить подпрограмму после нажатия клавиши F9
Давай рассмотрим твою проблему т.с. в общем аспекте...

Есть М-сервер... Есть какие-то клиентские компы... Они все как-то могут подключаться к М-серверу, типы подключений так же разные... При подключении все они каким-либо образом запускают какие-то программки...
Где будут давить F9?
Ну иногда надо прерывать и работу сервера. Только F9 для этого не подходит. В CACHE в этом случае я использовал <CTRL>C с установкой обработчика ошибок. Обработка событий в MUMPS отсутствует, остается полагаться только на обработку ошибок.
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39006499
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_sharНу иногда надо прерывать и работу сервера.
Хорошо, остановимся пока на сервере...
misha_sharТолько F9 для этого не подходит. В CACHE в этом случае я использовал <CTRL>C с установкой обработчика ошибок.
Т.е. ты садился за серверный комп и просто давил Ctrl+C? Вот только операционке серверной пофиг на тот Ctrl+C... На это нажатие может среагировать разве что активное окно с терминалом, в котором запущена какая-то программа...
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39006798
Фотография П.С.М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_sharОбработка событий в MUMPS отсутствует
Хм... А в каком ЯП присутствует? :) Ну что б не в каком-нибудь фраемворке реализовано, а прям являлось стандартной частью языка?

Кхе... Кхе... имею мнение сказать:
Событие - это абстракция не относящаяся к языку программирование. Обработка событий - также не является особенностью какого-либо ЯП, а является, самым что ни на есть, процессом, поддающимся автоматизации и реализации на ЯП :)
Т.ч. ничего не мешает с помощью языка программирования MUMPS, реализовать обработку событий.
PS: Тынц , напрямую к мампсу не относится, но идея обработки везде одинакова (сбор событий в цикле и вызов соответствующих им обработчиков).
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007107
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я когда спрашивал имел ввиду следующее.
При нажатии клавиши в компьютере на аппаратном уровне будет прерывание от клавиатуры. Например в ассемблере это прерывание можно обработать, написать подпрограмму которая будет работать только тогда когда будет нажата соответствующая клавиша.
Я думал что в mumps может быть есть какая нибудь функция которая будет вызываться при поступлении прерывания от клавиатуры. Но насколько я понял такой функции нет. Вариант с read не подходит так как момент когда будет нажата клавиша заранее не известен. Остаётся вариант с job-ами, которые будут висет в фоне и в которых при помощи read будет отлавливаться нажатие определённой клавиши. Или вариант написать обработчик на Си и в mumps использовать как стороннюю библиотеку. Второй вариант наверное лучше чем первый.
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007119
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только где это все ловится будет, хоть сторонний job, хоть код на C, где все это будет ловить
а можете сказать, зачем вам это нужно, что в итоге нужно получить ?
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007236
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу сказать зачем мне это нужно.
В качестве тренировки хочу на mumps игру "Тетрис" написать.
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007245
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виталийv4567Могу сказать зачем мне это нужно.
В качестве тренировки хочу на mumps игру "Тетрис" написать.В такой задаче, можно и по простому решить. просто цикл в котором в котором будет считываться клавиша с нулевым таймаутом, ну и все остальное по отрисовке выполнятся. Я делал игру какой то звездный бой, не помню уже, на самой первой работе программистом.
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007285
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это надо будет после каждого перемещения фигуры делать read на время когда фигура стоит. Всё таки это не правильно. Правильней написать обработчики нажатия клавиш и обрабатывать их по прерыванию. Сейчас сразу не скажу как это в Си реализовать. Или делать через job, тогда наверное удастся написать полностью на mumps. Сейчас в качестве эксперимента попробую реализовать отлов нажатия какой нибудь клавиши через job.
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007304
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виталийv4567 ,

Ещё посмотрите:
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007309
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромное спасибо! Посмотрю обязательно.
Только сейчас сообразил что в моём случае выловить нажатие клавиш по прерыванию при помощи сторонних библиотек не поможет.
Вернее выловить то можно, а вот как потом из Си запустить соответствующую подпрограмму для обработки из mumps.
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007337
andrew000999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мы то думали серьезная задача
Вызов функции о которой писалось мной ранее полностью решает проблему
и не нужно с таким предубеждением относится к команде read
-это очень мощный функционал - очень мощный и гибкий
эта функция в помощьread()
 r *%:0 q:%=-1 "" s s=% 
 f i=1:1:100 r *%:0 i $t s s=$s(s'<0:s_","_%,1:$a(%))
 q s
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007364
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrew000999,

Хочу спросить, в строке:
r *%:0 q:%=-1 "" s s=%
что значит *%
Я знаю что % - знаком процента может называться переменная, а вот что значит *%
и ещё один момент, после q:%=-1 стоят кавычки "" это значит просто пустая строка?
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007368
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ещё один момент всплыл, с временем ожидания 0 не работает. Нажимаешь например какую нибудь цифру, а потом проверяешь, а оно не вводит.
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007369
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, работает.
Не работала когда я просто переменную (например per2) написал, а когда *% то всё заработало и ещё в добавок выдаёт код нажатой клавиши.
Вопрос, что это за *%
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007374
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виталийv4567*%Это значит считать только один символ
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007383
andrew000999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это значит считать код одного символа
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007389
andrew000999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
q ""
означает - если не было нажата клавиша - возвращаем пустую строку
в противном случае либо код нажатой клавиши,
или (в случае функциональных клавиш - их комбинаторный код)
% - это просто переменная - вместо не могла быть любая другая
звездочка перед - означает - считываем не сами нажатые клавиши - а их коды
(тут не важно DOS-866, win 1251, utf-8 и т.д.)
это просто коды которые потом обрабатываются
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007396
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrew000999,
Понятно, спасибо.
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007402
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виталийv4567Вопрос, что это за *% READ
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007409
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
со job-ом что то не получается.
У меня в системе только один процесс mumps висит и всё по job-у ничего не висит.
Не понятно если даже он запуститься в фоне и я буду что то вводить в консоли как оно попадёт в функцию read прописанную в фоне, ведь в этом случае она отвяжется от терминала.
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007419
andrew000999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Job - это очень специфическая вещь,
чтобы использовать данную возможность нужно быть очень хорошим
программистом mumps
лично я за 20 лет (если не считать печатные формы)
использовал job не более 20раз
т.е. 1 раз в год в лучшем случае)
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007457
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
П.С.М.misha_sharОбработка событий в MUMPS отсутствует
Хм... А в каком ЯП присутствует? :) Ну что б не в каком-нибудь фраемворке реализовано, а прям являлось стандартной частью языка?

В ЯП Ассемблер. Команда INT.
П.С.М.Кхе... Кхе... имею мнение сказать:
Событие - это абстракция не относящаяся к языку программирование. Обработка событий - также не является особенностью какого-либо ЯП, а является, самым что ни на есть, процессом, поддающимся автоматизации и реализации на ЯП :)

Если в ЯП реализована обработка событий то является, если нет то нет.
П.С.М.Т.ч. ничего не мешает с помощью языка программирования MUMPS, реализовать обработку событий.

Попробуй. А я посмотрю как ты отловишь событие создание каталога в ОС.
П.С.М.PS: Тынц , напрямую к мампсу не относится, но идея обработки везде одинакова (сбор событий в цикле и вызов соответствующих им обработчиков).
Не везде. В DOS можно было написать обработчик прерываний. Да и в остальных ОС все события регистрируются. Только языки программирования не умеют этим пользоваться. И цикл событий не лучшее, а вынужденное решение.
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007458
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsamisha_sharНу иногда надо прерывать и работу сервера.
Хорошо, остановимся пока на сервере...
misha_sharТолько F9 для этого не подходит. В CACHE в этом случае я использовал <CTRL>C с установкой обработчика ошибок.
Т.е. ты садился за серверный комп и просто давил Ctrl+C? Вот только операционке серверной пофиг на тот Ctrl+C... На это нажатие может среагировать разве что активное окно с терминалом, в котором запущена какая-то программа...
Запускал сервер в терминале и там же нажимал <CTRL+C>
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007592
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_sharЗапускал сервер в терминале и там же нажимал <CTRL+C>
Это такой частный случай, что даже как пример его не стоит рассматривать...
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007595
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виталийv4567В качестве тренировки хочу на mumps игру "Тетрис" написать.
Тут сразу нужно уточнять:
- какое соединение с Кащеем будешь использовать?
- на каком языке писать будешь ту программу?
- запускать будешь только на сервере кащейском или на других компах?
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007637
Фотография П.С.М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_sharВ ЯП Ассемблер. Команда INT.
...
Если в ЯП реализована обработка событий то является, если нет то нет.
...
Не везде. В DOS можно было написать обработчик прерываний. Да и в остальных ОС все события регистрируются. Только языки программирования не умеют этим пользоваться. И цикл событий не лучшее, а вынужденное решение.
Понятно. Для вас термин "событие" ограничивается лишь прерываниями процессора, а словосочетание "обработка событий" - это всегда обработка прерываний реализованная на аппаратном уровне в процессоре.

Я же говорил следующее:
Событие - это абстракция не относящаяся к языку программирование. Обработка событий - также не является особенностью какого-либо ЯП, а является, самым что ни на есть, процессом, поддающимся автоматизации и реализации на ЯП :)
Соответственно, ничто не мешает реализовать в mumps собственную функцию возвращающую какой-либо сигнал о наступлении какого-либо события (да хоть ту же read взять, как предлагали выше).
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007674
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
П.С.М.да хоть ту же read взять, как предлагали выше
И то это тааакой частный случай для М!
Всякого рода "события" более удобно "привязывать" к неким узлам и данным в глобалах... Можно использовать таблицу блокировок...

А т.н. "прерывание" происходит на некоем компе. Тот комп как-то цепляется к Кащею... Т.о. то прерывание должен поймать софт на компе... Передать "это" на сервер Кащея... Только после этого Кащей сможет "среагировать" на случившееся.
...
Рейтинг: 0 / 0
[gt.m] Обработка прерываний в mumps
    #39007678
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaТолько после этого Кащей сможет "среагировать" на случившееся.
Причем останется не решенной задача "как потом все нужное передать на тот комп"...
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [gt.m] Обработка прерываний в mumps
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]