powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [gt.m] Обработка прерываний в mumps
25 сообщений из 38, страница 1 из 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
25 сообщений из 38, страница 1 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [gt.m] Обработка прерываний в mumps
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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