обернуть .net в X-control

ActiveX, .NET, DLL
Ответить
Artem.spb

Activity Автор
professor
professor
Сообщения: 3393
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

обернуть .net в X-control

Сообщение Artem.spb »

Мудрёная задача, сначала опишу на словах.
Есть часть системы, разработкой которой занимаются другие люди. Это сервер, до него мне дела нет (условно)
Есть вторая часть, её разрабатывают так же другие люди и делают они это на .Net. Это клиент.
Клиент состоит из двух частей. Собстенно клиент и индикатор-виджет.
Именно этого виджета надо встроить в :labview: .

В клиенте есть событие, что-то типа "новые данные". Я регистрируюсь к событию (callback) и в своём :vi: пересылаю данные из события в виджет.
Последовательность действий: настроить-запустить клиент > зарегистрировать callback > запустить клиент > наслаждаться картинкой.

Прямо-топорно, с вызовом .net всё успешно нработает. Примерно так
net.png
net.png (11.33 КБ) 2132 просмотра
Хочется обернуть всё это в XC, чтобы провода .net были спрятаны, но вот как передать ссылку на .net-контрол, не могу найти способ.
К сожалению приложить весь проект не могу, без сервера всё ранво ничего не запустите.

Теперь детали.

1 шаг- init.
тут создаю клиента. Пробовал создавать и виджет, не помогло.
init.png
init.png (23.96 КБ) 2132 просмотра
когда делал в ините создание экземпляра ещё и виджета, на фасаде был индикатор. Сейчас этот элемент - контрол.
2. на фасаде есть контрол-экземпляр нужного класса. Его надо где-то "запомнить".
Пытаюсь делать это так.
DSC.png
Когда экземпляр создавал в ините, тут как раз записывал значение из "display stati in" в индикатор.
Кейсы-циклы сделал, чтобы лишний раз в .net не лезть. Проверяю, какое именно свойство поменял пользователь, только такое для такого вызываю методы клиента.
Второй вариант - т.к. ссылка "пропадает" при запуске (будет чуть позже), перенёс её в exec state change
3. ну и коннект сделан методом XC:
connct.PNG
Теперь начинается веселье.
Шаг1. создание, ref есть.
create.png
2. запускаю.
на первом шаге ссылка ещё есть, но потом она пропадает.
run.png
остальные значения в регистре сохраняются успешно.
И даже клиент работает, callback сигналит о своей работе.

3. ну и до кучи: после остановки ссылка возвращается.
stop.png
stop.png (4.45 КБ) 2132 просмотра
По сути, всё, что нужно - в методе connect передать реф на виджет в callback функцию. собственно вопрос: КАК?
Artem.spb

Activity Автор
professor
professor
Сообщения: 3393
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: обернуть .net в X-control

Сообщение Artem.spb »

сам спросил, сам ответил.
.net вобщем-то не виноват.
Я сам забыл поставить флаг "данные изменились" при записи ссылки на виджет, вот система её и не сохранила.
xc.PNG
xc.PNG (2.8 КБ) 2105 просмотров
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приложениями»