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


проблемы с непрерывной регистрацией данных L761

Вы не вошли.

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

Юрий
19.11.2003 15:53:03
#1

Гость

проблемы с непрерывной регистрацией данных L761

После приобретения платы L761 и ознакомления с документацией не совсем ясно как вообще можно непрерывный сбор данных организовать . Я так понял,что есть только возможность получать через ссылку значение переменной  синхронизации Sync(в терминах LCard-овских Vxd API) и непрерывно опрашивая ее
в цикле ???!!!! получать информацию о получении новых данных в кольцевой буфер.Это конкретно загрузит поток в котором будет такой цикл!
Тем не менее, может ли кто-нибудь конкретно описать что означает переменная Sync ( она в частности фигурирует в вызове функции DWORD SetParameters ( LPVOID dev, LPVOID adPar, DWORD *UsedSize, LPVOID Data, LPVOID Sync )
Как она связана с параметрами
   WORD FIFO;
   WORD IrqStep;
   WORD Pages;
структуры _ADC_PARAM_. Каковы ограничения на значения  FIFO,IrqStep,WORD в смысле допустимых
минимальных и максимальных значений.
Вопрос к тем кто кто осуществляет техническое  сопровождение : Почему этого нет в описании?
Объяснения типа :" Интуитивно-понятный интерфейс" "В принципе из исходников LBIOS совсем нетрудно понять почему наименьшее значение IrqStep равно 128..."(Цитаты из LCard) меня совершенно не устраивают. Я вчера угробил целый день на дурацкие статистические исследования реакций  L761 на различные значения вышеуказанных параметров. Но вразумительной картины не сложилось...
P.S. Я обращаюсь к LCard-у!
Я начал работать с вашими платами в 1992..1993 году. Это была плата L152. Она и до сих пор работает.Потом были L153,L154,L205. Они все тоже до сих пор работают.  С написанием программ для них и с самими платами не было совершенно никаких проблем. С моей подачи ( и для меня совершенно бескорыстно)в разное время было продано не менее полусотни ваших плат. 
Что же случилось с LCard-ом???? Обидно, Да !!!!
!!!   

 

20.11.2003 10:15:59
#2

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

Re: проблемы с непрерывной регистрацией данных L761

Sync увеличивается на IrqStep всякий раз когда плата генерит прерывание и забираются данные в размере IrqStep слов. FIFO ограничен 128 снизу и сверху ограничен некой величиной отведенной в DSP на буфер данных(зависит от типа проца см книжку).
IrqStep ничем в общем то не ограничен - просто в простом случае они равны. Буфер в ПК тоже ничем не ограничен кроме как системой (скока она даст выделить столько и будет).

Юрий
21.11.2003 11:32:10
#3

Гость

Re: проблемы с непрерывной регистрацией данных L761

Спасибо Poul!
Письмо прочитал сегодня, когда вчера здорово попарившись,написал таки  тестовую программу на Delphi6. Программа непрерывно собирает данные и удовлетворительно, непрерывно рисует их на экране(в виде бегущего сигнала а не поэкранно).
Испытывал с диапазоном частоты дискретизации от 200 Гц до 10 кГц.Думаю что можно и гораздо больше, но не проверял.  Искажений сигнала и разрывов нет.Проверял! Пример простой и если кому-то интересно могу опубликовать на форуме.
Грустно что у Вас нет примеров работы именно в непрерывном режиме. Режим осциллоскопа не нужен
99 проц. пользователей. Нужно документировать все данные без пропусков а не медитировать глядя на них.
 
Создается впечатление что противный IrqStep не д.б. меньше 128 и вообще говоря его лучше таким и оставить.
Конкретные вопросы :
1: Сложилось мнение что число каналов (Channels) для корректной работы д.б. кратно 1,2,4,8 и т.д. иначе будет полохо. Это так?
2: Интервал дискретизации АЦП( в терминах LCARD -
"период опроса фиксированного номера канала")
определяется только параметром Kadr или
в него также входит и Rate( я имею в виду, что интервал дискретизации вычисляется по формуле
Kadr+(Channels-1)*Rate в соотв. масштабах времени)?
У меня интервал дискретизации получается с некоторой ошибкой( небольшой ). Метрологические характеристики  временных параметров не опубликованы. Сообщите их пожалуйста. 

3.Есть очень много других странностей совершенно никак не отраженных в документации.Почему я( в смысле пользователь) должен исследовать их проводя за этим многие часы. Хотел бы я посмотреть на всех вас как бы вы парились с ADSP имея такую же документацию.

Цитирую из VxD API Help :"IrqStep - шаг генерации прерываний". И все....
Из названия и так ясно что это не *** ******** и не число сотрудников фирмы LCARD.   

При циклическом опросе данных параметр Sync меняется от нуля до числа равного размеру отведенного буфера( например 400H а не 3FFH
как должно быть )то есть на 1 больше.
При этом Data^(этого Sync) указывает в никуда !!!
Если этот Sync игнорировать то разрыва данных нет. Проверял! Это безобразие.
   Мне вы уже не поможете,сам разобрался, но зачем же других мучать?

21.11.2003 13:20:54
#4

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

Re: проблемы с непрерывной регистрацией данных L761

Именно в непрерывном есть на С.
128 вроде сейчас программист по DSP убирает.

1 не обязательно
2 в книге по плате все написано и нарисовано
Sync меняется вроде как 0 200 400 200 400 - вроде так если мне не изменяет память.
Sync это не адрес!!! Это просто счетчик введенных данных как написано.

Юрий
26.11.2003 15:21:22
#5

Гость

Re: проблемы с непрерывной регистрацией данных L761

1. Я пишу на Delphi ! Я этим не горжусь, но с этим ничего не поделать и таких как я судя по всему много.Нам примеры на C мало помогут.

Проблемма не в том что IrqStep равен 128, а в том что этого нет в документации.А так, зачем же исправлять? 128 так 128.

Конкретный вопрос: имеется ли возможность сконфигурировать сбор данных так, чтобы драйвер устанавливал какой-нибудь Event при AutoInit=1 и
так чтобы сбор данных не останавливался.
Я имею ввиду что если бы Event устанавливался бы прерыванием которое происходит по переписи IrqStep
данных в кольц.буфер ,это было бы просто здорово!
Добавляю еше раз! Инструкцию и Help читал и не один раз! Очень невнятно написано.

26.11.2003 16:34:43
#6

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

Re: проблемы с непрерывной регистрацией данных L761

Какая для программиста разница на чем пример?

Про 128 возможно и упущение, а возможно где-то мелким почерком в книге написано.Я сам от нее не в восторге, но написать вместо нее свою не могу.

Event генерить так как хочется нельзя. Если хочется снизить нагрузку то в треде ожидания напишите Sleep. Ну и соответственно можете попробовать сами генерить события из этого треда - очень быстро Вы поймете что при этом невозможно собирать даннын на сколь-нибудь большой скорости.

Victoria
27.11.2003 08:58:00
#7

Гость

Re: проблемы с непрерывной регистрацией данных L761

Подскажите, а на Delphi что использовать в качестве Sleep(0)??

27.11.2003 11:32:32
#8

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

Re: проблемы с непрерывной регистрацией данных L761

Его и использовать - это Win32 функция.

Юрий
28.11.2003 11:00:57
#9

Гость

Re: проблемы с непрерывной регистрацией данных L761

Victoria!
На мой взгляд лучше использовать не Sleep:
Windows API-шный Sleep гарантирует, что поток, его вызвавший заснет на промежуток не короче того что указано в параметре функции Sleep.А вот насколько этот промежуток будет длинее, реально не знает никто, ни планировщик задач Windows ни фирма Lcard.
Наверное лучше просто опрашивать Sync каким нибудь вашим таймером( системным или лучше мультимедийным).Если есть интерес могу выслать Мail-ом пример программы безвозмездно

Юрий.

Victoria
28.11.2003 11:53:47
#10

Гость

Re: проблемы с непрерывной регистрацией данных L761

Юрий! Интерес есть! Буду рада исходнику.
По поводу Sleep(0) - у меня было ошибочное представление, что она работает как аналогичная в OS-9.