Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


Несколько устройств E14-140M на одном компьютере

Вы не вошли.

 Поиск | Регистрация | Вход 

Дмитрий
27.02.2012 12:43:59
#1

Гость

Несколько устройств E14-140M на одном компьютере

Здравствуйте,интересует возможность одновременной работы до 4-х устройств E14-140M в связке с одним ПК?

27.02.2012 12:48:29
#2

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Несколько устройств E14-140M на одном компьютере

Будут работать.

Дмитрий
27.02.2012 13:03:11
#3

Гость

Re: Несколько устройств E14-140M на одном компьютере

Спасибо большое, тогда еще один вопрос. Каким образом осуществляется выбор конкретного модуля в LabView? VI/'s которые находятся в библиотеке lcomp? на сколько я понимаю, не предусматривают такой возможности, а работают с первым обнаруженным модулем.

Дмитрий
27.02.2012 13:40:12
#4

Гость

Re: Несколько устройств E14-140M на одном компьютере

Спасибо большое, тогда еще один вопрос. Каким образом осуществляется выбор конкретного модуля в LabView? VI/'s которые находятся в библиотеке lcomp, на сколько я понимаю, не предусматривают такой возможности, а работают с первым обнаруженным модулем.

27.02.2012 14:20:41
#5

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Несколько устройств E14-140M на одном компьютере

Конкретно по LabView я не в курсе, но программно можно различать модули по уникальному серийному номеру, или по логическим уровням, поданным на цифровой вход. В последнем случае фактически получаете адресацию, привязанную к месту модуля, как это обычно делают в многомодульных системах.

27.02.2012 15:01:09
#6

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Несколько устройств E14-140M на одном компьютере

Там есть понятие виртуального слота при открытии модуля, а потом используется полученный идентификато(HANDLE) модуля для дальнейшего вызова функций именно для этого модуля (он там тянется скозной нитью через весь пример). Выбирается нужный модуль последовательным открытием всех модулей и чтением их серийного номера например...

Дмитрий
27.02.2012 16:21:53
#7

Гость

Re: Несколько устройств E14-140M на одном компьютере

Спfсибо, Poul. Я сейчас смотрю документ labview_e154_e140_e440_e2010.pdf -
Библиотека виртуальных приборов для LabVIEW 7.1. Для    VI/'s, описанных в нем, такое понятие отсутствует.
Вот например описание  LV_OpenModule.vi:
"Назначение: Данный прибор устанавливает связь с первым найденным модулем.
Его следует вызывать один раз перед использованием остальных виртуальных
приборов.
Входные параметры: отсутствуют.
Выходные параметры:
• Error -  при успешной инициализации возвращает единицу,  при ошибке,
например, если модуль не найден, возвращает ноль;
• ModuleId – идентификатор модуля. Для модуля E154 равен 0, E14-140 равен
1,  для E14-440 равен 2,  для E20-10 равен 3.  Если подключен иной модуль
идентификатор принимает значение 255;
• ModuleName – строка содержащая имя модуля и его ревизию."

Т.е. придется корректировать VI/'s, чтобы "заточить" их под работу с конкретным модулем?

27.02.2012 16:45:47
#8

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Несколько устройств E14-140M на одном компьютере

Я только за lcomp могу сказать...

Дмитрий
27.02.2012 16:58:13
#9

Гость

Re: Несколько устройств E14-140M на одном компьютере

А можно по-подробнее, что вы имеете в виду под lcomp? Выше я привел выдержку из документации к библиотеке виртуальных приборов lview.llb, которая использует библиотеку lview.dll.

27.02.2012 17:21:36
#10

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: Несколько устройств E14-140M на одном компьютере

Poul имеет в виду программный интерфейс lcomp. То же относится к библиотеке lusbapi.
Функция открытия модуля использует понятие "виртуальный слот" (0...127), по сути это порядковый номер обнаруженного на машине устройства.
Различать устройства предполагается по типу (что это за модуль) и серийному номеру, который можно запросить у самого модуля.

Просто дело в том, что наши библиотеки в основном ориентированы на C/C++ (ну или готовый софт типа LGraph), а <<обертка>> для labview идет как дополнительная/демонстрационная и, похоже, поддерживает только одно устройство...
Сможете адаптировать под свои нужды? Исходные тексты есть.

27.02.2012 17:39:26
#11

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Несколько устройств E14-140M на одном компьютере

lcomp это lcomp.exe и то что он устанавливает. За те примеры что так установились я могу сказать...

Дмитрий
27.02.2012 20:26:05
#12

Гость

Re: Несколько устройств E14-140M на одном компьютере

Александр, я так понимаю "прикрутить" Сишные функции в LabView ничто не мешает?

Дмитрий
27.02.2012 20:47:21
#13

Гость

Re: Несколько устройств E14-140M на одном компьютере

Всем большое спасибо, кажется я понял, в какую сторону копать: L-Card/LIBRARY/WLCOMP_LV - там читать инструкцию и смотреть примеры... Я прав?

28.02.2012 16:23:49
#14

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: Несколько устройств E14-140M на одном компьютере

