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


Форум

Вы не вошли.

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

#1 Re: Техническая поддержка и выбор оборудования » Временами LTR*_Stop() завершается по таймауту. » 17.10.2025 16:08:43

Да, описанный подход возможен и используется (в той же LMS открытие и настройка модулей выполняется при загрузке эксперимента, а запуск сбора/генерации данных уже при нажатии кнопки запуска, которая может быть нажата сильно позже). ltrd не закрывает соединения с клиентом даже если обмена не было долгое время.

#2 Re: Техническая поддержка и выбор оборудования » LTR114,51,27: вопросы по движению кадров из модуля до клиента » 15.10.2025 04:57:07

По поводу описания передачи данных, то в принципе корректно, только во фразе:

Для LTR114 единица данных, насколько я понял - это данные только с одного из всех каналов, которые мы опрашиваем.
Для LTR27 единица данных - это полноценный кадр, то есть, грубо говоря, снимок данных со всех 16 физ.каналов модуля/сабмодуля.
Для LTR51 единица данных - это параметры частотного сигнала {N,M}, которые генерятся с частотой F_Base.

не совсем понятно, что имеется ввиду под "единица данных". Единицей передачи данных независимо от модуля является 32-битное слово (которые принимаются в LTRxxx_Recv()). Отличие в том, что в LTR114 во первых одному отсчету соответствует 2 слова, во вторых, так как это модуль с коммутацией каналов и измерения происходят последовательно, то он передает по одному отсчету (2 слова), как только очередные данные будут готовы, т.е. данные будут передаваться по два слова равномерно с частой АЦП. В LTR27 одному отсчету соответствует одно слово, при этом в этом модуле каналы АЦП работают параллельно и модуль сразу выдает все 16 слов (по одному отчету на канал) раз в заданный период дискретизации АЦП. В LTR51 передача идет аналогично LTR27, но одному отсчету соответствует два слова, со значениями M и N. Но все это передается в общий буфер и при передаче в ПК один кадр даже переданный одновременно от модуля, как для LTR27? может быть разбит например на разные пакеты TCP, в середину кадра попасть данные другого модуля если придут в момент передачи слов кадра и т.п.

a) идея в принципе правильная, правда при передаче по Ethernet это все немного сложнее. Корректнее сказать, что данные поступают в общий буфер в крейте, прошивка процессора крейта на сколько я помню раз в 1 мс проверяет наличия новых данных в FIFO и при их наличии ставит их на передачу по интерфейсу, в Вашем случае через TCP по Ethernet. Далее уже действуют алгоритмы передачи самого TCP, на которые влияет реализация TCP с обоих сторон соединения, в частности Алгоритм Нейгла  (данные передаются либо когда все отправленные были подтверждены другой стороной, либо накопился целый новый пакет для отправки по TCP), подверждения от ПК  так же могут при этом быть отложены и не переданы сразу (delayed ACK) и т.п.

б) Если говорить о задержках в модулях и в крейте до попадания данных в FIFO буфер крейта, то тут они будут либо фиксированы для каждого типа модуля, либо иметь небольшой дребезг, но явно они не измерялись для каждого режима работы каждого модуля. Но они не должны превышать единиц мс и остальные факторы по идее должны иметь большее значение при обработке данных на ПК.

