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


ltr34 вопрос про изменение амп. в реальном времени

Вы не вошли.

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

Дмитрий
17.03.2010 12:22:37
#1

Гость

ltr34 вопрос про изменение амп. в реальном времени

Как можно реализовать изменение амплитуды в реальном времени?
Все должно выглядеть как режим автогенерации, но чтобы пользователь мог изменить амплитуду в реальном времени и без существенной задержки.

При реализации через режим автогенерации, получается  существенная задержка, так как просчитываются новые значения массива, потом автогенерации останавливается, загружаются новый массив и автогенерации стартует заново.

Может быть при реализации с подкачкой данных задержка будет меньше.
Возможно ли это реализовать?

Дмитрий
17.03.2010 12:43:29
#2

Гость

Re: ltr34 вопрос про изменение амп. в реальном времени

И еще вот такой вопрос. Как сделать автоматическую остановку генерации в режиме потоковой генерации.
Т.е. если в программе есть две кнопки "Старт" и "Стоп" к примеру, то все работается отлично. Пользователь нажал "Старт" импульс отобразился на осциллографе, потом пользователь нажимает "Стоп" и может задавать новые значения.
Кнопка "Стоп" получается лишней, если известно время импульса. Как сделать остановку генерации автоматической, без нажатия на кнопку? Использовании функции Sleep(Время импульса) в VC++ дает не правильные результаты. Может есть какой-нибудь таймер, который после известного времени импульса вызывал бы функцию остановки генерации. Надеюсь вопрос понятен.

Тоже самое и с режимом автогенерации. Допустим нам надо, чтобы она продолжалась 10 секунд, как реализовать, остановку генерации через 10 секунд без привлечения рук пользователя, который должен нажимать на кнопку "Стоп".

Арсений
17.03.2010 13:49:17
#3

Гость

Re: ltr34 вопрос про изменение амп. в реальном времени

Задержку изменения сигнала можно свести к 0,25-0,5 с, меньше трудно - Windows не даст гарантий.

1) Переведите LTR34 в потоковый режим работы, настройте его на подтверждение каждого слова. Установите частоту и другие параметры вывода как вам нужно.
2) После настройки модуля запускаете два потока
- В первом потоке формируете "два Массива" с данными длинной от 0,25сек и выше, отправляете их в Модуль, Запускаете LTR34 START. Готовите "третий Массив", ждёте Флага от Второго потока...
- После запуска генерации LTR34 второй поток принимает "первый Массив" от LTR 34 (Данные принятые от LTR34 100% уже выведены платой) После принятия "Первого Массива" поток устанавливает Флаг для Первого потока.... и Ожидает приём "Второго Массива"
- Первый поток принимает от Второго Флаг и отправляет 3-й Массив в Модуль LTR34, Сбрасывает Флаг, и ждёт его установки чтобы передать 4-й Массив
- Второй поток принимает "Второй Массив" и Устанавливает флаг....

Таким образом получается следить за выводом из LTR34, задержка вывода около 0,25 сек (длинна одного массива по времени).

Чтобы остановить вывод правильно, на чётко определённом отчёте, вам нужно прекратить выдачу данных  в модуль LTR34(т.е. суммарное количество данных должно быть строго определено).
Но не вызвать команду Stop после выдачи последнего отчёта, а дождаться приёма последнего Массива и последнего отчёта в нём вторым потоком, и только после этого вызвать команду Stop.