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


LTR11. Сбор данных.

Вы не вошли.

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

Евгений
11.01.2010 11:13:10
#1

Гость

LTR11. Сбор данных.

Для сбора данных используется LTR11_GetFrame (она более удобна чем LTR_Recv).
В описании указано что эта функция возвращает код ошибки.
Для разбора данных используется функция LTR11_ProcessData в которую нужно передать размер полученного от модуля массива.
Откуда брать этот размер ?
Может он как и для функции LTR_Recv возвращается в результате функции в виде положительного числа ?

11.01.2010 11:25:06
#2

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

Re: LTR11. Сбор данных.

[цитата ltr11api.pdf]
Формат: INT LTR11_GetFrame(PTLTR11 hnd, DWORD *buf)
Назначение: Осуществляет сбор одного кадра данных АЦП модуля. Размер кадра определяется полем LChQnt.
[конец цитаты]

Евгений
11.01.2010 14:21:23
#3

Гость

Re: LTR11. Сбор данных.

Спасибо за ответ.
Еще один вопрос.
Если программа использующая ltr11api.dll экстренно завершилась без закрытия канала (LTR11_Close), то следующий сеанс связи пройдет нормально ?
Не будет выдано ошибок что модуль уже используется ?

12.01.2010 16:27:01
#4

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

Re: LTR11. Сбор данных.

Не должно, но желательно не допускать, чтобы оставался запущенный процесс сбора данных (в этом смысле stop важнее, чем close)

Евгений
13.01.2010 12:49:35
#5

Гость

Re: LTR11. Сбор данных.

Спасибо за ответ.

Еще вопрос.
При попытке сбора выдаются ошибки
1)LTR11_ERR_NOACK =-1014; // нет подтверждения от модуля */
2)LTR11_ERR_ADCDATA_CNT =-1018; // неверный счетчик пакетов в данных от АЦП */

Что делать ?

1) Лог LtrServer:

[13.01.10 12:24:24.698] (0) SERVER: Starting up LTR-Server v1.5.1.1 (L-CARD)
[13.01.10 12:24:24.714] (3) CRATE_INIT: Connecting USB crate ////?//usb#vid_0471&pid_3030#5&476fb6f&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed} ...
[13.01.10 12:24:24.714] (3) CRATE_INIT: Crate Info:
[13.01.10 12:24:24.714] (3) CRATE_INIT: + PIDString = Crate LTR(HS Mode)
[13.01.10 12:24:24.714] (3) CRATE_INIT: + DeviceName = LTR030
[13.01.10 12:24:24.714] (3) CRATE_INIT: + SerialNumber = 1D066378
[13.01.10 12:24:25.714] (3) CRATE_INIT: Crate service started.
[13.01.10 12:24:25.714] (3) CRATE_READ: RST.XXXX module configuration updated. mconfig=00FF
[13.01.10 12:24:25.745] (3) CRATE_WRITE: WST.XXXX send STOP+RESET+STOP to module. slot=1
[13.01.10 12:24:25.745] (3) CRATE_WRITE: WST.XXXX send STOP+RESET+STOP to module. slot=2
[13.01.10 12:24:25.745] (3) CRATE_WRITE: WST.XXXX send STOP+RESET+STOP to module. slot=3
[13.01.10 12:24:25.745] (3) CRATE_WRITE: WST.XXXX send STOP+RESET+STOP to module. slot=4
[13.01.10 12:24:25.745] (3) CRATE_WRITE: WST.XXXX send STOP+RESET+STOP to module. slot=5
[13.01.10 12:24:25.745] (3) CRATE_WRITE: WST.XXXX send STOP+RESET+STOP to module. slot=6
[13.01.10 12:24:25.745] (3) CRATE_WRITE: WST.XXXX send STOP+RESET+STOP to module. slot=7
[13.01.10 12:24:25.745] (3) CRATE_WRITE: WST.XXXX send STOP+RESET+STOP to module. slot=8
[13.01.10 12:24:25.776] (3) CRATE_READ: RST.XXXX found new module. slot=1  mid=1B1B (LTR27)
[13.01.10 12:24:25.776] (3) CRATE_READ: RST.XXXX found new module. slot=8  mid=1616 (LTR22)
[13.01.10 12:24:25.776] (3) CRATE_READ: RST.XXXX found new module. slot=7  mid=0B0B (LTR11)
[13.01.10 12:24:25.776] (3) CRATE_READ: RST.XXXX found new module. slot=6  mid=2B2B (LTR43)
[13.01.10 12:24:25.776] (3) CRATE_READ: RST.XXXX found new module. slot=5  mid=2A2A (LTR42)
[13.01.10 12:24:25.776] (3) CRATE_READ: RST.XXXX found new module. slot=4  mid=3333 (LTR51)
[13.01.10 12:24:25.776] (3) CRATE_READ: RST.XXXX found new module. slot=3  mid=1B1B (LTR27)
[13.01.10 12:24:25.776] (3) CRATE_READ: RST.XXXX found new module. slot=2  mid=1B1B (LTR27)
[13.01.10 12:25:26.610] (3) CLIENT_INIT: Connection started for client 127.0.0.1: CSN=1D066378  CC=0007
[13.01.10 12:26:38.909] (3) CLIENT_CTL: Connection stopped for client 127.0.0.1: CSN=1D066378  CC=0007


2) Лог приложения использующего ltr11api.dll:

12:06:47.544 [1304] LTR11_Init
12:06:47.544 [1304] LTR11_Init - OK, Result=0
12:06:47.544 [1304] LTR11_Open, IPAddress=2130706433, TCPPort=11111, SerialNumber=1D066378, SlotNumber=7
12:06:47.778 [1304] LTR11_Open - OK, Result=0
12:06:47.778 [1304] LTR11_GetConfig
12:06:47.794 [1304] LTR11_GetConfig - OK, Result=0, StartADCMode=0, InpMode=2, LChQnt=0, LChTbl=([0] ), ADCMode=0, ADCRate.divider=36, ADCRate.prescaler=1
12:06:47.794 [1304] LTR11_SetADC, StartADCMode=0, InpMode=0, LChQnt=3, LChTbl=([3] 64,65,66), ADCMode=0, ADCRate.divider=36, ADCRate.prescaler=1
12:06:47.794 [1304] LTR11_SetADC - OK, Result=0
12:06:47.794 [1304] LTR11_GetFrame
12:06:53.825 [1304] LTR11_GetFrame - OK, Result=0
12:06:53.825 [1304] LTR11_Processdata, Calibrate=True, ADCToVolt=True
12:06:53.825 [1304] ERROR: LTR11_Processdata - Fail, Result=-1018, Message=, SizeData=0, Values=([0] )
12:06:53.841 [1304] LTR11_GetFrame
12:06:59.857 [1304] ERROR: LTR11_GetFrame - Fail, Result=-1014, Message=
12:06:59.857 [1304] LTR11_GetFrame
12:07:05.873 [1304] ERROR: LTR11_GetFrame - Fail, Result=-1014, Message=

14.01.2010 11:04:10
#6

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

Re: LTR11. Сбор данных.

Размер для LTR11_ProcessData в DWORD/'ах задаете?

Евгений
14.01.2010 15:18:44
#7

Гость

Re: LTR11. Сбор данных.

Задается равным LChQnt.
Для данного случая - 3.

Делалось по аналогии с предоставленным примером для Delphi.

FLTR11: TLTR11;
FData: array[0..LTR11_MAX_LCHANNEL*4]of DWord;
FValue: array[0..LTR11_MAX_LCHANNEL-1]of Double;
SizeData: integer;

SizeData := FLTR11.LChQnt; // для данного случая - 3
ResultDevice := LTR11_Processdata(@FLTR11, @FData[0], @FValue[0], @SizeData, true, true);

Евгений
18.01.2010 12:12:24
#8

Гость

Re: LTR11. Сбор данных.

Up

18.01.2010 12:28:12
#9

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

Re: LTR11. Сбор данных.

Евгений, Вы правы, GetFrame возвращает, как Recv, неотрицательное число прочитанных сэмплов (если нет ошибки). У Вас вернулось 0. Странно. Может быть, на Вашей системе какая-то нестыковка с тайм-аутом, наш программист посмотрит код функции.
Пока можно посоветовать либо использовать потоковый режим, либо взять исходный текст функции LTR11_GetFrame() из ltr11api.cpp, сделать свой вариант и попробовать подогнать параметры.

Евгений
18.01.2010 13:16:39
#10

Гость

Re: LTR11. Сбор данных.

Спасибо за ответ.

Если использовать для чтения данных LTR_Recv актуальные данные будут идти в начале массива данных или в конце ?
Можно ли скачивать не весь массив данных, а только актуальные на данный момент данные ?

Дело в том, что процедура сбора данных запускается периодически и период задается пользователем. Это могут быть и большие значения (например несколько минут). Мне по сути не нужен весь массив данных, а только актуальные на данный момент данные. Хочу определиться как лучше это сделать.

18.01.2010 16:28:47
#11

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

Re: LTR11. Сбор данных.

Евгений, в таком случае проще по мере надобности делать программный Start, потом Recv нужного количества отсчетов, потом Stop. Держать постоянно запущенный сбор данных нет смысла.

Евгений
18.01.2010 16:40:35
#12

Гость

Re: LTR11. Сбор данных.

Понятно.
Спасибо.

Константин Лесь
18.01.2010 16:53:27
#13

Гость

Re: LTR11. Сбор данных.

При использовании LTR_Recv последние данные будут в конце. Вычитать только часть данных нельзя.

Евгений
19.01.2010 18:51:52
#14

Гость

Re: LTR11. Сбор данных.

Вообщем, разобрался почему LTR11_GetFrame выдает 0.
Задавался неправильный режим источника тактирования АЦП: LTR11.InpMode = 0, а нужно было 2.
LTR11_INPMODE_EXTRISE=0;     // запуск преобразования по фронту внешнего сигнала */
LTR11_INPMODE_INT=2;     // внутренний запуск АЦП */