Работа с DLL

Простейшие вопросы в области инженерной разработки
Ответить
pion
beginner
beginner
Сообщения: 12
Зарегистрирован: 20 авг 2013, 18:41
Репутация: 0
Версия LabVIEW: 12
Контактная информация:

Работа с DLL

Сообщение pion »

Здравствуйте, уважаемые форумчане!
Прошу помощи по пониманию вызова функций из DLL.

Есть DLL с функциями управления АЦП.
Согласно руководству по программированию АЦП необходимо:

1. получить указатель на интерфейс АЦП, вызвав функцию RtCreateInstance();
2. используя полученный указатель на интерфейс АЦП, проинициализировать доступ к виртуальному слоту, к которому подключён модуль, применяя для этого интерфейсную функцию OpenDevice().

Есть пример на языке C, в котором вторая функция вызывается через указатель, причем, во второй функции только один параметр - это номер виртуального слота:

pModule = static_cast<IRTUSB3000 *>(RtCreateInstance("usb3000"));
if(!pModule) TerminateApplication(" Module Interface --> Bad\n");
else printf(" Module Interface --> OK\n");
for(i = 0x0; i < MaxVirtualSoltsQuantity; i++) if(pModule->OpenDevice(i)) break;

Как это сделать в LabView?

Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
professor
professor
Сообщения: 4937
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Репутация: 0
Версия LabVIEW: 2015, 2016
Откуда: СССР

Re: Работа с DLL

Сообщение IvanLis »

pion писал(а):Как это сделать в LabView?


В сет много примеров по этой теме, даже на русском языке, например: http://www.nf-team.org/drmad/stuff/lvdll.htm
Пользуйтесь поиском: https://www.google.ru/search?q=Calling+DLL+in+LabVIEW

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3507
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Работа с DLL

Сообщение dadreamer »

pion, в предлагаемом разработчиком пакете SDK уже есть :vi: и примеры для :labview: : http://www.r-technology.ru/products/qmsoft.php (раздел "ПО для самостоятельного программирования (SDK)"). Каталоги в архиве - SDK_12_11_12\SDK\RT_USB3000\Examples\LabVIEW71 и SDK\RT_USB3000\DLL\Lib\LabVIEW.

pion
beginner
beginner
Сообщения: 12
Зарегистрирован: 20 авг 2013, 18:41
Репутация: 0
Версия LabVIEW: 12
Контактная информация:

Re: Работа с DLL

Сообщение pion »

В SDK для LabVIEW 7, и я не смог примеры запустить, чтобы они работали.

Кроме того, я не сразу обратил внимание на то, какие функции предоставляет DLL для доступа к АЦП, а именно, они не совсем соответствуют описанию руководства по программированию.
Например, в DLL функция OpenDevice_Usb3000 которая принимает параметры IDevPtr и VirtualSlot (описание в заголовочном \SDK\RT_USB3000\DLL\Include\wrRtusbapi.h) в отличии от функции OpenDevice, которая, согласно руководству, принимает только параметр VirtualSlot.
В итоге АЦП зашевелился.

Спасибо за помощь.

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3507
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Работа с DLL

Сообщение dadreamer »

pion писал(а):я не смог примеры запустить, чтобы они работали.

А вы попробуйте закинуть файлы Rtusbapi.dll и wrRtusbapi.dll в папку C:\Windows\System32 (на 64-битной ОС - SysWOW64) и запустить. :wink: Используйте только 32-битный :labview: .
pion писал(а):В SDK для LabVIEW 7

:labview: 7.1 прекрасно открывается даже в :labview: 2015.
Вложения
2015-08-10_12-57-41.jpg

pion
beginner
beginner
Сообщения: 12
Зарегистрирован: 20 авг 2013, 18:41
Репутация: 0
Версия LabVIEW: 12
Контактная информация:

Re: Работа с DLL

Сообщение pion »

попробуйте закинуть файлы Rtusbapi.dll и wrRtusbapi.dll в папку C:\Windows\System32 (на 64-битной ОС - SysWOW64) и запустить

Действительно работает, попробую это использовать.

Спасибо :thank:

Ответить

Вернуться в «Для чайников»