в)  Задержки в сети измерить выглядит не так просто, если под ними подразумевать не только физическое время передачи пакета, но и задержки в планировании отправки пакетов сетевого стека с обоих сторон соединения. Про ltrd так, но опять же ОС общего назначения вполне имеет право вносить задержки при переключении задач на выполнения ltrd, при передаче программе сигнала готовности данных принятых по сети в сокете и т.п., и они в общем случае не нормированы, хотя и в частном случае малозагруженной системы могут быть минимальными
г) помимо буфера ltrd нужно иметь ввиду, что обмен ltrd с клиентом также выполняется через локальные сокеты, у которых тоже есть свой внутренний буфер. Если в нем есть место, то ltrd сразу принятые слова записывает в сокет на передачу клиенту и они в собственно буфере данных модуля в самом ltrd  не задерживаются. Заполняться буфер будет в том случае, если сокет клиента не может принять на передачу данные из-за того, что его буфер заполнен. Таким образом действительно, если клиент своевременно откачивает данные, то этот буфер должен быть пуст или минимально заполнен.
В теории (если это действительно нужно, см. дальше) определить число готовых к приему слов по статистике можно, но если использовать счетчик принятых от модуля слов (wrd_recv). Т.е. можно перед LTRxxx_Start() прочитать это значение, далее с учетом того, что по крайней мере для используемых у Вас модулей, по вызову Start происходит посылка одной команды с одним ответом (для LTR114 предполагается, что начальная калибровка уже выполнена до старта), то прибавить к этому числу 1 и взять это значение за начало отчета. Далее проверяя статистику и вычисляя разницу между новым wrd_recv и взятым за начало отсчета, можно понять, сколько слов данных было принято от модуля. При этом нужно также завести счетчик принятых слов клиентом (т.е. Вашей программой) увеличиваемый при каждом успешном Recv на количество принятых слов. Соответственно разница числа принятых слов от модуля и принятых слов клиентом и будет числом принятых ltrd, но не считанных клиентом слов, т.е. той самой общей заполненностью буферов сокета клиента и буфера модуля в ltrd.

д) Подходы могут быть разные... С моей стороны самым простым и удобным является выделение под каждый модуль потока, и в нем реализовывать принцип, который и приводится в консольных примерах на модуль. Т.е. исходя из интервала обработки и настроенных частоты сбора и прочих настроек можно получить, сколько слов мы должны обработать за один цикл программы, а далее вызывается в этом потоке Recv на этот размер с заведомо большим таймаутом (время цикла плюс несколько секунд). В этом случае при корректной работе Recv ожидает заданное число слов и как только они дойдут до клиента, Recv вернет управление (по сути то, что Вы пытаетесь сделать). Таймаута функция при штатной работе не дожидается (т.к. завершение работы функции выполняется по тому событию, которое было первым - пришло нужное число данных или истек таймаут), и служит только как указание через сколько выйти из функции в случае каких-либо ошибочных ситуациях, и завышенное значение негативно на нормальную работу не влияет. Далее уже идет ProcessData, возможно какая-то своя обработка и далее при необходимости передача полученного блока данных за цикл в другой поток для обработки/сохранения в зависимости от задачи. После переход к новому циклу ожидания. В этом случае время цикла обработки определяется временем прихода нужного числа данных, нет требования измерять время или заполненность буфера вручную и если время обработки меньше времени цикла, то гарантирует своевременную откачку данных. Так как на каждый модуль свой поток, то то, что он спит, ожидая новую порцию данных внутри Recv, не является проблемой, все равно ему нечего выполнять, пока нет новых данных. Если есть желание принимать данные всех модулей в одном потоке, тогда общий поток не должен зависать в Recv, тогда имеет смысл получать число непрочитанных слов через статистики описанным выше методом, а при потоке на модуль не уверен в целесообразности этого...
e) ну тут опять же зависит от Вашей программы, если как описано выше Recv используется для ожидания новых данных, то таймаут может быть взят с большим запасом на несколько секунд больше интервала сбора и это ничему не вредит, в варианте со статистикой он может быть и небольшим (в пределах секунды или десятков/сотен мс), тут только задержки самой ОС могут влиять, хотя опять же увеличение его не влияет негативно на штатную работу.

#3 Re: Техническая поддержка и выбор оборудования » LTR114: 5022 ОМ при вытыкании резисторов » 15.10.2025 03:44:46

а то, что в ltr114_metr программе нельзя одновременно измерять напряжение и сопротивление - это просто ограничение программы или действительно есть какие-то ограничение на "смешанное" измерение?

