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


Программирование для LTR51 на С#

Вы не вошли.

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

Дмитрий
31.01.2014 10:27:41
#1

Гость

Программирование для LTR51 на С#

Здравствуйте,

Можно ли получить описание методов класса _ltr51api для работы с LTR51 в библиотеке ltrModulesNet?

А так же хотелось бы небольшой пример на C#, аналогично тому, как есть для LTR24 и LTR210. Только для актуальной версии библиотеки

31.01.2014 13:22:45
#2

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,338

Re: Программирование для LTR51 на С#

Описание класса можно посмотреть в исходниках обертки - в архиве https://bitbucket.org/lcard/ltr_cross_sdk/downloads/ltr_cross_sdk_src.zip в директории ltrapi/ltrModulesNet.

Сейчас примера нет. В принципе мог бы написать  пример, но не раньше чем через неделю. Если будет нужно - пишите.

Дмитрий
31.01.2014 13:45:57
#3

Гость

Re: Программирование для LTR51 на С#

Спасибо за оперативность и за ссылку, Алексей! Пример было бы неплохо, но пока не горит.

Есть еще один вопрос, по алгоритму работы:
Если модули LTR51 установлены в крейт LTR-EU-2 то, насколько я понимаю, нужно достучаться к крейту по стеи, зная его IP и порт, получить с него информацию о количестве устройств LTR51, их серийные номера, а затем, имея эти данные опрашивать устройства напрямую.

Верен ли мой ход мылси?

31.01.2014 19:48:08
#4

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,338

Re: Программирование для LTR51 на С#

Вообще есть программа ltrserver (http://www.lcard.ru/download/ltrserver_setup.exe), которая устанавливает связь с крейтами, подключены они по USB или по сети. В первом случае автоматически идет подключение всех найденных крейтов, во втором Вам нужно в ltrserver/'е добавить его адрес и установить связь вручную. А уже пользовательские программы подключаются через сервер. Чтобы подключится к модулю нужно знать его номер слота в крейте и серийный крейта (если их больше одного в сервере). При необходимости из сервера можно получить список керйтов и по каждому крейту список типов модулей (это делается в С# через _LTRNative, а в С - это функции ltrapi, описанные в ltrapi.pdf)

03.02.2014 11:59:41
#5

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

Re: Программирование для LTR51 на С#

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

В терминах ltrapi (которое на C) это примерно так:
1. Если к серверу подключен заведомо единственный крейт или известен серийный номер нужного крейта, то этот шаг можно пропустить. В противном случае установить соединение через LTR_Open с сервером, указав вместо серийного номера крейта CSN_SERVER_CONTROL == "#SERVER_CONTROL", слот 0 (CC_CONTROL), получить список серийных номеров крейтов функцией LTR_GetCrates, закрыть соединение LTR_Close.
2. Установить соединение с нужным крейтом (если задать пустой серийный номер, то берется первый доступный крейт), слот 0 (CC_CONTROL). Получить список MID модулей этого крейта функцией LTR_GetCrateModules. Если больше ничего из управления не надо, то можно закрыть соединение.
3. Для модуля с нужным MID = nn (например, 51) выполнить LTRnn_Open соответствующей библиотеки ltrNNapi, указав номер слота.

Примечание. Вместо #SERVER_CONTROL можно задать пустой серийный номер, тогда откроется первый доступный крейт и в том же соединении можно будет сделать GetCrateModules (и сэкономить close/open), но это только в том случае, если окажется, что сразу попали в нужный крейт. И если нет ни одного крейта, то LTR_Open с пустым серийником выдаст ошибку.

Дмитрий
03.02.2014 13:03:21
#6

Гость

Re: Программирование для LTR51 на С#

Спасибо огромное за информацию и советы!

Дмитрий
04.03.2014 14:28:35
#7

Гость

Re: Программирование для LTR51 на С#

Помогите, пожалуйста, еще с одним вопросом

Вот есть метод LTR51_CreateLChannel, а есть ли обратный метод, позволяющий извлечь данные настройки для указанного логического канала?

04.03.2014 16:18:54
#8

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,338

Re: Программирование для LTR51 на С#

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

Дмитрий
04.03.2014 16:23:59
#9

Гость

Re: Программирование для LTR51 на С#

Алексей, тогда подскажите следующее: А каким образом в итоговом 32-битном слове, в соответствующих битах, которые описаны в п.5.1 ltr51api.pdf, хранятся отрицательные значения, и значения с плавающей точкой (double)?

04.03.2014 18:39:50
#10

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,338

Re: Программирование для LTR51 на С#

расположение байт в 32-битном слове - рисунок на стр. 18 ltr51api.pdf, там же формула для перевода из вольтов в (double) в 8-битный код потенциометра, который хранится в битах 32-битного слова.

Для первода из кода в double формуле можно пробразовать в  U=((uref*(code-128))/(k*128)), где uref = 2.048, а k для диапазона 10В = -0.2010, для 1.2 = -1.6737.