Не работает обработка user event

Простейшие вопросы в области инженерной разработки
Ответить
shda
interested
interested
Сообщения: 3
Зарегистрирован: 18 май 2016, 18:14
Версия LabVIEW: 2014
Контактная информация:

Не работает обработка user event

Сообщение shda »

В vi верхнего уровня (main.vi) создаётся и регистрируется user event. Data type передаётся в subvi, в котором происходит генрация user event'а. Этот subvi работает всё время работы приложения. Registration refnum передаётся в два subvi, которые запускаются последовательно. Сначала запускается и закрывается один subvi, потом второй. Настройки этих двух subvi одинаковые. В обоих есть event structure на вход которых поступает Registration refnum. Однако, в первом subvi обработка user event выполняется, а во втором - нет. Почему такое может происходить?

Зелёным кружочком обозначен subvi в котором обработка user event работает, а красным - нет. Первоначально В первый subvi Registration refnum передавался так же как во второй - никакой разницы.
Изображение
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Не работает обработка user event

Сообщение Blackman »

Надо смотреть сами subVI.
Почему второй subVI подключается к выходному референсу первого subVI, а не напрямую к оригинальному?
Аватара пользователя
Oleg B.

Activity Professionalism
leader
leader
Сообщения: 674
Зарегистрирован: 25 сен 2011, 11:30
Награды: 2
Версия LabVIEW: 5 .. 2021
Откуда: Israel
Контактная информация:

Re: Не работает обработка user event

Сообщение Oleg B. »

Однако, в первом subvi обработка user event выполняется, а во втором - нет. Почему такое может происходить?
Event - это событие, причем ОДНОразовое.
Захват и обработка события в "Выбор ФП..." уничтожает его,поэтому в "Начало" ничего не происходит
veni, vidi, phallomorphi
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Не работает обработка user event

Сообщение Blackman »

Oleg B. писал(а):
Однако, в первом subvi обработка user event выполняется, а во втором - нет. Почему такое может происходить?
Event - это событие, причем ОДНОразовое.
Захват и обработка события в "Выбор ФП..." уничтожает его,поэтому в "Начало" ничего не происходит
Не совсем точно. Механизм здесь:
Can I Use Multiple Event Structures to Handle the Same Event in LabVIEW?
http://digital.ni.com/public.nsf/allkb/ ... enDocument
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Не работает обработка user event

Сообщение Kosist »

Oleg B. писал(а):
Однако, в первом subvi обработка user event выполняется, а во втором - нет. Почему такое может происходить?
Event - это событие, причем ОДНОразовое.
Захват и обработка события в "Выбор ФП..." уничтожает его,поэтому в "Начало" ничего не происходит
Поддерживаю Blackman, так как User Events работают по принципу Multiply Writers -> Multiply Readers (или что-то в этом роде), т.е. генерировать и ловить события можно в нескольких процессах без проблем.
shda, прилагаю небольшой пример, что подтверждает это. Открываете фронт-панели виаек Consumer 1 и Consumer 2, и запускаете Main.vi. Счетчики обновляются одновременно.
Block diagram.png
А в Вашем случае, нужно посмотреть код, чтобы найти проблему. Поделитесь? Или уже проблема решена?
Вложения
User Events.zip
(19.01 КБ) 90 скачиваний
Мы делили апельсин - много наших полегло...
shda
interested
interested
Сообщения: 3
Зарегистрирован: 18 май 2016, 18:14
Версия LabVIEW: 2014
Контактная информация:

Re: Не работает обработка user event

Сообщение shda »

Поделиться кодом проблематично - слишком большой, да и проблема решена. Ошибка моя. Subvi, который генерирует user event неправильно определял какие subvi внутри цикла работают и уходил в спячку во время работы второго subvi. На обнаружение этого ушла неделя. :( А есть ли в labview механизмы, которые позволяют отслеживать генерацию и обработку пользовательских событий? Ручная трассировка в моём случае невозможна.
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Не работает обработка user event

Сообщение Kosist »

shda писал(а):А есть ли в labview механизмы, которые позволяют отслеживать генерацию и обработку пользовательских событий? Ручная трассировка в моём случае невозможна.
Насчет последнего - сильно сомневаюсь, т.к. логирование можно добавить везде и всегда, дело лишь в подходе - что логировать, при помощи чего, и т.д; и сколько времени на имплементацию можете выделить. Если же Вы имели ввиду ручной дебаггинг, то тогда да - так дебажить тяжело иногда. Но грамотный логинг существенно помогает в поиске причины проблемы в работе приложения.
Однако, можете попробовать NI LabVIEW Desktop Execution Trace Toolkit. С его помощью, кажется, можно отслеживать подобные события.
Мы делили апельсин - много наших полегло...
alex3f
beginner
beginner
Сообщения: 26
Зарегистрирован: 23 авг 2016, 09:16
Версия LabVIEW: 2016
Контактная информация:

Re: Не работает обработка user event

Сообщение alex3f »

shda, есть ещё инструмент View»Event Inspector Window.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»