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


E14-440 Ошибка при считывании в Linux

Вы не вошли.

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

Василий
28.11.2012 08:41:48
#1

Гость

E14-440 Ошибка при считывании в Linux

Дистрибутив SlacWare 14.

АЦП работает в режиме однократного сбора данных с одного канала. После примерно 10 запусков программы один запуск заканчивается зависанием, в dmesg можно увидеть следующее:

[ 4911.005687] lcard: size 8192
[ 4911.015687] lcard: size 8192
[ 4911.025686] lcard: size 8192
[ 4911.025688] lcard: Device stopped event fired


Какая причина зависания и что с этим делать?

28.11.2012 11:24:07
#2

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: E14-440 Ошибка при считывании в Linux

Те AutoInit=0? конец сбора определяется по счетчику или DIOC_WAIT_COMPLETE ?

Василий
28.11.2012 15:48:29
#3

Гость

Re: E14-440 Ошибка при считывании в Linux

AutoInit=0

Конец сбора тогда, когда вылетает цикл

fl1 = fl2 = (*syncVar_ptr<=halfbuffer) ? 0:1;
while ( fl2 == fl1 )
{
  fl2=(*syncVar_ptr<=halfbuffer) ? 0:1;
  usleep(10);
}

После этого пишу буфер в файл.

Иногда ПО виснет. Из документации неочень понятно как определить момент остановки сбора данных и выйти из цикла while.

29.11.2012 11:19:33
#4

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: E14-440 Ошибка при считывании в Linux

Корретно будет дождаться когда synVar станет равен pages*IrqStep (два halfbuffer). В примере поток дожидается половинок буфера и их записывает на диск. При AutoInit буфер заполнится однократно.