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


Зависания в синхросборе Е-440

Вы не вошли.

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

Виталий
17.07.2006 06:13:35
#1

Гость

Зависания в синхросборе Е-440

У меня задача - во время синхросбора постоянно проверять, не

появилась ли 1 на одном из цифровых входов. Поэтому в цикле

синхросбора (размер буфера 36 кСлов, частота АЦП 100 кГц)

ожидание WaitForSingleObject организовываю так: беру время

gTimeOut = 2 * buffersize / Fadc, а время цикла опроса

цифровых входов - dTimeOut = 20 мс, а далее
t1=GetTickCount();
while (...)
{
WaitForSingleObject(..., dTimeOut);
pE440->TTL_IN(@ttl_in);
...
t2=GetTickCount();
if (t2-t1>=gTimeOut) ...   //выход по тайм-ауту
}
При этом, если я выпрыгиваю из цикла при появлении 1 на одном

из цифровых входов, то есть, не дожидаясь конца сбора, связь

с Е440 сразу теряется, и восстанавливается толькопо

передергиванию USB-шнура.
И даже если я всегда дожидаюсь конца сбора независимо от

цифровых входов, все равно связь с Е440 достаточно часто

зависает, причем, установил, что поток висит в функции

pE440->TTL_IN(), не возвращаясь из нее.
Есть ли вариант организации стабильной работы? И почему сразу

происходит потеря связи, если я не дожидаюсь сбора?
Вообще-то, у меня цифровые входы на одном из каналов

синхросбора, может, прямо из буфера во время сбора брать, но

тогда мне нужно знать, где самые свежие значения в буфере,

что-то типа переменной "к" в случае с L-783.

17.07.2006 12:43:48
#2

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

Re: Зависания в синхросборе Е-440

Посмотрите http://www.lcard.ru/forumthreads/2817. Очень похожие симптомы. Очень не плохо бы было довести модуль к нам на доработку. Можно и свой софт захватить (в качестве тестового инструмента).