Страница 1 из 1

Вытащить из DLL ActiveX

Добавлено: 08 янв 2020, 02:46
Select
Для внедрения ActiveX от стороннего интерфейса с функциональной поддержкой хочу применить Net.Container
Как в куче файлов DLL какого либо приложения на С, C# или Python вычислить наличие Dll файла с ActiveX. Разработчик нигде не закомментировал, а хотелось бы малой кровью ...

Re: Вытащить из DLL ActiveX

Добавлено: 08 янв 2020, 14:02
dadreamer
>> Для внедрения ActiveX от стороннего интерфейса с функциональной поддержкой хочу применить Net.Container
ActiveX и .NET это две принципиально разные технологии и между собой они никак не совместимы. Первая подключается через ActiveX Container (если объект имеет GUI) или через Automation Open (подпалитра Connectivity -> ActiveX). Вторая подключается через .NET Container (если опять же есть GUI) или через Constructor Node (подпалитра Connectivity -> .NET). Вам нужно определить, какой интерфейс используется в софте, его и будете пытаться подключать уже в :labview: . Хотя, если нет вменяемой документации по функциям интерфейса, то лучше сразу забросить эту затею.

>> Как в куче файлов DLL какого либо приложения на С, C# или Python вычислить наличие Dll файла с ActiveX. Разработчик нигде не закомментировал, а хотелось бы малой кровью ...
Если речь об ActiveX, то есть разные методики, например посмотреть таблицу экспорта, там должны присутствовать функции DllRegisterServer (DllInstall) / DllUnregisterServer. Или попробовать зарегистрировать её с помощью regsvr32; если зарегится, значит, это ActiveX / COM библиотека, дальше можно экспериментировать с ActiveX Container или Automation Open. См. эту тему: https://stackoverflow.com/questions/283 ... -a-com-dll
Что касается .NET, то здесь всё проще: кидаем на БД Constructor Node, жмём Browse, выбираем DLL-ку и смотрим, что получилось. Если либа экспортирует .NET объекты, то они появятся в списке :labview: . Если нет, то ничего не увидим или получим сообщение об ошибке. Естественно, нужно соблюдать разрядность: :labview: и DLL-ка должны иметь одинаковую разрядность, чтобы всё состыковалось.

Re: Вытащить из DLL ActiveX

Добавлено: 08 янв 2020, 18:26
Select
dadreamer,
"Что касается .NET, то здесь всё проще: кидаем на БД Constructor Node, жмём Browse, выбираем DLL-ку и смотрим, что получилось. Если либа экспортирует .NET объекты, то они появятся в списке :labview: . Если нет, то ничего не увидим или получим сообщение об ошибке. Естественно, нужно соблюдать разрядность: :labview: и DLL-ка должны иметь одинаковую разрядность, чтобы всё состыковалось."
-----------------------------------------------------------------------------------------------------------------------
У меня конкректная ситуация с софтом от Zaber. Они весь софт заточили под 64 Python. Они присутствуют на NI своими тулкитами для смостоятельной сборки :vi: GUI, дают какие то кривые примеры без комментариев с привязкой к внешним ресурсам. Все плюется и ругается, на каком то этапе понимаешь что отсутствуют те или иные объекты, которых с их сайта в переизбытке, терпж заканчивается. Пока что имеется рабочая GUI консоль для работы с железом. https://www.zaber.com/ довольно известна фирма, но :labview: спецы ихние темные ребята.
В онлайне никем ни в каком виде ничего не продемонстрировано.
Пока что запускаю софтину из под :labview: , несмотря на то что они дают API значения, там туева хуча алгоритмов по управлению и непролазные джунгли. С нуля строить бюджет не позволяет.

Re: Вытащить из DLL ActiveX

Добавлено: 08 янв 2020, 19:20
dadreamer
Как мне кажется, проще будет разобраться с их библиотеками ( https://www.zaber.com/software ) под :labview: , чем писать очередные велосипеды на .NET. Тем более что документация на :vi: предоставлена: https://www.zaber.com/wiki/Software/ASC ... iew_Driver / https://www.zaber.com/wiki/Software/Bin ... iew_Driver . Конечно, если уж очень сильно хочется, можно взять исходники библиотеки на C#, скомпилить в последней студии и результирующую DLL подключить к :labview: . Но также придётся написать :vi: -обёртки под те функции, которые потребуется "дёргать" для работы с железом. Это не очень приятное занятие, отнимающее приличное количество свободного времени.

Re: Вытащить из DLL ActiveX

Добавлено: 09 янв 2020, 01:46
Select
В мануалах нарыл ASCII команды, попробую что нибудь зарядить на VISA.
Процесс обсуждения навел на такой вариант, не уверен что из за разночтения комментов вытащу абсолютно все функции, но наверное буду двигать в этом направлении.
Благодарю за общение :drink:

Re: Вытащить из DLL ActiveX

Добавлено: 09 янв 2020, 02:33
Select
По ходу такую вот плюшку вытащил на NI http://www.ni.com/gate/gb/GB_INFOLVINSTDRIVER/US,
не разу с этим визардом не работал, от рекомендаций и полезной информации не откажусь

Re: Вытащить из DLL ActiveX

Добавлено: 09 янв 2020, 17:11
dadreamer
Мне таким тоже пользоваться не доводилось. Хочу заметить, что эта утилита в первую очередь для разработчиков драйверов, совместимых с VXI/IVI. Для рядового юзера она в 99% случаев бесполезна.
>>
This utility was created for developers of C-based instrument drivers who wish to provide a LabVIEW interface.
...
If you are not an instrument vendor, we recommend that you use this utility only if you have instrument driver expertise.
Разработчик драйвера, если он пишет на C и хочет предоставлять готовые обёртки под :labview: , должен прогнать свои либы через эту утилиту. В теории, на выходе должны получиться VI'шки, совместимые с VISA. Что на практике будет, сказать сложно. Ну, и вероятно нужно придерживаться некоторых правил при написании драйвера (а то и вовсе писать только на LabWindows).

Re: Вытащить из DLL ActiveX

Добавлено: 09 янв 2020, 22:55
Select
Да я на это обратил внимание, там есть процедура компоновки из разношерстных Dll рабочей библиотеки под :labview: . Сгрузил и тупо залил, активизировал, все примеры заработали без лишних телодвижений, Zaber применил наборы инструментов из этого тулкита.
Когда открыл переднюю панель первое что бросилось в глаза - специально под :labview: заточенный ASCII тестировщик команд. Много почерпнул полезного в плане тех вопросов которые запостил в Железе. Надо этот тулкит покурить со всех сторон, он позволяет собирать из сторонних значений GUI компоненты с процедурами.