Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
10.07.2015, 20:04
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
Можно ли как то обрабатывать прерывания в mumps в частности в gt.m? Например если надо выполнить подпрограмму после нажатия клавиши F9 Можно ли это сделать средствами mumps - например какими нибудь функциями z... Если можно то какими и как? Или средствами mumps это сделать не возможно и надо делать только при помощи библиотечных функций Си или ещё каких нибудь? Если кто знает как это сделать подскажите пожалуйста. За помощь заранее буду благодарен! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.07.2015, 21:24
|
|||
---|---|---|---|
[gt.m] Обработка прерываний в mumps |
|||
#18+
Виталийv4567, Break ? Breakpoint ? http://tinco.pair.com/bhaskar/gtm/doc/books/pg/UNIX_manual/index.html ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.07.2015, 17:58
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
Я совсем не про отладку спрашивал. Break, Breakpoint совсем про другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.07.2015, 18:45
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
Распознать нажатую клавишу можно с помощью команды 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" - для разных терминалов по разному в пределах одного терминала генерируемый код уникален для разных функциональных клавиш ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.07.2015, 20:50
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
нет с помощью команды read сделать не получится, после строки: r1 r *%:1 g:'$t r1 s s=% программа останавливается и ждёт нажатия клавиши. Мне же нужно совсем другое, у меня есть подпрограмма которая должна выполниться после нажатия клавиши F9 и есть основная программа которая всё время выполняется. Клавиша F9 может быть нажата в любой момент выполнения основной программы, в какой момент будет нажата клавиши F9 заранее не известно. То есть необходимо например как в ассемблере реализовать выполнение подпрограммы по прерыванию вызванному нажатием клавиши. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.07.2015, 00:09
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
Виталийv4567 у меня есть подпрограмма которая должна выполниться после нажатия клавиши F9 и есть основная программа которая всё время выполняется. Делаете job программы "которая всё время исполняется", а сами терпеливо ждёте F9 :) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.07.2015, 00:18
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
Я могу ошибаться, но похоже такого механизма в 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.07.2015, 00:24
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
Или действительно что-то мудрить c jobами ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.07.2015, 23:53
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
Виталийv4567. Мне же нужно совсем другое, у меня есть подпрограмма которая должна выполниться после нажатия клавиши F9 и есть основная программа которая всё время выполняется. Клавиша F9 может быть нажата в любой момент выполнения основной программы, в какой момент будет нажата клавиши F9 заранее не известно. То есть необходимо например как в ассемблере реализовать выполнение подпрограммы по прерыванию вызванному нажатием клавиши. А зачем на сервере обрабатывать события, которые нужно обрабатывать на клиенте? Ничего не понимаю :( ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.07.2015, 08:52
|
|||
---|---|---|---|
[gt.m] Обработка прерываний в mumps |
|||
#18+
Виталийv4567надо выполнить подпрограмму после нажатия клавиши F9 Давай рассмотрим твою проблему т.с. в общем аспекте... Есть М-сервер... Есть какие-то клиентские компы... Они все как-то могут подключаться к М-серверу, типы подключений так же разные... При подключении все они каким-либо образом запускают какие-то программки... Где будут давить F9? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2015, 05:21
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
krvsaВиталийv4567надо выполнить подпрограмму после нажатия клавиши F9 Давай рассмотрим твою проблему т.с. в общем аспекте... Есть М-сервер... Есть какие-то клиентские компы... Они все как-то могут подключаться к М-серверу, типы подключений так же разные... При подключении все они каким-либо образом запускают какие-то программки... Где будут давить F9? Ну иногда надо прерывать и работу сервера. Только F9 для этого не подходит. В CACHE в этом случае я использовал <CTRL>C с установкой обработчика ошибок. Обработка событий в MUMPS отсутствует, остается полагаться только на обработку ошибок. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2015, 08:16
|
|||
---|---|---|---|
[gt.m] Обработка прерываний в mumps |
|||
#18+
misha_sharНу иногда надо прерывать и работу сервера. Хорошо, остановимся пока на сервере... misha_sharТолько F9 для этого не подходит. В CACHE в этом случае я использовал <CTRL>C с установкой обработчика ошибок. Т.е. ты садился за серверный комп и просто давил Ctrl+C? Вот только операционке серверной пофиг на тот Ctrl+C... На это нажатие может среагировать разве что активное окно с терминалом, в котором запущена какая-то программа... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2015, 11:55
|
|||
---|---|---|---|
[gt.m] Обработка прерываний в mumps |
|||
#18+
misha_sharОбработка событий в MUMPS отсутствует Хм... А в каком ЯП присутствует? :) Ну что б не в каком-нибудь фраемворке реализовано, а прям являлось стандартной частью языка? Кхе... Кхе... имею мнение сказать: Событие - это абстракция не относящаяся к языку программирование. Обработка событий - также не является особенностью какого-либо ЯП, а является, самым что ни на есть, процессом, поддающимся автоматизации и реализации на ЯП :) Т.ч. ничего не мешает с помощью языка программирования MUMPS, реализовать обработку событий. PS: Тынц , напрямую к мампсу не относится, но идея обработки везде одинакова (сбор событий в цикле и вызов соответствующих им обработчиков). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2015, 16:27
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
Я когда спрашивал имел ввиду следующее. При нажатии клавиши в компьютере на аппаратном уровне будет прерывание от клавиатуры. Например в ассемблере это прерывание можно обработать, написать подпрограмму которая будет работать только тогда когда будет нажата соответствующая клавиша. Я думал что в mumps может быть есть какая нибудь функция которая будет вызываться при поступлении прерывания от клавиатуры. Но насколько я понял такой функции нет. Вариант с read не подходит так как момент когда будет нажата клавиша заранее не известен. Остаётся вариант с job-ами, которые будут висет в фоне и в которых при помощи read будет отлавливаться нажатие определённой клавиши. Или вариант написать обработчик на Си и в mumps использовать как стороннюю библиотеку. Второй вариант наверное лучше чем первый. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2015, 16:33
|
|||
---|---|---|---|
[gt.m] Обработка прерываний в mumps |
|||
#18+
Только где это все ловится будет, хоть сторонний job, хоть код на C, где все это будет ловить а можете сказать, зачем вам это нужно, что в итоге нужно получить ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2015, 17:51
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
Могу сказать зачем мне это нужно. В качестве тренировки хочу на mumps игру "Тетрис" написать. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2015, 17:59
|
|||
---|---|---|---|
[gt.m] Обработка прерываний в mumps |
|||
#18+
Виталийv4567Могу сказать зачем мне это нужно. В качестве тренировки хочу на mumps игру "Тетрис" написать.В такой задаче, можно и по простому решить. просто цикл в котором в котором будет считываться клавиша с нулевым таймаутом, ну и все остальное по отрисовке выполнятся. Я делал игру какой то звездный бой, не помню уже, на самой первой работе программистом. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2015, 18:40
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
Это надо будет после каждого перемещения фигуры делать read на время когда фигура стоит. Всё таки это не правильно. Правильней написать обработчики нажатия клавиш и обрабатывать их по прерыванию. Сейчас сразу не скажу как это в Си реализовать. Или делать через job, тогда наверное удастся написать полностью на mumps. Сейчас в качестве эксперимента попробую реализовать отлов нажатия какой нибудь клавиши через job. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2015, 19:18
|
|||
---|---|---|---|
[gt.m] Обработка прерываний в mumps |
|||
#18+
Виталийv4567 , Ещё посмотрите: ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2015, 19:26
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
Огромное спасибо! Посмотрю обязательно. Только сейчас сообразил что в моём случае выловить нажатие клавиш по прерыванию при помощи сторонних библиотек не поможет. Вернее выловить то можно, а вот как потом из Си запустить соответствующую подпрограмму для обработки из mumps. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2015, 20:06
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
Мы то думали серьезная задача Вызов функции о которой писалось мной ранее полностью решает проблему и не нужно с таким предубеждением относится к команде 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2015, 21:19
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
andrew000999, Хочу спросить, в строке: r *%:0 q:%=-1 "" s s=% что значит *% Я знаю что % - знаком процента может называться переменная, а вот что значит *% и ещё один момент, после q:%=-1 стоят кавычки "" это значит просто пустая строка? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2015, 21:29
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
ещё один момент всплыл, с временем ожидания 0 не работает. Нажимаешь например какую нибудь цифру, а потом проверяешь, а оно не вводит. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2015, 21:32
|
|||
---|---|---|---|
|
|||
[gt.m] Обработка прерываний в mumps |
|||
#18+
Извиняюсь, работает. Не работала когда я просто переменную (например per2) написал, а когда *% то всё заработало и ещё в добавок выдаёт код нажатой клавиши. Вопрос, что это за *% ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=39&mobile=1&tid=1556621]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 272ms |
total: | 438ms |
0 / 0 |