реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> LabView6.1+SB как это делается?
bms
сообщение Mar 22 2006, 08:48
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 11-08-05
Пользователь №: 7 545



Есть устройство, управляемое по USB, есть драйвер к этому устройству.
Подскажите в двух словах как этот драйвер прикрутить к LabView6.1? Хочется уметь управлять этим устройством при помощи собственных программ написанных в LabView.
Заранее благодарен.
Go to the top of the page
 
+Quote Post
ipc
сообщение Mar 22 2006, 09:55
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793



Цитата(bms @ Mar 22 2006, 11:48) *
Есть устройство, управляемое по USB, есть драйвер к этому устройству.
Подскажите в двух словах как этот драйвер прикрутить к LabView6.1? Хочется уметь управлять этим устройством при помощи собственных программ написанных в LabView.
Заранее благодарен.

Если устройство нестандартное(те выпущено не National Instruments) то надо разбиратся что из себя представляют дрова.Обычно имеется как минимум dll библиотека содержащая функции работы с устройством,иногда бывает ocx компоненты(ActiveX кароче) и с ним работать гораздо удобнее.
Вобщем есть несколько вариантов

1.Любое устройство от NI управляется через фирменные дрова входящие в состав DiskDriverCD.Соответсвенно все необходимые функции для работы стандартизированы и интегрированы в Labview.
2.Устройство имеет dll библиотеку.Обычно также есть пример управления на С или бейсике и самое главное хедер содержащий названия функций и их параметры.В Labview для такого случая есть возможность вызова внешеней dll библиотеки в которой нужно указать имя библиотеки,имя функции,и набить параметры и их типы.Там есть сравнительно удобный визард который позволяет сделать все быстро.После ознакомления с примером или описанием устройства нужно создать в Labview соответствующие вызовы функций dll и правильно передать в них параметры.
3.Если есть ActiveX то в Labview имеется возможность их подключения после чего можно оперировать методами и свойствами компонента тем самым управляя своим девайсом.
4.Иногда производители устройств(если они хоть как то относятся к измерениям и ли управлению) поставляют набор "квадратиков" для Labview облегчающих работы с девайсом.
5.Если есть только драйвер "sys или wdm файл" то такой случае наиболее напряжный но всеравно используя API виндов(вызывая из Labview kernel.dll и прочие) можно им управлять.
Go to the top of the page
 
+Quote Post
bms
сообщение Apr 11 2006, 10:13
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 11-08-05
Пользователь №: 7 545



У меня устройство имеет dll-библиотеку. И в общем понятно как с этим работать. Но вот какая беда - после конфигурирования вызова (когда нажимаю "ОК") выскакивет сообщение, что функция с заданным именем не найдена. Хотя я просто выбрал то что предложил визард... Не могу понять в чём дело, может кто сталкивался с подобным?
Go to the top of the page
 
+Quote Post
ipc
сообщение Apr 11 2006, 10:20
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793



Цитата(bms @ Apr 11 2006, 14:13) *
У меня устройство имеет dll-библиотеку. И в общем понятно как с этим работать. Но вот какая беда - после конфигурирования вызова (когда нажимаю "ОК") выскакивет сообщение, что функция с заданным именем не найдена. Хотя я просто выбрал то что предложил визард... Не могу понять в чём дело, может кто сталкивался с подобным?

Непомню как в 6.1 но начиная с семерки то что предлогал визард всегда подходило.Какого рода сообщение появляется на экране.Возможно что dll библиотека в свою очередь тоже вызывает внешний код и ненаходит необходимой dll после чего выводит сообщение.Лучше всего посмотреть названия функций в любом редакторе ресурсов или просто в hex редакторе(если есть навыки то в ida) и сравнить то что предлагает визард и увиденное.Важное еще на каком языке написана dll,всякие билдеры и делфи делают dll через одно место и в этом могут быть грабли.

Кароче.Сообщение в студию,если оно малоинформативное dll в студию.
Go to the top of the page
 
+Quote Post
bms
сообщение Apr 11 2006, 10:45
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 11-08-05
Пользователь №: 7 545



Прикрепленный файл  dll.rar ( 19 килобайт ) Кол-во скачиваний: 128
[attachment=5057:attachment][attachment=5057:attachm
ent]
Цитата(ipc @ Apr 11 2006, 13:20) *
Цитата(bms @ Apr 11 2006, 14:13) *