Ну да, можно взять сишные функции из lcomp или из lusbapi (только там c++, может быть, надо обертку писать; в lcomp она уже написана)

Дмитрий
28.02.2012 22:24:26
#15

Гость

Re: Несколько устройств E14-140M на одном компьютере

Вот выдержка из файла, instruct.html, который находится в C:/ProgramFiles(x86)/L-Card/LIBRARY/WLCOMP_LV/instruct.html
"Инструкция по работе с библиотекой LComp/WLComp) и платами/модулями L-Card в среде LabView.


Где лежит:
../Library/WLCOMP – бибблиотека обертка
../Library/WLCOMP_LV – пример и этот файл"

При этом в папке wlcomp файлов, имеющих отношение к labView нет.

В папке wlcomp_lv есть примеры, но в них все сводится к вызову функций на Си, т.е. обертки, как я понимаю, нет. При попытке запуска примеров, labView вылетает (LabView 10, 32 бита, но стоит на 64-битном ПК, так что может быть из-за этого)

От сюда вопрос - где можно взять обертку, чтобы все не сводилось к написанию на Си?

29.02.2012 10:56:39
#16

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Несколько устройств E14-140M на одном компьютере

CIN там готовые. LabView как там видно 8. Можете вызывать функции wlcomp.dll через CallLibraryFunction - это будет без C, но с кучей лишних проводов на диаграмме...

Дмитрий
03.03.2012 19:17:08
#17

Гость

Re: Несколько устройств E14-140M на одном компьютере

Хорошо, попробую зайти с другой стороны.
У меня сейчас есть полностью работающая и устраивающая меня программа, написанная мной в LabView с помощью библиотеки выложенной у Вас на сайте в разделе ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ:


"usbapi_e154_e140_e440_e2010_labview.zip     ( 12.12.11,   1,775 kB )

Библиотека виртуальных приборов для LabVIEW 7.1 "

Программа работает с одним модулем E14-140M, так как VIs, находящиеся в библиотеке, не включают в себя параметров, отвечающих за уникальность модуля.

Соответственно вопрос: каким наиболее "безболезненным" способом изменить программу для одновременной работы с 4-мя модулями E14-140M ?

05.03.2012 11:17:26
#18

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 136

Re: Несколько устройств E14-140M на одном компьютере

Я вижу два варианта:
1) Добавить поддержку виртуального слота в lview.dll, сделать несколько экземпляров этой библиотеки и вызывать их.
2) Добавить в lview.dll поддержку одновременной
   работы с модулями.

На мой взгляд первый вариант проще, хотя и несколько
кривоват.

Дмитрий
06.03.2012 21:55:40
#19

Гость

Re: Несколько устройств E14-140M на одном компьютере

Роман, Вы меня простите за возможно глупые вопросы, но я "только учусь". В папке LVIEW_DLL, где находится библиотека lview.dll я нашел файл wlusbapi.cpp, в котором описаны функции, применяемые в labview. В принципе я уже понял, что нужно изменить в этом файле, чтобы заставить его работать с конкретным слотом. Не могли бы Вы мне подсказать как и чем теперь перекомпилировать библиотеку? Т.е. чем открыть все это окружение?

11.03.2012 12:46:55
#20

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: Несколько устройств E14-140M на одном компьютере

Дмитрий, перекомпилировать можно каким-нибудь компилятором C++, какой Вы используете. Например, MS Visual C++ или MinGW или каким-нибудь другим. Поскольку это DLL, в зависимости от компилятора может потребоваться подкорректировать настройки, отредактировать .def файл. Если что, подскажем.

И должен пояснить насчет рекомендаций Романа. Просто добавить поддержку передачи номера слота как параметра в функцию открытия недостаточно, потому что в этой программе есть глобальные переменные, связанные с открытым модулем. То есть вызвать open два раза с разными слотами и потом работать с двумя модулями не получится.
По-хорошему надо переписать все функции так, чтобы все данные, специфичные для устройства,  передавались в каждую функцию параметром (например, как указатель на стркутуру в вызывающей программе), либо хранились раздельно и как-то адресовались из внешней программы.
В общем, чтобы как-то выбирать и передавать C++ный объект, с которым должна работать функция (и который в C++ неявно передается методам класса через указатель this).

Вариант (1) - сделать несколько экземпляров библиотеки - Роман предложил как <<ход конем>> для минимизации переписывания C-шного кода. Мысль в том, что можно оставить внутренний переменные глобальными, а просто передавать номер слота в функцию открытия, но тогда вся эта DLLка сможет работать одновременно (от open до close) с одним модулем. Если сделать несколько копий dll с разными именами (...1 ...2 ...3), то они будут загружаться отдельно и их данные будут различаться. Ну а функции импортировать надо будет динамически (через LoadLibrary / GetProcAddress), либо функции тоже переименовать.
Это <<некрасивый>> способ, но может быть проще.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4

Многоканальный телефон:+7 (495) 785-95-25

Письма и запросы: lcard@lcard.ru
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск