Разрабатываю приложение, которое использует динамическую загрузку и выполнение ВПП. Имеется два ВП: главное ВП - динамически запускает ВПП, ВПП - производит прием кадров с CAN-линии.
Проблема вот в чем. Если запускать просто ВПП, то он нормально запускается и выполняется. А если его запустить при помощи главного ВП (который и производит загрузку и выполнение ВПП) - он запускается но не производит прием данных с CAN-интерфейса.
Последовательность запуска ВПП такая: Open VI ref (0x80) --> Start Asynchronous Call --> Invoke Node(FP.Open)(State: Hidden; Activate: True). Затем в самом ВПП, по событию нажатия кнопки "показать панель", вызывается Property Node(FP.State: Standard).
Вопрос: в чем может быть проблема?
Подскажите как можно производить отладку DGG в таком случае?
Проблема при динамической загрузке ВП
-
- developer
- Сообщения: 257
- Зарегистрирован: 03 янв 2014, 19:37
- Версия LabVIEW: 2016
- Откуда: Украина, Киев
- Контактная информация:
Re: Проблема при динамической загрузке ВП
Как человек, который сам прошёл через подобные мороки совсем недавно скажу: связывайте между собой при помощи очередей (queue) и уведомлений (notifier). При помощи очередей передавайте данные между вашими , уведомления используйте для остановки циклов.
Пример, как это можно сделать, смотрите здесь:
http://labviewportal.org/viewtopic.php? ... =15#p57021
Пример, как это можно сделать, смотрите здесь:
http://labviewportal.org/viewtopic.php? ... =15#p57021
колдооооовствооооо! (С)
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Проблема при динамической загрузке ВП
Код в студию. Или пример того,как Вы выполняете.Вопрос: в чем может быть проблема?
Фрагмент программы - вместо тысячи слов
А отладка как раз и происходит поэтапно. Отлаживается каждый .vi,затем происходит поэтапное подключение либо вызов с помощью сервера.Подскажите как можно производить отладку DGG в таком случае?
Про обмен данными Вам верно подсказали.
Из потока в поток данные передавайте через очереди. То же самое касается и subVI.В качестве стопа можно использовать отдельно заведенный уведомитель,либо останавливать потоки используя кластер ошибки.Ошибка будет вызвана уничтожением очереди,или чем-нибудь еще - это уже на Ваш вкус.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- doctor
- Сообщения: 2210
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 26 раз
Re: Проблема при динамической загрузке ВП
Чтобы производить отладку динамически вызываемого VI, открываете этот VI в проекте, как в режиме редактирования. И ставите точку останова где-то в начале выполнения. После запуска программы динамически созданная копия откроется и остановится и с ней можно будет ставить пробники и прочее. Не забудьте, что если ее после останова не закрыть, так и будет висеть в памяти. При каждом новом запуске программы (Run) создается новая копия динамически вызываемого VI и пробники надо ставить заново. В принципе, все динамически созданные VI доступны через меню View/Browse Relationships.../Unopened VIs...
Не смотря на то, что точка останова доступна и в копии VI, убирать ее надо из "базовой" VI. Быстрое открытие базовой VI из копии Ctrl+M.
Не смотря на то, что точка останова доступна и в копии VI, убирать ее надо из "базовой" VI. Быстрое открытие базовой VI из копии Ctrl+M.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение