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


Снова проблемма с L780 + Linux

Вы не вошли.

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

Novikov Andrey V.
09.11.2005 16:25:17
#1

Гость

Снова проблемма с L780 + Linux

Извините, что повторяюсь, но проблемма не решена.
Ядро 2.6.13.

Программа составлена по "Библиотека LDSP для работы с устройствами АЦП/ЦАП. Иван Горинов"
Программа должна измерить напряжение с указанного канала с частотой 10000 Гц.


LDSP_HANDLE dev;
int mask, channel;
short buffer[_fsize];

// fragment_info fragment;
// fragment.frag_size = 100;
// fragment.buf_size = 100;
// ldspInBuf(dev,&fragment);

int st;
char* DevName = "/dev/xdsp0";

if(argc>1) sscanf(argv[1], "%d", &channel);


st = ldspOpen(&dev,DevName,LDSP_ADC);
if(st<0)
{
printf("Cannt open device!!!/n");
return -1;
}
printf("Device opened successfully!!!/n");

int Channels=1;
st = ldspChannels(dev,&Channels);
if(st<0)
{
printf("Error setting Cannels/n");
return -1;
}
printf("Channels setted: Channels= %d/n",Channels);

channel_inf ci;
ci.mode = LCH_DIFFERENTIAL;
ci.input = channel;
ci.gain = 0;
ci.index = -1;

st = ldspSetChannel(dev,&ci);
if(st<0)
{
printf("Error setting ci/n");
return -1;
}
printf("Channel configured: index= %d/n",ci.index);


frame_timing rate;
rate.channel_rate = 10000;
st = ldspSetTiming(dev,&rate);
if(st<0)
{
printf("Error setting timing/n");
return -1;
}
printf("Timing setted: rate= %d/n",rate.channel_rate);


printf("Starting ADC...");
mask = LDSP_MASK_ADC;
st = ldspSetTrigger(dev,&mask);
if(st<0)
{
printf("Error setting Trigger/n");
return -1;
}
printf(" Trigger passed!/n");

st = ldspRead(dev,buffer,_fsize);
if(st<0)
{
printf("Error reading from device/n");
return -1;
}

int i=0;
for(i=0;i<_fsize;i++) printf("%d/n",buffer[i]);

ldspClose(dev);
return 0;

эта прога выдет:
root@dlts:/mnt/data/andy# ./stream 0
Device opened successfully!!!
Channels setted: Channels= 1
Channel configured: index= -1
Timing setted: rate= 10003
Starting ADC... Trigger passed!

и все! дальше она чего-то ждет! выходить приходится по Ctrl-C
Т.е. остановка происходит на сточке
st = ldspRead(dev,buffer,_fsize);


Не могли вы пояснить в чем ошибка или прислать текст простейший текст программы решающей эту задачу?

Андрей
18.11.2005 22:53:46
#2

Гость

Re: Снова проблемма с L780 + Linux

Извините, что вмешиваюсь, но попробуйте так:
компилите с NON_BLOCK (если не ошибаюсь, уточните  в какой-нибудь линуксовой доке на открытие драйвера):
dev=open(DevName,NON_BLOCK);
это вместо
st = ldspOpen(&dev,DevName,LDSP_ADC); 
тогда если нет инфы на входе, прога ждать ничего не будет и закончит свою работу.