Проблема при динамической загрузке ВП

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума
Ответить
justandy
beginner
beginner
Сообщения: 27
Зарегистрирован: 24 сен 2014, 10:51
Версия LabVIEW: 2015

Проблема при динамической загрузке ВП

Сообщение justandy »

Разрабатываю приложение, которое использует динамическую загрузку и выполнение ВПП. Имеется два ВП: главное ВП - динамически запускает ВПП, ВПП - производит прием кадров с CAN-линии.
Проблема вот в чем. Если запускать просто ВПП, то он нормально запускается и выполняется. А если его запустить при помощи главного ВП (который и производит загрузку и выполнение ВПП) - он запускается но не производит прием данных с CAN-интерфейса.
Последовательность запуска ВПП такая: Open VI ref (0x80) --> Start Asynchronous Call --> Invoke Node(FP.Open)(State: Hidden; Activate: True). Затем в самом ВПП, по событию нажатия кнопки "показать панель", вызывается Property Node(FP.State: Standard).
Вопрос: в чем может быть проблема?
Подскажите как можно производить отладку DGG в таком случае?
AlexanderKonoval
developer
developer
Сообщения: 257
Зарегистрирован: 03 янв 2014, 19:37
Версия LabVIEW: 2016
Откуда: Украина, Киев
Контактная информация:

Re: Проблема при динамической загрузке ВП

Сообщение AlexanderKonoval »

Как человек, который сам прошёл через подобные мороки совсем недавно скажу: связывайте :vi: между собой при помощи очередей (queue) и уведомлений (notifier). При помощи очередей передавайте данные между вашими :vi: , уведомления используйте для остановки циклов.

Пример, как это можно сделать, смотрите здесь:
http://labviewportal.org/viewtopic.php? ... =15#p57021
колдооооовствооооо! (С)
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Проблема при динамической загрузке ВП

Сообщение Vitekkz88 »

Вопрос: в чем может быть проблема?
Код в студию. Или пример того,как Вы выполняете.
Фрагмент программы - вместо тысячи слов :wink:
Подскажите как можно производить отладку DGG в таком случае?
А отладка как раз и происходит поэтапно. Отлаживается каждый .vi,затем происходит поэтапное подключение либо вызов с помощью сервера.
Про обмен данными Вам верно подсказали.
Из потока в поток данные передавайте через очереди. То же самое касается и subVI.В качестве стопа можно использовать отдельно заведенный уведомитель,либо останавливать потоки используя кластер ошибки.Ошибка будет вызвана уничтожением очереди,или чем-нибудь еще - это уже на Ваш вкус.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Проблема при динамической загрузке ВП

Сообщение Borjomy_1 »

Чтобы производить отладку динамически вызываемого VI, открываете этот VI в проекте, как в режиме редактирования. И ставите точку останова где-то в начале выполнения. После запуска программы динамически созданная копия откроется и остановится и с ней можно будет ставить пробники и прочее. Не забудьте, что если ее после останова не закрыть, так и будет висеть в памяти. При каждом новом запуске программы (Run) создается новая копия динамически вызываемого VI и пробники надо ставить заново. В принципе, все динамически созданные VI доступны через меню View/Browse Relationships.../Unopened VIs...
Не смотря на то, что точка останова доступна и в копии VI, убирать ее надо из "базовой" VI. Быстрое открытие базовой VI из копии Ctrl+M.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Общие»