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


Работа E330 в режиме внутренней памяти...

Вы не вошли.

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

Andrey Kazak
17.03.2007 20:56:45
#1

Гость

Работа E330 в режиме внутренней памяти...

Здравствуйте!

Имеется E330, последняя версия BIOS. Пишется программа для регистрации высокочастотных сигналов (>100 кГц) для модуля E330 на Delphi с использованием библиотеки "lcard_32":

// Задаем параметры регистрации
SET_SOFT_PARM_E330(NCh, ch);
SET_TIME_PARAMETERS_E330(Rate);

SOFT_MEMORY_PREPARE_E330(NFrame*Nch, 0, 0, 0);
SOFT_MEMORY_START_E330;

//Когда пользователь нажимает кнопку на форме выполняются следующие действия

  if not(First_Time_Rec) then
    SOFT_MEMORY_RESTART;

  while TEST_FOR_INPUT_END()<>1 do
    Sleep(1);

  GET_INPUT_DATA(Data, NFrame*NCh);

  for i := 0 to MaxNumberOfPoints-1 do
    Data[i]:=0;

  SOFT_MEMORY_RESTART;
  // !!!

  while TEST_FOR_INPUT_END()<>1 do
    Sleep(1);

  GET_INPUT_DATA(Data, NFrame*NCh);

  Windows.Beep(1000,100);

  if First_Time_Rec=True then
    First_Time_Rec:=False;

Этот код работает отлично, хотя он был получен опытным путем.

Однако, следующий код:

  if not(First_Time_Rec) then
    SOFT_MEMORY_RESTART;

  while TEST_FOR_INPUT_END()<>1 do
    Sleep(1);

  GET_INPUT_DATA(Data, NFrame*NCh);

  Windows.Beep(1000,100);

  if First_Time_Rec=True then
    First_Time_Rec:=False;

работает неправильно, так как в этом случае пользователю приходиться 2 раза нажимать на кнопку для обновления сигнала. Пример работы данного кода:
1) подаем первый сигнал на вход АЦП,
2) нажимаем кнопку и получаем массив данных, соответствующих первому сигналу
3) изменяем первый сигнал на второй
4) нажимаем кнопку и СНОВА получаем массив данных, соответствующих первому сигналу
5) ещё раз нажимаем кнопку и получаем массив данных, соответствующих второму сигналу

Почему так происходит?
Можно ли как-нибудь с первого раза получать своевременные данные?

19.03.2007 14:37:10
#2

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

Re: Работа E330 в режиме внутренней памяти...

после старта там уже данные есть. надо их забрать и дать рестарт.... или старт дать с параметром автоматического рестарта... а так старт дали, а данные не забрали...

Andrey Kazak
19.03.2007 19:44:01
#3

Гость

Re: Работа E330 в режиме внутренней памяти...

То есть после старта нужно 1 раз забрать данные, а после этого дать команду рестарта! Я так и делал, но в этом случае из памяти модуля опять забираются данные, соответствующие старому сигналу. Приходиться   забирать данные 2 раза, а сохранять только последнюю порцию (см. код выше)...

Это нормальная работа или как?

20.03.2007 12:38:31
#4

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

Re: Работа E330 в режиме внутренней памяти...

что значит старому? после старта идет сбор и потом он прекращается.после рестарта новый сбор...

Andrey Kazak
20.03.2007 13:00:11
#5

Гость

Re: Работа E330 в режиме внутренней памяти...

Смотрите:

1) подаем сигнал № 1 на вход АЦП и выполняем следующие команды

// Задаем параметры регистрации
SET_SOFT_PARM_E330(NCh, ch);
SET_TIME_PARAMETERS_E330(Rate);

SOFT_MEMORY_PREPARE_E330(NFrame*Nch, 0, 0, 0);
SOFT_MEMORY_START_E330;

//Когда пользователь нажимает кнопку на форме выполняются следующие действия

for i := 0 to MaxNumberOfPoints-1 do
  Data[i]:=0;

if not(First_Time_Rec) then
SOFT_MEMORY_RESTART;

while TEST_FOR_INPUT_END()<>1 do
Sleep(1);

GET_INPUT_DATA(Data, NFrame*NCh);

if First_Time_Rec=True
  then
    First_Time_Rec:=False;

После выполнения этих команд массив Data будет содержать данные, соответствующие сигналу № 1. До сюда все идет нормально.
Теперь меняем сигнал № 1 на входе АЦП на сигнал № 2 и нажимаем кнопку на форме.
При просмотре массива Data выясняется, что он все ещё содержит данные, соответствующие сигналу № 1, а не сигналу № 2 как это ожидалось...

После второго нажатия на кнопку (т. е. после второго рестарта) в массиве Data появляются данные сигнала № 2...

21.03.2007 10:46:02
#6

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

Re: Работа E330 в режиме внутренней памяти...

вобщем работает если и хорошо  -библиотека старая также как и плата....возможны странности...

Andrey Kazak
21.03.2007 19:58:58
#7

Гость

Re: Работа E330 в режиме внутренней памяти...

Спасибо за ответ!
smile