Добрый день, форумчане!
Возникла проблема следующего характера: на лицевой панели есть два объекта - А и Б. Создана структура События, в которой при нажатии курсором на объект А - событие 1 - выполняется последовательность "а", при нажатии на Б - событие 2- последовательность "б", суть которого последующее ожидание ряда событий, среди которых есть нажатие на объект А - событие 3 - и выполнение последовательности "в", но с последствиями отличными от "а". Проблема в том, что после завершения обработки "в" сразу срабатывает "а", ну или "где-то там помечается что событие 1 имело место и при удобном случае необходимо выполнить "а"".
Можно ли сделать так, чтобы единовременное событие 1 идущее внутри последовательности "б" "анигилировалось" и не обрабатывалось второй раз при выходе из "б"... Как-то доходчивее объяснить затрудняюсь.
Последовательная обработка событий
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Последовательная обработка событий
У Вас чисто алгоритмическая ошибка, получается рекурсивный вызов.
Что бы это обойти, то можно использовать какую-нибудь метку, которая будет определять каким образом инициировано событие (курсором или вызвано из функции) и в зависимости от этого действовать .
Я бы по этому пути пошел.
Что бы это обойти, то можно использовать какую-нибудь метку, которая будет определять каким образом инициировано событие (курсором или вызвано из функции) и в зависимости от этого действовать .
Я бы по этому пути пошел.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- interested
- Сообщения: 6
- Зарегистрирован: 18 дек 2013, 09:01
- Версия LabVIEW: 8.6
- Контактная информация:
Re: Последовательная обработка событий
Вся проблема в том, что взаимодействие с объектом А только по средством курсора, а указать в событии левая или правая клавиша мыши задействована по-моему нельзя... Вот была бы функция которая отменяет произошедшую регистрацию события...IvanLis писал(а):У Вас чисто алгоритмическая ошибка, получается рекурсивный вызов.
Что бы это обойти, то можно использовать какую-нибудь метку, которая будет определять каким образом инициировано событие (курсором или вызвано из функции) и в зависимости от этого действовать .
Я бы по этому пути пошел.
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Последовательная обработка событий
Она есть (Mouse Down? Event): http://zone.ni.com/reference/en-XX/help ... use_downq/Spiegel писал(а):Вот была бы функция которая отменяет произошедшую регистрацию события...
Флаг: Discard?
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Последовательная обработка событий
Можно воспользоваться очередью (формируя команды) и в другом потоке их разбирать.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
-
- interested
- Сообщения: 6
- Зарегистрирован: 18 дек 2013, 09:01
- Версия LabVIEW: 8.6
- Контактная информация:
Re: Последовательная обработка событий
Спасибо всем за советы, начну пожалуй с Discard, переделывать меньше будет, а дальше по нарастанию сложности)
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение