Register Event Callback
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Register Event Callback
Добрый вечер. Помогите разобраться.
Есть dll на основе net.
она дает возможность выдавать какие-то команды.
Как сделать так, чтобы команда из dll срабатывала в event structure?
Смотрел встроенный пример регистрации события, Passing Data to a .NET Event Callback.vi, но там меняется параметр извне, а потом передается в dll.
А мне наоборот нужно, dll генерирует событие, и нужно его как-то отследить.
Копаю в сторону Register Event Callback.
Есть dll на основе net.
она дает возможность выдавать какие-то команды.
Как сделать так, чтобы команда из dll срабатывала в event structure?
Смотрел встроенный пример регистрации события, Passing Data to a .NET Event Callback.vi, но там меняется параметр извне, а потом передается в dll.
А мне наоборот нужно, dll генерирует событие, и нужно его как-то отследить.
Копаю в сторону Register Event Callback.
-
- professor
- Сообщения: 3409
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Register Event Callback
Копаете правильно, но по-моему без переделки dll не обойтись.
решение-заплатка: передать в dll в колбэк функцию-VI, который при вызове сгененрирует нужный user-event.
По крайней мере я нашёл только такой вариант в схожей задаче
решение-заплатка: передать в dll в колбэк функцию-VI, который при вызове сгененрирует нужный user-event.
По крайней мере я нашёл только такой вариант в схожей задаче
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Register Event Callback
dll генерит событие, только как в event структуре считать его? как код в смысле будут выглядеть при этом?
-
- professor
- Сообщения: 3409
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Register Event Callback
http://zone.ni.com/reference/en-XX/help ... _ax_evnts/
если не получается, и dll не секретная, выкладывайте.
если не получается, и dll не секретная, выкладывайте.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Register Event Callback
DLL генерит событие КАК? Какая функция вызывается? Код DLL в студию.rushonda писал(а):dll генерит событие
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Register Event Callback
Кода dll нет, но я на днях постараюсь уточнить у разработчика, как генерится событие.
По его словам генерится событие и нужно просто считать его в event structure. Только как на labview это сделать?
Passing Data to a .NET Event Callback.vi - по аналогии как-то?
По его словам генерится событие и нужно просто считать его в event structure. Только как на labview это сделать?
Passing Data to a .NET Event Callback.vi - по аналогии как-то?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Register Event Callback
Думаю, да. Но для уверенности хотелось бы поглядеть на саму библиотеку. Посмотрите вот эту тему: http://labviewportal.org/viewtopic.php? ... ack#p65828 Я там расписывал кратко, как работает пример Passing Data to a .NET Event Callback.rushonda писал(а):Только как на labview это сделать?
Passing Data to a .NET Event Callback.vi - по аналогии как-то?
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Register Event Callback
dadreamer, сам код dll не уверен что дадут... в примере Passing Data to a .NET Event Callback событие срабатывает на изменение переменной knob, а как в event structure сделать срабатывание на изменение переменной в dll ? как мне говорят, в dll срабатывает событие типа true/false.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Register Event Callback
То есть, вы хотите сказать, что есть в DLL какая-то переменная, скажем, a = false, потихоньку помаленьку выполняется код, и в какой-то момент a ВНЕЗАПНО становится true, и вот этот самый момент вы хотите отловить? Если это на самом деле так (во что сложно поверить), то это невозможно. DLL должна по крайней мере как-то просигнализировать , что она поменяла состояние переменной - например, установив сигнал через функции WinAPI или запостив событие через PostLVUserEvent.rushonda писал(а):как в event structure сделать срабатывание на изменение переменной в dll ? как мне говорят, в dll срабатывает событие типа true/false.
Вы можете выложить библиотеку + описание? Хотя бы без исходников.
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Register Event Callback
dadreamer, высылаю исходники.
в папке есть exe: CBackEvent\CBackEvent\bin\Debug\x86\CBackEvent.exe
если нажать старт происходят события. начало как я хотел сделать в скрине блок-диаграммы.
в папке есть exe: CBackEvent\CBackEvent\bin\Debug\x86\CBackEvent.exe
если нажать старт происходят события. начало как я хотел сделать в скрине блок-диаграммы.
- Вложения
-
- CBackEvent-20180331.zip
- исходники
- (144.96 КБ) 194 скачивания
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Register Event Callback
Кратенькая инструкция по программе
Запустить, нажать кнопку "Старт"
После этого в DLL запустится таймер с интервалом в 500мс и будет вызывать внутри DLL функцию, которая находится в основном коде [CBackEventMsg], передавая ей строку в качестве параметра
Эта функция из основного кода [CBackEventMsg] была объявлена в качестве параметра как функция обратного вызова и передана в DLL на этапе инициализации [oCBack.oev_Event += new Action<string>(CBackEventMsg)]
Нажатие кнопки "Стоп" останавливает таймер в DLL
Запустить, нажать кнопку "Старт"
После этого в DLL запустится таймер с интервалом в 500мс и будет вызывать внутри DLL функцию, которая находится в основном коде [CBackEventMsg], передавая ей строку в качестве параметра
Эта функция из основного кода [CBackEventMsg] была объявлена в качестве параметра как функция обратного вызова и передана в DLL на этапе инициализации [oCBack.oev_Event += new Action<string>(CBackEventMsg)]
Нажатие кнопки "Стоп" останавливает таймер в DLL
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Register Event Callback
rushonda, DLL нормально написана. И в тоже всё прекрасно работает. Не знаю, с чем вы там не справились, я набросал код согласно стандартному примеру.
- Вложения
-
- oev_Event.rar
- lv2014
- (16.94 КБ) 191 скачивание
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Register Event Callback
dadreamer, спасибо, теперь хоть ясно стало. Просто реальная dll не генерит так часто события, поэтому я попросил написать аналогичную dll, которая генерит события чаще. Ранее так никогда не делал - обычно опрашивал просто и все.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 6 Ответы
- 234 Просмотры
-
Последнее сообщение Artem.spb