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

L502 глубокое зависание в функции L502_Recv

Вы не вошли.

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

08.12.2015 14:26:35
#1

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

L502 глубокое зависание в функции L502_Recv

Здравствуйте !
Наша система содержит два АЦП, соединенных между собой кабелем синхронизации для синхронной работы. Помимо этого ведущий АЦП одновременно генерирует сигнал(меандр скважность 2) синхронизации с цифровых выходов на внешнее устройство который вводится еще и на цифровые входы того же АЦП. Идея в том чтобы разделять принятые отсчеты во всех 64 каналах АЦП относительно полупериода(нулевой или ненулевой)  сигнала с цифровых выходов. Программа для обработки данных написана на Delphi в среде Embarcadero RAD Studio XE2. Организован поток для сбора данных с АЦП в котором происходит чтение функцией L502_Recv, разделение на отсчеты АЦП и цифровые отсчеты (для ведущего АЦП) (функция реализована самостоятельно PreprocessData не вызывается) и так называемое транспонирование данных для того чтобы отсчеты каждого канала шли друг за другом в памяти вместо того чтобы идти группами поканально. Больше ничего в потоке не выполняется. В основном потоке программы реализованы сообщения таймера. Там производится копирование уже преобразованных данных из буфера потока в основной буфер, защищенное критической секцией, и дальнейшая обработка с выводом на графики. Очень редко, в случайные моменты времени, происходит зависание потока сбора данных на функции L502_Recv. Последней точкой стека вызовов является вызов функции CancelIoRequest уже внутри L502_Recv. Зависание очень глубокое. Попытка отменить выполнение программы приводит к зависанию среды программирования. Причем "выбить" программу из памяти невозможно ничем и даже перезагрузка системы не выполняется до конца приходится нажимать кнопку Reset. Работаю в системе Windows 7 x64. Возникает мысль что это зависание на уровне драйвера устройства. Неужели наша программа каким то непостижимым образом портит буфер для считывания данных и таким обрзом что зависание происходит в самом драйвере ???Может быть кто - нибудь сталкивался с такой проблемой до меня ?? Сразу скажу я работаю не с последней версией драйверов и библиотек для платы L-502. Мой инсталлятор lpcie_setup.exe датируется 20.01.2014.

08.12.2015 16:16:19
#2

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

Re: L502 глубокое зависание в функции L502_Recv

Здравствуйте.
Следует обновиться до последней версии драйвера. Действительно, была проблема в драйвере, которая могла приводить к подобному зависанию и позднее была исправлена (http://www.lcard.ru/node/1098), так что вполне возможно, что Вы тоже наткнулись на ту же самую проблему.

Библиотеки должны быть совместимы (разве что если копируете вместе с программой .dll, то кроме l502api.dll понадобится и x502api.dll). На всякий случай Вы можете сохранить старые билиотеки, поставить новый драйвер из последнего установщика и если возникнут проблемы, восстановить предыдущие библиотеки (так как интерфейс с драйвером не менялся), но должно работать и с новыми.

08.12.2015 16:54:03
#3

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

Re: L502 глубокое зависание в функции L502_Recv

Спасибо Алексей! Попробуем.

Контакты

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

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

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

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