У меня устройство имеет dll-библиотеку. И в общем понятно как с этим работать. Но вот какая беда - после конфигурирования вызова (когда нажимаю "ОК") выскакивет сообщение, что функция с заданным именем не найдена. Хотя я просто выбрал то что предложил визард... Не могу понять в чём дело, может кто сталкивался с подобным?

Непомню как в 6.1 но начиная с семерки то что предлогал визард всегда подходило.Какого рода сообщение появляется на экране.Возможно что dll библиотека в свою очередь тоже вызывает внешний код и ненаходит необходимой dll после чего выводит сообщение.Лучше всего посмотреть названия функций в любом редакторе ресурсов или просто в hex редакторе(если есть навыки то в ida) и сравнить то что предлагает визард и увиденное.Важное еще на каком языке написана dll,всякие билдеры и делфи делают dll через одно место и в этом могут быть грабли.

Кароче.Сообщение в студию,если оно малоинформативное dll в студию.



В архиве dll и сообщение....
Взгляните плиз...
Go to the top of the page
 
+Quote Post
ipc
сообщение Apr 11 2006, 10:58
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793



На первый взгляд ошибка вызвана не проблемами с dll а неправильным конфигурированием ее параметров.Дело в том что если неправильно задать типы и количество параметров а также правила их передачи(stdcall или cdecl) то прога начинает бомбить свою кучу,данные и стек и результат слабо прогнозируем.Есть хедер от этой dll?В соответсвии с какими соображениями передавались в ее функции параметры?
Go to the top of the page
 
+Quote Post
ipc
сообщение Apr 11 2006, 11:10
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793



Библиотека написана на VC++ и содержит следующие функции.

NUsbLib::CDevice::CDevice(CDevice::CDevice const &)
NUsbLib::CDevice::CDevice(uchar)
NUsbLib::CDevice::~CDevice(void)
NUsbLib::CDevice::operator=(NUsbLib::CDevice const &)
const NUsbLib::CDevice::`vftable'
NUsbLib::CDevice::Bulk(tagSUsbLibBulk const *,void *)
NUsbLib::CDevice::Command(tagSUsbLibVendorRequest const *,void *)
NUsbLib::CDevice::CommandWait(tagSUsbLibVendorRequest const *,void const *,void const *,ulong) 100016D0 8
NUsbLib::CDevice::Enum(tagSUsbLibDeviceInfo *,uchar)
NUsbLib::CDevice::LoadFirmware(tagSUsbLibIntelHexRecord const *)
NUsbLib::CDevice::Lock(void)
NUsbLib::CDevice::UnLock(void)
UsbLib_Bulk
UsbLib_Command
UsbLib_CommandWait
UsbLib_CreateEepromImage
UsbLib_DeviceClose
UsbLib_DeviceEnum
UsbLib_DeviceLock
UsbLib_DeviceOpen
UsbLib_DeviceUnLock
UsbLib_LoadFirmware
UsbLib_ReadIHFromFile
start

Какая из них вызвала ошибку?И какие параметры ей были переданы.
Go to the top of the page
 
+Quote Post
bms
сообщение Apr 11 2006, 11:28
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 11-08-05
Пользователь №: 7 545



Цитата(ipc @ Apr 11 2006, 15:10) *
Библиотека написана на VC++ и содержит следующие функции.

NUsbLib::CDevice::CDevice(CDevice::CDevice const &)
NUsbLib::CDevice::CDevice(uchar)
NUsbLib::CDevice::~CDevice(void)
NUsbLib::CDevice::operator=(NUsbLib::CDevice const &)
const NUsbLib::CDevice::`vftable'
NUsbLib::CDevice::Bulk(tagSUsbLibBulk const *,void *)
NUsbLib::CDevice::Command(tagSUsbLibVendorRequest const *,void *)
NUsbLib::CDevice::CommandWait(tagSUsbLibVendorRequest const *,void const *,void const *,ulong) 100016D0 8
NUsbLib::CDevice::Enum(tagSUsbLibDeviceInfo *,uchar)
NUsbLib::CDevice::LoadFirmware(tagSUsbLibIntelHexRecord const *)
NUsbLib::CDevice::Lock(void)
NUsbLib::CDevice::UnLock(void)
UsbLib_Bulk
UsbLib_Command
UsbLib_CommandWait
UsbLib_CreateEepromImage
UsbLib_DeviceClose
UsbLib_DeviceEnum
UsbLib_DeviceLock
UsbLib_DeviceOpen
UsbLib_DeviceUnLock
UsbLib_LoadFirmware
UsbLib_ReadIHFromFile
start

