Добрый день, коллеги. Это снова я с Tcl и последовательным портом. Суть такова — имеется устройство, с которым я общаюсь через последовательный порт. Общение идет в режиме «запрос-ответ», в основном ответом являются показания датчиков, которые я расшифровываю и кладу в глобальные переменные. Иногда подается запрос на запись в регистр. Работа реализована через файлэвенты, каркас приведен вот тут . Все прекрасно работает, но есть один нюанс. Мне нужно отслеживать значения некоторых переменных и по достижении ими определенных величин запускать соответствующие функции. Например, есть функции stop_motor и start_motor. Я запускаю двигатель, происходит постоянное чтение показаний датчика усилия, и если переменная force = 100 — я должен вызвать stop_motor. Делал так:
start_motor
while {1} {
if {$force == 100} {stop_motor; break}
}
Однако при этом GUI замерзает, а мне это не нужно.
Вроде бы мою задачу можно решить с помощью команды trace — но я пока не въехал в тонкости ее использования. Посоветуйте, пожалуйста, как мне лучше поступить. Заранее спасибо.