LINUX.ORG.RU

[Tcl/Tk] Правильное event-oriented программирование


0

2

Здравствуйте.

Уже не первый раз задаю подобные вопросы, почти постиг дзэн Tcl/Tk, но до полного просветления осталось еще несколько шагов. Суть моей задачи приведена вот тут, обновленный каркас приложения (с учетом трассировки переменных) приведен вот тут Все бы хорошо, но есть одна неприятная особенность — если я хочу из процедуры сменить значение переменной $status, то у меня не выходит это сделать. Я подозреваю, что переменная вначале меняется по моему запросу, но затем она снова переустанавливается в старое значение командой

set status "Читать регистры"

в теле обработчика событий для последовательного порта. Поэтому приходится вводить костыли типа глобальной переменной write_request, проверять ее на равенство единице, и только если «запрос на запись» есть — переводить программу в состояние «Запись регистра состояния». Поэтому вопрос — как правильно это реализовать, не прибегая к подобным костылям?

Вроде бы это называлось event driven, извините за занудство.

Xenesz ★★★★
()

А переменная какая у тебя? Глобальная или локальная? В тикле все переменные внутри процедуры являются локальными. Надо явно указывать на «гломальность» переменной.

anonymous
()

ТС, прости конечно за грубость, но ты уже пол года мудохаешься с этим несчастным ком-портом:

http://www.linux.org.ru/forum/development/5459239

И до дзэна тебе ой как далеко. Может ну его, этот тикль, не в коня же корм. Внятной документации найти не можешь, единственная надежда на ЛОР. А вдруг его автобус переедет? Что тогда делать будешь?

На *неразборчиво* ты бы справился за месяц.

anonymous
()
Ответ на: комментарий от anonymous

ТС, прости конечно за грубость, но ты уже пол года мудохаешься с этим несчастным ком-портом:

Я, конечно, мудохаюсь — но ведь все прекрасно работает. Другое дело, что код получается «некрасивый», и я задаю вопросы «в целях повышения образованности», чтобы попробовать разные подходы. Задачи мои решены уже давно.

И да, документации внятной много — просто я не настоящий сварщик и не во все сразу въезжаю.

decadent
() автор топика
Ответ на: комментарий от anonymous

А переменная какая у тебя? Глобальная или локальная?

Какая именно переменная? Есть глобальные, есть локальные. Трассируемая переменная status — глобальная, запрос на запись — тоже.

decadent
() автор топика
Ответ на: комментарий от anonymous

s/*неразборчиво*/lisp

«Tcl — lisp для малаграматных»(с) — то есть, как раз для меня.

decadent
() автор топика

В общем, я слоупок. Проблема решена, тема закрыта.

decadent
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.