Это ограничение конкретной программы, т.к. она в первую очередь предназначена для поверки модуля, а в ней поверка при измерении напряжения и сопротивления проводятся отдельными этапами. В другом ПО, вроде LMS, или при написании своей программы, Вы можете использовать одновременно часть каналов под измерения напряжения, а часть под измерения сопротивления, с тем лишь учетом, что физически канал измерения сопротивления занимает контакты под два канала измерения напряжения (n и n+16).
Из руководства пользователя LTR:

LTR114 реализует следующие возможные соотношения количеств каналов измерения напряжения/сопротивления : 16/0, 14/1, 12/2, 10/3, 8/4, 6/5, 4/6, 2/7, 0/8 (естественно, меньшие количества каналов измерения в перечисленных парах тоже реализуемы).

#4 Re: Техническая поддержка и выбор оборудования » Временами LTR*_Stop() завершается по таймауту. » 14.10.2025 16:45:33

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

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

Если данные не вычитывать и они заполнят весь буфер, то далее из-за отсутствия места станут отбрасываться, если вызвать Stop в этот момент, то так как команды и данные передаются в LTR общим потоком для модуля, то ответ на Stop может быть отброшен из-за отсутствия места в буфера, что может привести к подобной ошибке. Но переполнение это не штатная ситуация, которая при нормальной работе не должна возникать.

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

При корректной последовательности вызовов и штатной работе подобных проблем при вызове Stop возникать не должно. Выполнять вызов последовательности функций правильно целиком в Ваших руках, а переполнение буфера это в общем нештатная ситуация, которая по хорошему требует перезапуск сбора или вообще целиком модуля (Close/Open).

Чтобы проверить, что при корректной последовательности вызовов все нормально работает, можете просто запустить параллельно по примеру на каждый модуль отдельными программами, просто поменяв настройки на нужные.

#5 Re: Техническая поддержка и выбор оборудования » LTR114: 5022 ОМ при вытыкании резисторов » 14.10.2025 12:19:15

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

5022 Ом в Вашем случае это значение, соответствующее максимальному коду АЦП, переведенное в Ом с учетом калибровочных коэффициентов конкретного модуля. Оно выше номинального диапазона (4000 Ом), т.к. у модуля есть свой запас диапазона (вне номинального, где технически сигнал еще в пределах измерения АЦП, но погрешность не гарантируется). Т.е. по сути это соответствует зашкалу АЦП (превышение верхнего предела измеряемого сигнала).

Следует учитывать, что в случае оборванных входов, значение измеряемого сигнала в случае LTR114 в принципе не определено и Ваше предположение, что оно должно быть 0 не верно, подробнее об этом описано тут: https://www.lcard.ru/support/faq/nc_inp_drift_adc . Поэтому оно может быть как зашкал за верхнюю границу измерения (5022 Ом в Вашем случае), за нижнюю границу (0 Ом), так и в принципе в пределах действительного диапазона. В том числе это вполне может  для АЦП с коммутацией каналов зависеть от порядка и параметров измерения опрашиваемых каналов, как и от частоты переключения каналов (тут еще вопрос, все ли отсчеты Вы выводите на больших частотах, возможно просто этот процесс не виден, если отображается только один отсчет за период). Но в любом случае, нельзя рассчитывать на конкретное значение измерения при не подключенных входа LTR114 (у модуля есть отдельно функция проверки обрыва линий, но при остановленном сборе).

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

