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


Ошибка 24 модуля: невыровненные данные

Вы не вошли.

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

Евгений IRZ
05.03.2026 15:29:43
#1

Гость

Ошибка 24 модуля: невыровненные данные

Стоит задача считывать каждые 5 мс данные и отправлять их дальше.
24 модуль считывает данные с частотой 78000 Гц в 20-битном формате. Крутится цикл с LTR24_Recv, который запрашивает данные по четырём каналам с таймаутом в 5мс. Полученное количество слов от функции записывается в очередь (чтобы в случае, если пришло меньше четырех, сохранить их последовательность), когда в очереди набирается 4 или больше слов, то она обрабатывается с помощью LTR24_ProcessData. И иногда возникает ошибка "Невыровненные данные" или "Неверный формат данных". В чём может быть проблема?

Сегодня 02:38:01
#2

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

Re: Ошибка 24 модуля: невыровненные данные

ProcessData обрабатывает данные покадрово, т.е. каждый обрабатываемый блок данных должен состоять из числа слов, кратного N (для 20-битного формата) или 2*N (длф 24-битный формата), где N - число разрешенных каналов. Т.е. если у Вас 4 канала и 20-битный режим, то необходимо не просто обрабатывать слова в очереди "когда в очереди набирается 4 или больше слов", но обрабатывать кратное 4 словам кол-во слов, после чего оставшиеся слова сдвигать в начало очереди и следующий принятый блок добавлять к ним. Данные ошибки как раз могут возникать, если склейка данных по кадрам и обработка строго целыми кадрами выполнена не корректно.

Следует также учитывать, что Windows не система реального времени, да и при передаче данных вносятся задержки передачи, поэтому обработка с таймаутом 5 мс будет приводить к тому, что хотя сбор на уровне модуля выполняется строго с заданной частотой (с учетом погрешности опорного генератора крейта), размеры принятых данных за 5 мс на стороне Windos будут сильно меняться от приема к приему и не соответствовать исходному интервалу сигнала 5 мс на уровне модуля. Если требуется обрабатывать по 5 мс исходя из времени синхронного ввода на уровне модуля, то может быть более корректно вычисление числа точек, которое модуль собирает за 5 мс исходя из установленной частоты и выполнять прием и обработку этого числа отсчетов с большим таймаутом (для учета времени передачи и задержек Windows), чтобы при штатной работе функция возвращалась по приему нужного количества отсчетов, а не таймауту, тогда хоть время на стороне ПК может варьироваться, но обкатываемые данные будет соответствовать интервалу снятых данных за 5 мс, и ручное разбиение на кадры не нужно (т.к. прием уже будет выравненным).

Контакты

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

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

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

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