Асинхронный вызов VI
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Асинхронный вызов VI
Предлагаю следующее:
При выходе из основного цикла экземпляр посылает событие, которое ловит вызывающая программа.
При выходе из основного цикла экземпляр посылает событие, которое ловит вызывающая программа.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Асинхронный вызов VI
Да, суть всю уловили По ошибкам ещё хочу сказать.Shamrel писал(а):Тогда как-то так:
Ошибки из Саб-ВИ наверно не обязательно в регистр отправлять, т.к. ошибка, произошедшая раз в одном потомке, нарушит механизм ожидания "Wait On Asynchronous Call" - он будет крутиться вхолостую по "законам жанра" . Такие ошибки надо как-то отдельно обрабатывать. Тем более что все эти Саб-ВИ должны выполняться независимо друг от друга. Кроме того, эту ошибку не надо пропускать через Close Reference:
Ошибку из "Wait On Asynchronous Call" можно также обрабатывать, при желании. На практике мне попадался только таймаут, но возможны и какие-то другие ошибки из стандартного перечня.error in describes error conditions that occur before this node runs. With the following exception, this input provides standard error in functionality.
This node runs normally even if an error occurred before this node runs.
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Асинхронный вызов VI
На рис показан более гибкий способ открытия референса для асинхронного (ACBR) или синхронного (CBR) вызова .
- Вложения
-
- Open ref for ACBR node FP.PNG (18.68 КБ) 10263 просмотра
Re: Асинхронный вызов VI
Blackman, спасибо.
Я тоже обнаружил этот способ. Но я пока теряюсь в этих референсах. Потому пользуюсь осторожно, согласно примерам из документации.
Вроде и почитал, но интуитивного понимания нет, чем отличается строготипизированный референс (вроде как содержит описание панели подключения) от статического референса (тупо ссылка на файл на жестком диске?). И что за референс на выходе функции "Open VI Reference Function ", и чем он отличается от первых двух?
Я тоже обнаружил этот способ. Но я пока теряюсь в этих референсах. Потому пользуюсь осторожно, согласно примерам из документации.
Вроде и почитал, но интуитивного понимания нет, чем отличается строготипизированный референс (вроде как содержит описание панели подключения) от статического референса (тупо ссылка на файл на жестком диске?). И что за референс на выходе функции "Open VI Reference Function ", и чем он отличается от первых двух?
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Асинхронный вызов VI
Позвольте мне вставить свои 5 копеек =)Shamrel писал(а):Blackman, спасибо.
Я тоже обнаружил этот способ. Но я пока теряюсь в этих референсах. Потому пользуюсь осторожно, согласно примерам из документации.
Вроде и почитал, но интуитивного понимания нет, чем отличается строготипизированный референс (вроде как содержит описание панели подключения) от статического референса (тупо ссылка на файл на жестком диске?). И что за референс на выходе функции "Open VI Reference Function ", и чем он отличается от первых двух?
Строготипизированный референс говорит сам за себя - Вы можете таким способом запустить лишь виайки с точно такой же панелью подключения. Если вызываемая виайка будет иметь иной Connector Pane, то будет ошибка.
Статический референс - ему все равно на панель подключения, Вы получаете лишь ссылку на виайку.
А эти ссылки, и выход функции "Open VI Reference Function" - в принципе, это одно и то же. Но, при помощи функции Open VI Reference Function Вы можете установить значения флага, с которым вызывается виайка (вход option), что необходимо для Start Asynchronous Call, и т.д. Плюс, строготип. референс функция Open VI Reference Function в качестве входа type specifier VI Refnum, для получения инфы о панели подключения...
Мы делили апельсин - много наших полегло...
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Асинхронный вызов VI
Open VI Reference отдаёт вам инициализированный референс, то есть уже открыт, под его работу выделена отпределённая область в памяти , создан data space под все структуры и т.п. То есть, с таким референсом дальше можно спокойно работать через Call By Reference и Start Async. Call. А тот референс, что вы размещаете на БД или панели, не инициализирован. Это просто константа, такая же, как те, что лежат в палитре Refnum. Если вы кастанёте такой ref в U32 (Type Cast), то увидите, что он равен нулю. Инициализированный ref никогда нулю не равен и он вообще говоря уникален в текущем контексте программы.Shamrel писал(а):И что за референс на выходе функции "Open VI Reference Function ", и чем он отличается от первых двух?
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Асинхронный вызов VI
Если речь идет о статическом референсе, то это большое заблуждение.А тот референс, что вы размещаете на БД или панели, не инициализирован. Это просто константа, такая же, как те, что лежат в палитре Refnum. Если вы кастанёте такой ref в U32 (Type Cast), то увидите, что он равен нулю. Инициализированный ref никогда нулю не равен и он вообще говоря уникален в текущем контексте программы.
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Асинхронный вызов VI
Согласен с Blackman, т.к. такой код работает без проблем, без функции Open VI Reference:
dadreamer, Вы имели ввиду просто функцию Static VI Reference? Тогда да, без добавленной в нее виайки ссылка будет "указывать в никуда"...
Может, Мы делили апельсин - много наших полегло...
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Асинхронный вызов VI
Речь об этом.Blackman писал(а):Если речь идет о статическом референсе, то это большое заблуждение.
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Асинхронный вызов VI
И что здесь проверять? Значок в левом верхнем углу константы говорит сам за себя)
- Вложения
-
- Strict Viref constant.PNG (53.08 КБ) 10194 просмотра