Форум: Техническая поддержка

Тема: Нужен пример использования ф-ции покадрового ввода

Вы не вошли.

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

Олег
10.02.2003 14:40:54
#1

Гость

Нужен пример использования ф-ции покадрового ввода

Пожалуйста, приведите пример использования ф-ции покадрового ввода ADC_KADR для E440. В документации явно не хватает информации о порядке ее применения - в частности, нужна ли ф-ция ADC_OPEN в этом случае.
Я пытался просто заменить ReadData на ADC_KADR - не работает.
Нужна ваша помощь!

10.02.2003 15:49:21
#2

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

Re: Нужен пример использования ф-ции покадрового ввода

1. Что за функция такая ADC_OPEN()?
2. Что значит не работает? Какую при этом возвращает ошибку функция GetLastErrorString()?

Олег
11.02.2003 04:56:18
#3

Гость

Re: Нужен пример использования ф-ции покадрового ввода

Г-н Сергей, прошу ответить по существу: нужен либо пример использования ф-ции покадрового ввода, либо подробное описание порядка ее применения - в документации просто констатируется, что такая функция есть. Этого явно недостаточно для меня лично. К сожалению, не могу предаться самозабвенному исследованию возможностей и API E440 - нет времени. Мне нужен просто работающий кусок кода с функцией покадрового ввода данных. Пожалуйста, дайте мне его!

11.02.2003 13:45:53
#4

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

Re: Нужен пример использования ф-ции покадрового ввода

Дык я вроде бы по существу и отвечал smile))
Я же не праздного любопытства задал все эти вопросы. Мне весьма ВАЖНО знать в чём же там дело, что конкретно случилось, какие при этом симптомы проявились, какое толкование ошибки вернула функция GetLastErrorString() и т.д. И это необходимо не только мне лично, но и всем пользователям данной продукции. Поскольку если это есть проявление программного глюка или ещё чего-нибудь, то нужно срочно принимать меры к исправлению выявленных упущений.
Исходя из этих посулов я думал, что ради такого благого дела можно было бы немного напрячься, ответить на заданные вопросы и, таким образом, помочь фактически всем пользователям в прояснении сей туманной ситуации.
Но был не понят. Как говорится, на нет и суда нет sad)
А штатное применение функции ADC_KADR() проще некуда:

.....

// проверим версию DLL библиотеки
if(GetDllVersion() != LC_CURRENT_VERSION) { printf("Dll Version Error!!!"); exit(1); }

// получим указатель на интерфейс модуля
ILE440 *pE440 = static_cast<ILE440 *>(CreateInstance("e440"));

// попробуем обнаружить какой-нибудь модуль
// в нулевом виртуальном слоте
if(!pE440->InitLDevice(0))  { printf(" InitLDevice() --> Bad//n"); exit(1); }
else fprintf(stderr, " InitLDevice() --> OK//n");

// прочитаем название модуля в нулевом виртуальном слоте
if(!pE440->GetModuleName(Buffer)) { printf(" GetModuleName() --> Bad//n"); exit(1); }
else printf(" GetModuleName() --> OK//n");

// проверим: этот модуль - /'E-440/'?
if(strcmp(Buffer, "E440")) { printf(" The module is not /'E-440/'//n"); exit(1); }
else printf(" The module is /'E-440/'//n");

// теперь можно попробовать загрузить из соответствующего ресурса
// библиотеки Lusbapi.dll (версия 2.0) код драйвера LBIOS
if(!pE440->LOAD_LBIOS()) { printf(" LOAD_LBIOS() --> Bad//n"); exit(1); }
else printf(" LOAD_LBIOS() --> OK//n");

// проверим работоспособность загруженного LBIOS
if(!pE440->MODULE_TEST()) { printf(" MODULE_TEST() --> Bad//n"); exit(1); }
else printf(" MODULE_TEST() --> OK//n");

// получим версию загруженного LBIOS (Lusbapi.dll версии 2.0)
if(!pE440->GET_LBIOS_VERSION(&LbiosVersion)) { printf(" GET_LBIOS_VERSION() --> Bad//n"); exit(1); }
else printf(" GET_LBIOS_VERSION() --> OK//n");

// теперь проверим версию загруженного LBIOS
if(LbiosVersion != LC_CURRENT_VERSION)  { printf(" LBIOS Version Error!!!"); exit(1); }
else printf(" LBIOS Version --> OK//n");

// попробуем прочитать информацию, хранящуюся в ППЗУ модуля
md.size = sizeof(MODULE_DESCR_E440);
if(!pE440->GET_MODULE_DESCR(&md)) { printf(" GET_MODULE_DESCR() --> Bad//n"); exit(1); }
else printf(" GET_MODULE_DESCR() --> OK//n");

// параметры работы АЦП
am.size = sizeof(ADC_PARS_E440);
if(!pE440->GET_CUR_ADC_PARS(&am)) { printf(" GET_CUR_ADC_PARS() --> Bad//n"); exit(1); }
else printf(" GET_CUR_ADC_PARS() --> OK//n");

am.ChannelsQuantity = 8;
for(WORD i=0; i < am.ChannelsQuantity; i++) am.ControlTable[i] = (WORD)(i | (0x1 << 6));
am.AdcRate = 400.0;       // в кГц
am.InterKadrDelay = 0.0;  // в мс
am.InputMode = 0x0;
am.SynchroAdType = true;
am.SynchroAdMode = false;
am.SynchroAdChannel = (WORD)(0x0 | (0x1 << 6));
am.SynchroAdPorog = (SHORT)1000;
if(!pE440->FILL_ADC_PARS(&am)) { printf(" FILL_ADC_PARS() --> Bad//n"); exit(1); }
else printf(" FILL_ADC_PARS() --> OK//n");

// теперь отобразим параметры работы
// АЦП на экране дисплея
printf("//n ChannelsQuantity = %2d//n", am.ChannelsQuantity);
printf(" AdcRate = %8.3f kGH//n", am.AdcRate);
    printf(" InterKadrDelay = %8.4f ms//n", am.InterKadrDelay);
printf(" ChannelRate = %8.3f ms//n", am.ChannelRate);

// получим кадр отсчетов
char Buffer[128];     // массив для ошибки
SHORT DmBuffer[128];  // размер с запасом
if(!pE440->ADC_KADR(DmBuffer)) { printf(" ADC_KADR() --> Bad//n");    pE440->GetLastErrorString(Buffer, 128); exit(1); }
else printf(" ADC_KADR() --> OK//n");

.....

P.S. Желаю успехов (хотя для этого, как правило, приходится много чего самозабвенно исследовать и тратить на это много времени wink)))) )

Олег
12.02.2003 13:40:07
#5

Гость

Re: Нужен пример использования ф-ции покадрового ввода

Сергей, большое спасибо за ответ. Приношу изсинения за предыдущий резкий пост. У меня  действительно нет времени экпериментировать с E440, хотя это и было бы для меня занимательно. Просто я вынужден отрабатывать долги с предыдущего места работы - мне нужно сдать систему обработки медицинских сигналов, и их регистрация с помощью E440 - это только малая часть. На новом месте я занимаюсь совершенно другими вещами, и времени катастрофически не хватает на все интересные занятия.
Поэтому прошу списать мою невежливость на стресс и проч. и проч. - ничего личного, ОК?

12.02.2003 15:20:10
#6

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

Re: Нужен пример использования ф-ции покадрового ввода

smile))

Контакты

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

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

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

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