В 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 передавался так же как во второй - никакой разницы.
Не работает обработка user event
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Не работает обработка user event
Надо смотреть сами subVI.
Почему второй subVI подключается к выходному референсу первого subVI, а не напрямую к оригинальному?
Почему второй subVI подключается к выходному референсу первого subVI, а не напрямую к оригинальному?
-
Oleg B.
- leader
- Сообщения: 674
- Зарегистрирован: 25 сен 2011, 11:30
- Награды: 2
- Версия LabVIEW: 5 .. 2021
- Откуда: Israel
- Контактная информация:
Re: Не работает обработка user event
Event - это событие, причем ОДНОразовое.Однако, в первом subvi обработка user event выполняется, а во втором - нет. Почему такое может происходить?
Захват и обработка события в "Выбор ФП..." уничтожает его,поэтому в "Начало" ничего не происходит
veni, vidi, phallomorphi
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Не работает обработка user event
Не совсем точно. Механизм здесь:Oleg B. писал(а):Event - это событие, причем ОДНОразовое.Однако, в первом subvi обработка user event выполняется, а во втором - нет. Почему такое может происходить?
Захват и обработка события в "Выбор ФП..." уничтожает его,поэтому в "Начало" ничего не происходит
Can I Use Multiple Event Structures to Handle the Same Event in LabVIEW?
http://digital.ni.com/public.nsf/allkb/ ... enDocument
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Не работает обработка user event
Поддерживаю Blackman, так как User Events работают по принципу Multiply Writers -> Multiply Readers (или что-то в этом роде), т.е. генерировать и ловить события можно в нескольких процессах без проблем.Oleg B. писал(а):Event - это событие, причем ОДНОразовое.Однако, в первом subvi обработка user event выполняется, а во втором - нет. Почему такое может происходить?
Захват и обработка события в "Выбор ФП..." уничтожает его,поэтому в "Начало" ничего не происходит
shda, прилагаю небольшой пример, что подтверждает это. Открываете фронт-панели виаек Consumer 1 и Consumer 2, и запускаете Main.vi. Счетчики обновляются одновременно. А в Вашем случае, нужно посмотреть код, чтобы найти проблему. Поделитесь? Или уже проблема решена?
- Вложения
-
- User Events.zip
- (19.01 КБ) 90 скачиваний
Мы делили апельсин - много наших полегло...
-
- interested
- Сообщения: 3
- Зарегистрирован: 18 май 2016, 18:14
- Версия LabVIEW: 2014
- Контактная информация:
Re: Не работает обработка user event
Поделиться кодом проблематично - слишком большой, да и проблема решена. Ошибка моя. Subvi, который генерирует user event неправильно определял какие subvi внутри цикла работают и уходил в спячку во время работы второго subvi. На обнаружение этого ушла неделя. :( А есть ли в labview механизмы, которые позволяют отслеживать генерацию и обработку пользовательских событий? Ручная трассировка в моём случае невозможна.
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Не работает обработка user event
Насчет последнего - сильно сомневаюсь, т.к. логирование можно добавить везде и всегда, дело лишь в подходе - что логировать, при помощи чего, и т.д; и сколько времени на имплементацию можете выделить. Если же Вы имели ввиду ручной дебаггинг, то тогда да - так дебажить тяжело иногда. Но грамотный логинг существенно помогает в поиске причины проблемы в работе приложения.shda писал(а):А есть ли в labview механизмы, которые позволяют отслеживать генерацию и обработку пользовательских событий? Ручная трассировка в моём случае невозможна.
Однако, можете попробовать NI LabVIEW Desktop Execution Trace Toolkit. С его помощью, кажется, можно отслеживать подобные события.
Мы делили апельсин - много наших полегло...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение