Меню

+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
Тема закрыта
|
||||
|
Проблема при программировании LTR34При работе с ЦАП LTR34 (крейт LTR-EU-8) возник (неразрешимый на данный момент) вопрос: Используется потоковый режим с подтверждением "На каждое слово". В нижеуказанном коде наблюдается ошибка (код: -8) при втором и последующем обращении к функции LTR34_Recv() в цикле while: for (int i=0; i<100; i++)
res34=LTR34_Send(&cap34, ArrayToSend, size34, 1); while (!cap34.BufferEmpty)
Правильно ли осуществляется заполнение буфера при его опустошении? |
|||
|
||||
|
Re: Проблема при программировании LTR34Несколько смущает передача вторым параметром в LTR34_Recv() &data1 – data1 как объявлено?
А так, при правильной работе указанный код приведет к следующему: сперва Вы запишете некий сигнал размером size34, затем LTR34 выдаст этот сигнал на ЦАП, выдавая по подтверждению на каждое слово. Вы их все прочитаете, после чего, когда последнее подтверждение дойдет до компьютера у Вас начнется следующая итерация цикла – то есть на ЦАП между двумя сигналами с разных итераций цикла будет выводиться постоянное значение, равное последнему отсчету, в течение времени, пока последнее подтверждение дойдет до компьютера, Вы его обработаете и новый массив отсчетов дойдет до LTR34 – если это то, что Вам нужно, то такой код подойдет (только надо по-хорошему проверять результаты ProcessData и Send, ну и таймаут всего 5 млс на прием не слишком ли мал?). |
|||
|
||||
|
Re: Проблема при программировании LTR34Здравствуйте. Пишу программу многоканальной генерации сигналов (синус, радиоимпульс) в Delphi 7 для модуля ltr34. Проблема в следующем: на выходе сигнал не постоянный, а дискретизованный (состоит из отдельных пиков). К примеру синус представляет собой множество пиков с синусоидальной огибающей. Из-за чего это может происходить? LTR34.FrequencyDivisor:=60;
|
|||
|
||||
|
Re: Проблема при программировании LTR34Кирилл, поясните Вашу задачу. Какие параметры радиоимпульса хотите получить на выходе LTR34:
|
|||
|
||||
|
Re: Проблема при программировании LTR34Амплитуда 5В
|
|||
|
||||
|
Re: Проблема при программировании LTR34О корректности программного кода подскажут коллеги. Сначала по функциональным возможностям LTR34:
Кирилл, уточните, какой у Вас крейт LTR и по какому интерфейсу с ним работаете? |
|||
|
||||
|
Re: Проблема при программировании LTR34Кирилл, что Вы имеете в виду? Слова "множество пиков с синусоидальной огибающей" звучат так, как будто там короткие импульсы, между которыми нуль (..|..|..|..), что едва ли возможно.
|
|||
|
||||
|
Re: Проблема при программировании LTR34а поле LTR34.ChannelQnt вы установили в нужное значение (у Вас как я понимаю 4 канала?). и как объявлено DATA? |
|||
|
||||
|
Re: Проблема при программировании LTR34Крейт LTR-U-1. Связь по USB.
DATA объявлено следующим образом:
|
|||
|
||||
|
Re: Проблема при программировании LTR34Для примера если мы задаем синусоиду частотой 3 кГц, то на одном периоде укладывается примерно 35 таких пиков. Расстояние между их максимума составляет примерно 10 мкс. При этом частота огибающей этих пиков составляет синусоиду с частотой 3 кГц, задаваемую с помощью программы. |
|||
|
||||
|
Re: Проблема при программировании LTR34Кирилл, FrequencyDivisor:=60 соответствует трафику 500 тыс.отсчётов в секунду. А LTR-U-1 способен прокачать только 200 тыс.отсчётов в секунду - это написано в документации на LTR-U-1. |
|||
|
||||
|
Re: Проблема при программировании LTR34500 тыс.отсчётов в секунду будет работать ТОЛЬКО в режиме кольца (не в потоковом режиме). |
|||
|
||||
|
Re: Проблема при программировании LTR34У меня как раз работа в режиме кольца |
|||
|
||||
|
Re: Проблема при программировании LTR34Смена параметра FrequencyDivisor также ничего не дала. |
|||
|
||||
|
Re: Проблема при программировании LTR34Если я не ошибаюсь, то в Delphi массив с границами [0..4] - массив на 5 элементов (0,1,2,3,4). т.е. на 4 канала нужно DATA:array[0..9999,0..3]of DOUBLE; Также не до конца понятно почему размер WORD_DATA меньше размера DATA. По идее если у Вас Nch (4) каналов и Вы хотите вывести сигнал по n семплов на каждый канал, то: DATA:array[0..n-1,0..Nch-1]of DOUBLE;
....... err:=LTR34_ProcessData(@LTR34,@DATA,@WORD_DATA,n*Nch,1);
|
|||
|
||||
|
Re: Проблема при программировании LTR34Я действительно указал неправильные значения в тексте программы для массива WORD_DATA и строках вывода. Сейчас все изменил на правильные значения:
Однако теперь программа выдает ошибку при попытке компиляции: /'Invalid floating point operation/', указывая на строку err:=LTR34_ProcessData(@LTR34,@DATA,@WORD_DATA,4000,1); В чем может быть ошибка?
|
|||
|
||||
|
Re: Проблема при программировании LTR34По поводу 10000 в LTR34_Send - то это таймаут на передачу данных в модуль (в данном случае 10 с). Т.е. LTR34_Send вернет управление либо когда передаст все данные, которые запрашивались, либо когда истечет указанный таймаут (нештатная ситуация, и в этом случае LTR34_Send вернет ошибку). По поводу ошибки компиляции - это странно... Вы же вроде не меняли программу за исключением размеров массивов - не очень понятно как это могло повлиять именно на сборку... Если что - можете прислать проект мне на почту - посмотрю сегодня днем. |
|||
|
||||
|
Re: Проблема при программировании LTR34Может быть, ошибка все-таки при выполнении, а не при компиляции? Вы компилируете отдельной командой или сразу с запуском?
|
|||
|
||||
|
Re: Проблема при программировании LTR34Ответил на письмо по почте |
Страницы 1
Тема закрыта