В LTR114 же используется АЦП с встроенным фильтром, частота среза и характеристики которого также меняются с уменьшением частоты АЦП (подробнее см. в главе 18 руководства https://www.lcard.ru/download/ltr.pdf). Для 5 Гц в частности наибольшее подавление фильтра находится в окрестностях частоты 50 Гц, для подавления влияния сетевых помех. Поэтому понижение частоты АЦП для LTR114 в общем случае должно давать лучшее подавление помех, чем простое усреднение, поэтому

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

#6 Re: Техническая поддержка и выбор оборудования » E14-440 + fedora42 » 10.10.2025 03:40:51

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

Да, для L-502/E-502/E16 используется другая библиотека. Ее подробное описание приведено тут: https://www.lcard.ru/download/x502&e16api.pdf
По поводу установки библиотеки, то пакеты устанавливаются аналогично lcomp, только требуемый пакет libx502api1-devel и его зависимости. Драйвер для E-502 не требуется, так как работа по USB под Linux идет через стандартную библиотеку  libusb-1.0, а Ethrenet в принципе драйверов не требует. Установка под Linux описана в пункте 2.1.7 руководства программиста.

Примеры есть на сайте на странице https://www.lcard.ru/support/developer в разделе E-502/L-502, там есть два консольных примера под msvc/gcc:
Ввод - https://www.lcard.ru/download/examples/ … m_read.zip
Циклический вывод - https://www.lcard.ru/download/examples/ … le_out.zip
Также в исходных кодах библиотеки можно дополнительные примеры использования посмотреть: https://gitlab.com/l-card/acq/devices/x … type=heads

По поводу Вашей задачи я не до конца понял про мертвое время и запуск каждую секунду на 2 секунды. Но думаю что Вам нужно смотреть в сторону запуска постоянного потокового ввода одновременно данных АЦП и цифровых линий и по данным цифровых линий определять момент фронта PPS и привязывать к нему данные АЦП и уже делить на файлы и изменять данные в соответствии с задачей. Режимом именно запуска сбора по сигналу синхронизации у Вас вряд ли получится, т.к. во-первых синхронизация запуска АЦП и ЦАП идет по одному условию, а у Вас ЦАП если я правильно понял должен генерировать сигнал непрерывно и на том же модуле, а во-вторых иначе у Вас будут теряться данные во время перезапуска сбора, а у Вас время записи на 2 секунды по сути на два блока непрерывного сбора, и не понятно как гарантировать, чтобы перезапуск успел до прихода следующего PPS.

#7 Re: Техническая поддержка и выбор оборудования » Обновление прошивки LTR-EU-2 » 09.10.2025 18:21:42

SendDebugMsg посылает по Ethernet UDP пакет с текстом отладочного сообщения.
Эти сообщения можно посмотреть утилитой под Windows: http://www.lcard.ru/download/ltr_udp_monitor.zip, ну либо самостоятельно перехватывать эти UDP сообщения
Штатно без JTAG других отладочных средств нет, если только самостоятельно свои отладочные команды по USB/Ethernet добавлять.

#8 Re: Техническая поддержка и выбор оборудования » Однократный сбор в Linux L783. SetLDeviceEvent. » 06.10.2025 17:19:36

Функция SetLDeviceEvent реализована только в Windows-версии библиотеки lcomp.
Для Linux если только вручную отслеживать по позиции в буфере, когда будет принято нужное число отсчетов, после чего перезапускать сбор.

#9 Re: Техническая поддержка и выбор оборудования » Raspberry Pi 5. Debian 12. E14-440. Ошибка при запуске test » 30.09.2025 21:38:06

Да, сейчас действительно в примере на консоль выводятся только указатель на заполненность буфера (первое число) и завершение сбора (второе), а данные просто пишутся в файл в отдельном потоке (thread_func). Данные в бинарном файле по два байта на отсчет, формат описан в главе 3.2.1 документа https://www.lcard.ru/download/e14_440_p … _guide.pdf .

Также необходимо установить настройки АЦП в соответствии с вашим подключением сигналов ко входам АЦП, в частности тут задается опрос  каналов:

          
    adcPar.t1.NCh = 4;
    adcPar.t1.Chn[0] = 0x0;
    adcPar.t1.Chn[1] = 0x1;
    adcPar.t1.Chn[2] = 0x2;
    adcPar.t1.Chn[3] = 0x3;

В данном случае опрашиваются первые 4 канала в диф. режиме, диапазон 10 В, формат параметров опроса канала (Chn) описан в 3.2.3 в том же документе (или в lcomp.pdf windows-версии).

#10 Re: Техническая поддержка и выбор оборудования » Raspberry Pi 5. Debian 12. E14-440. Ошибка при запуске test » 30.09.2025 15:53:21

В смысле если посмотреть бинарные данные из записываемого файла, например через

xxd test.dat | less

то будут одни только нули?

#11 Re: Техническая поддержка и выбор оборудования » Обновление прошивки LTR-EU-2 » 30.09.2025 15:24:23

Здравствуйте.
Да, обновить можно через LTR Manager. Крейт должен быть подключен по USB. Обновление по Ethernet добавлено только начиная с версии прошивки 3.0.0.16.
Для восстановления прошивки можно выполнить долгое нажатие потайной кнопки RESET на задней панели LTR-EU-2, тогда запустится не рабочая прошивка, а загрузчик, через который можно записать основную прошивку по USB штатным образом через LTR Manager (он будет видится как обычный крейт, но без модулей). Ну если только в своей прошивке Вы не затрете область энергонезависимой памяти, где хранится загрузчик, но это нужно специально постараться сделать.

#12 Re: Техническая поддержка и выбор оборудования » Raspberry Pi 5. Debian 12. E14-440. Ошибка при запуске test » 25.09.2025 21:43:52

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

#13 Re: Техническая поддержка и выбор оборудования » Raspberry Pi 5. Debian 12. E14-440. Ошибка при запуске test » 24.09.2025 18:27:36

Судя по всему проблема из-за некорректной работы библиотеки/драйвера при нестандартном размере страницы памяти (на RPi5 перешли на 16384 вместо стандартной 4096). Там действительно при выделении буфера (в функции RequestBufferStream) есть место, где есть зависимость от этого размера, поэтому у Вас она и завершается с ошибкой и буфер не выделяется и реально указатель возвращается нулевой и далее уже пример падает при попытке обращения по нему.

У нас на одноплатных ПК на arm везде размер 4096 и все работает корректно. На следующей неделе надеюсь  будет возможность попробовать именно на RPi5 и поправить работу.

Пока можете попробовать запустить версию ядра со старым размером страницы, насколько я понял это возможно задав "kernel=kernel8.img" в файле настроек /boot/firmware/config.txt (добавив строку или заменив, если уже есть kernel=).

#14 Re: Техническая поддержка и выбор оборудования » Raspberry Pi 5. Debian 12. E14-440. Ошибка при запуске test » 22.09.2025 17:45:51

И можете также вывести результат RequestBufferStream - заменить

 
pI->RequestBufferStream(&size);
cout << " alloc size " <<  size << endl;

на

 
err = pI->RequestBufferStream(&size);
cout << " alloc size " <<  size << " err " << err << endl;

#15 Re: Техническая поддержка и выбор оборудования » Raspberry Pi 5. Debian 12. E14-440. Ошибка при запуске test » 22.09.2025 17:35:08

А можете привести вывод  при вызове из командой строки:

getconf PAGESIZE

А также сделать

sudo dmesg -c  

до запуска примера и после и если появятся какие-то сообщения в выводе после, то тоже их привести.

#16 Re: Техническая поддержка и выбор оборудования » E502 - получение аналоговых данных в "родном" формате - т.е. int16 » 22.09.2025 16:07:41

X502_GetAdcCoef принимает параметром номер диапазона и возвращает два коэффициента (k и b) для этого диапазона. Номера диапазонов определены как t_x502_adc_range в x502api.h, т.е. начинается с диапазона 10 В, который имеет номер 0.

#17 Re: Техническая поддержка и выбор оборудования » Raspberry Pi 5. Debian 12. E14-440. Ошибка при запуске test » 17.09.2025 18:25:18

Здравствуйте.
Во-первых, т.к. в Linux регистр в названии файлов важен, то имя файла прошивки нужно писать с его учетом (сами файлы прошивок ставятся в /usr/share/lcomp/firmware/, имя пишется без расширения), для E440 имя файла с большой буквы, т.е. правильно запускать
./test 0 E440

Во-вторых, лучше взять последнюю версию этого примера из исходников библиотеки: https://gitlab.com/l-card/acq/devices/e … type=heads

Тогда проверьте на этой версии и с правильным регистром в имени файла прошивки (E440) заработает или все равно будет ошибка сегментирования

#18 Re: Техническая поддержка и выбор оборудования » Схема подключения к модулю LTR114 и LTR51 » 10.09.2025 16:41:03

Добрый день. Переходник видимо имеется ввиду DB37Fv4 (https://www.lcard.ru/products/accesorie … -increaser). Он подходит к любому модулю LTR и на нем сигналы с разъема на передней панели модуля выводятся на клеммы один к одному для возможности удобного подключения проводов.

Подключение сигналов к LTR114 подробно описано в разделе 18.3 руководства LTR (https://www.lcard.ru/download/ltr.pdf), в частности соответствие сигналов и номеров контактов на разъеме модуля/переходнике указаны на рисунке 18-4 и описаны в таблице 18-2, а типичные варианты подключения на рисунке 18-6.

#19 Re: Техническая поддержка и выбор оборудования » E14-440 + fedora42 » 22.08.2025 11:52:57

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

Отдельной инструкции к сожалению нет.

Все требуемое Вы установили.
В качестве консольного примера можно взять пример из исходных кодов библиотеки: https://gitlab.com/l-card/acq/devices/e … type=heads

Просто нужно собрать main.cpp (из консоли достаточно вызвать: g++ main.cpp -o <имя исполняемого файла>).
Для запуска примера ./<имя исполняемого файла> <номер слота> <имя bios>
<номер слота> для одного устройства 0
<имя bios> - в вашем случае - E440

В качестве документации можно использовать документацию lcomp под Windows (ставится с http://lcard.ru/download/lcomp.exe), сами функции такие же

#20 Re: Техническая поддержка и выбор оборудования » Прошивка LTR-EU-2-5 » 18.08.2025 16:39:27

А что именно подразумевается под "Сломалось взаимодействие с нашим ПО"? Какие именно возможности LTR43 вы используете и в чем проявляется некорректная работа?

Так с точки зрения api работа не должна была меняться. Чтобы проверить, действительно ли проблема в версии прошивки LTR43, выложил сюда архив с версией 2.0: http://lcard.ru/download/ltr43_avr_update_2.0.zip (нужно разархивировать, закрыть все программы, работающие с модулем LTR43, и вызвать ltr43_update_all.bat)

#21 Re: Техническая поддержка и выбор оборудования » LTR24-1 работа с ltr24api » 18.08.2025 15:56:42

Чтобы ответить про данные нужен код настройки параметров работы модуля (т.е. все что идет с момента open и до start), а также знать, на какие контакты какой сигнал подаете.

Еще непонятно почему с src: Int, вылетает ошибка Invalid Memory Access, получается только с size: IntArray

Не совсем понял, src это исходный массив данных, он в любом случае массив. Если имелся ввиду параметр size в LTR24_ProcessData, то так как функция меняет его значение (на входе размер данных src, на выход после вызова - размер действительных данных в data), то он передается в C по указателю, а не значению, что технически в C выполняется аналогично передачи массива размером 1, но с разным смыслом. В JNA вроде для этого есть IntByReference.

Также в руководстве у некоторых полей структуры указано "не используется в LTR24-1", это значит полей нет или просто их нельзя использовать?

Забыл ответить из первого поста, эти поля есть, тип структуры всегда одинаковый, просто их не нужно менять, т.к. задающиеся ими режимы есть только в LTR24-2

#22 Re: Техническая поддержка и выбор оборудования » LTR24-1 работа с ltr24api » 14.08.2025 16:31:22

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

Правильно ли я понимаю что т.к. pack = 4, минимальный размер поля должен быть 4 байта?

Не совсем так, правильнее каждое поле от начала структуры выравнено на минимум между своим размером и 4 (т.е. байтовое располагается подряд, WORD всегда выравнен на 2 байта от начала структуры, DWORD/INT/float/double выравнены на 4 байта)
Т.е. например несколько байтовых полей идут всегда подряд.
Если два байтовых поля, а потом двухбайтовое, они тоже будут подряд.
Если одно байтовое, а потом двухбайтовое, то будет пропуск после первого байта, чтобы выравнять второе поле на 2 байта.
Если одно байтовое, а потом 4-х байтовое, то после байтового поля будет 3 байта пропуска, чтобы выравнять второе на 4 байта.
Если одно байтовое, а потом 8-и байтовое, то будет точно также 3 байта пропуска, т.к. из-за pack(4) поля размером больше 4 тоже выравниваются на 4

Также нужно учесть, что размер BOOL 4 байта, а размер BOOLEAN - 1 байт. Размер указателя зависит от используемой разрядности компилятора/виртуальной машины (4 или 8 байт).

Если в языке есть способ узнать размер полученной структуры (по аналогии с sizeof в C), то правильность вы всегда можете проверить, сравнив размер, полученный в вашем языке аналогом sizeof, с размером, который будет в поле Size после вызова LTR24_Init

#23 Re: Техническая поддержка и выбор оборудования » Изменение прошивки LTR-EU-2 » 12.08.2025 18:57:46

Так то сам сигнальный процессор можно перевести в idle-mode, и настроить, чтобы он просыпался по пину, на который настроить трансляцию с сигнала с разъема SYNC. Другой вопрос, насколько сильно скажется это на потребления всего устройства (крейт + модуль + датчики), т.к. остальные узлы крейта и модуль целиком все равно будут работать в обычном режиме. Не совсем правда понял, кто должен узнать его состояние и дать команду? По идее сам процессор и должен проснуться по сигналу и запустить сбор данных с модулей.

#24 Re: Техническая поддержка и выбор оборудования » Работа с E502 в Labbview под Linux » 12.08.2025 18:43:53

Здравствуйте. Если говорить про исходную библиотеку  e502api/x502api на C, то она под Linux работает, в том числе и под ARM, нужно только собрать или взять собранный пакет под нужную архитектуру и ОС.
Что касается LabView и .Net обертки (lpcieNet), через которую работают штатные примеры LabView, то их работа под Linux не проверялась. Нельзя исключать, что для запуска понадобятся какие-то правки.
Ну и само LabView, нужно смотреть как у него с поддержкой ARM, раньше вроде была поддержка только amd/intel, вроде есть некий LabVIEW Hobbyist Toolkit для запуска  на Raspberry, но не знаю, есть ли там какие-то особенности...

#25 Re: Техническая поддержка и выбор оборудования » Изменение прошивки LTR-EU-2 » 11.08.2025 21:20:35

Здравствуйте.
Действительно, штатная прошивка крейта подразумевает управление его работой со стороны ПК, а для использования крейта как автономного устройства и для  записи на SD понадобится писать свою прошивку на основе штатной. По поводу запуска по триггеру и спящего режима, то тут нужно уточнение, что является триггером, и какие требования к спящему режиму, т.к. у крейта не предусмотрено специального низкопотребляющего режима работы, если речь про это.

По поводу VisualDSP++, то последняя прошивка версии 3.0.0.x данную среду не требует, она собирается компилятором gcc, ее можно взять отсюда:
www.lcard.ru/download/user/ltr/ltreu_bfin_rtems-master.zip - исходные коды прошивки
www.lcard.ru/download/user/ltr/ltreu_bfin_rtems_rtos_lib-master.zip - требуемые сторонние компоненты, включая компилятор, используемая ОСРВ RTEMS и т.п. В readme.txt описано как собирать.

Для управления LTR11 и приема данных понадобится взять логику работы из библиотеки ltr11api (исходные коды можно взять из git: https://gitlab.com/l-card/acq/devices/l … api/ltrapi) и перенести внутрь крейта.

Если требуется разработка прошивки под Вашу задачу, то можете прислать запрос с подробным ее описанием в поддержку (support@lcard.ru), чтобы узнать возможность реализации, условия и сроки.

Контакты

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

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

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

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