Какая из них вызвала ошибку?И какие параметры ей были переданы.


Ошибку выдают абсолютно все функции. Правда у меня видны только эти:
UsbLib_Bulk
UsbLib_Command
UsbLib_CommandWait
UsbLib_CreateEepromImage
UsbLib_DeviceClose
UsbLib_DeviceEnum
UsbLib_DeviceLock
UsbLib_DeviceOpen
UsbLib_DeviceUnLock
UsbLib_LoadFirmware
UsbLib_ReadIHFromFile
Ошибка одна и та же. Хедер пытаемся получить с автора, но пока безрезультатно - автор у нас не работает, потому сам себе хозяин.
Параметры мы собственно передать и не успели, просто когда жмёшь кнопку "ОК"- сразу после конфигурирования - тут же выскакивает ошибка. Появляется "разорванная стрелка" - приложение с ошибкой, как известно, не запускается... Получается что выбираю в визарде функцию из списка предложенных - и всё. Уже только одно это действие вызывает ошибку.
Go to the top of the page
 
+Quote Post
ipc
сообщение Apr 11 2006, 11:47
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793



Кажется все начинает прояснятся.
Когда выбирается путь и имя dll библиотеки(или при загрузке VI содержащей такой вызов) Labview производит поиск и инициализацию dll.Т.е загружает библиотеку в память(если та еще незагружена) и пытается получить handler на нее(поскольку dll это разделяемый ресурс и может использоватся одновременно из разных приложений).
Видимо в этот момент Labview и плющит.Потому что неважно какая функция выбрана,она быдет вызвана только когда до нее дойдет дело по ходу выполнения программы.
Кароче глючит сама dll в процессе инициализации.И видимо из за того что в системе нехватает msvcr80.dll которую она импортирует судя из того что показала IDA.
Вобщем у вас неполный комплект и нехватает одного или нескольких файлов необходимых для работы usbdll.Или теребите разработчика чтобы он перекомпилировал программу под статическое связывание этих редких компонентов или попробуйте порыть в инете.
Go to the top of the page
 
+Quote Post
bms
сообщение Apr 11 2006, 12:44
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 11-08-05
Пользователь №: 7 545



Цитата(ipc @ Apr 11 2006, 15:47) *
Кажется все начинает прояснятся.
Когда выбирается путь и имя dll библиотеки(или при загрузке VI содержащей такой вызов) Labview производит поиск и инициализацию dll.Т.е загружает библиотеку в память(если та еще незагружена) и пытается получить handler на нее(поскольку dll это разделяемый ресурс и может использоватся одновременно из разных приложений).
Видимо в этот момент Labview и плющит.Потому что неважно какая функция выбрана,она быдет вызвана только когда до нее дойдет дело по ходу выполнения программы.
Кароче глючит сама dll в процессе инициализации.И видимо из за того что в системе нехватает msvcr80.dll которую она импортирует судя из того что показала IDA.
Вобщем у вас неполный комплект и нехватает одного или нескольких файлов необходимых для работы usbdll.Или теребите разработчика чтобы он перекомпилировал программу под статическое связывание этих редких компонентов или попробуйте порыть в инете.


Так и есть, Вы абсолютно правы, комплект действительно оказался неполным. Спасибо за помощь!

Разработчик подтвердил Вашу версию, обещал исправиться.
Go to the top of the page
 
+Quote Post
ipc
сообщение Apr 11 2006, 12:48
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793



Цитата(bms @ Apr 11 2006, 16:44) *
Так и есть, Вы абсолютно правы, комплект действительно оказался неполным. Спасибо за помощь!

Разработчик подтвердил Вашу версию, обещал исправиться.


Рад что смог помочь.Если потребуется помощь в запуске переработанной dll - обращайтесь.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 06:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01449 секунд с 7
ELECTRONIX ©2004-2016