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

Работа с DLL

Добавлено: 07 авг 2015, 14:34
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?

Re: Работа с DLL

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

Re: Работа с DLL

Добавлено: 07 авг 2015, 18:09
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.

Re: Работа с DLL

Добавлено: 10 авг 2015, 10:45
pion
В SDK для LabVIEW 7, и я не смог примеры запустить, чтобы они работали.

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

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

Re: Работа с DLL

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

Re: Работа с DLL

Добавлено: 10 авг 2015, 11:52
pion
попробуйте закинуть файлы Rtusbapi.dll и wrRtusbapi.dll в папку C:\Windows\System32 (на 64-битной ОС - SysWOW64) и запустить
Действительно работает, попробую это использовать.

Спасибо :thank: