Форум: Техническая поддержка

Тема: Обработка полученных от модуля данных

Вы не вошли.

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

12.03.2020 18:10:08
#1

Участник
Здесь с 12.03.2020
Сообщений: 5

Обработка полученных от модуля данных

Добрый день.
Есть задача - сохранения данных, получаемых от LTL11.
Проблема в том, что хранить обработанные данные (в формате double) это как бы не очень правильно и не очень экономно.
По сути данные представляют собой 14 бит, а в dooble это минимум 8 байт...

В связи с этим такой вопрос:
Если сохранять данные, получаемые функцией LTR_Recv, как потом получать значения, которые выдает функция LTR11_ProcessData?

12.03.2020 18:35:21
#2

Участник
Здесь с 12.03.2020
Сообщений: 5

Re: Обработка полученных от модуля данных

Можно где нибудь почитать описание этих функций:

  public virtual int Recv(uint[] Data, uint[] tstamp, uint size, uint timeout)
  public virtual int Recv(uint[] Data, uint size, uint[] tstamp, uint timeout)
  public virtual int Recv(uint[] Data, uint size, uint timeout)

В файле ltr11api.pdf похоже пропущено писание функции LTR11_Recv.
В пункте 1.5.4.4. Установка параметров работы АЦП модуля, мне кажется кусок от описания функции LTR11_Recv.
Может есть более правильная инструкция по API?

13.03.2020 12:19:25
#3

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

Re: Обработка полученных от модуля данных

Сама функция LTR11_Recv аналогична LTR_Recv из https://www.lcard.ru/download/ltrapi.pdf, за исключением того, что первым параметром принимает описатель TLTR11, а не TLTR.
Принимаются при этом 32-битные слова, общий формат которых описан в разделе 4.6 https://www.lcard.ru/download/ltr.pdf. 24-бита из этого 32-битного слова зависят от конкретного модуля. В случае LTR11 полный формат действительно не описан (там содержится 2-битовый счетчик, режим коммутации и собственно код АЦП), правда я не уверен, что он необходим.
Если задача стоит хранить компактно данные на диске, то мне кажется лучше использовать ProcessData() как обычно, но перед записью на диск преобразовать отсчеты double в коды (так как 14-бит хранить при байтовом доступе достаточно сложно, я бы использовал хранение в 16-битных значениях - short). При этом можно отключить преобразование в Вольты, тогда Вы на выходе уже получите коды в диапазоне -8192 до 8192 (с применением калибровки, если включена), хоть и в виде double. После этого просто каждый элемент результата преобразовываете в short для сохранения. При этом сохраняется проверка целостности данных и применение калибровочных коэффициентов из ProcessData(). Остается конечно лишнее преобразование в double и из double в short, но не думаю что это преобразование будет иметь значимое влияние на производительность программы.

Контакты

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

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

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

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