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


lcomp и многопотоковость

Вы не вошли.

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

Денис
16.04.2006 12:39:07
#1

Гость

lcomp и многопотоковость

День добрый. Плата L783, lcomp последний.
С платой работаю достаточно давно. Особых проблем не возникало. Теперь возник вопрос: В прилагаемых примерах сбор организован в отдельном потоке, но там просто демократично считываются переменные Sync и Data, обновляемые драйвером, что конечно ваши программисты реализовали как надо. Теперь вопрос: как отработает драйвер, если в разных потоках одновременно вызовутся 2 функции библиотеки? Ну например в одном потоке вызвалась StartLDevice или FillDAQParameters, а в другом в этот же момент IOAsync ну или еще что. При этом конечно я подразумеваю, что не применяются никакие средства защиты критического кода аля семафоры и мьютексы.

17.04.2006 12:05:51
#2

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

Re: lcomp и многопотоковость

именно сбор данных и одновременное IOAsync должно работатьнормально. множество IOAsync не обязанно...

Денис
18.04.2006 20:35:05
#3

Гость

Re: lcomp и многопотоковость

Спасибо за ответ, но распишу-ка я лучше все свои вопросы подробнее.

1)Пока, абстрагируясь от одновременной работы. Вывод на TTL возможен только с помощью ASYNC_IO или как-то можно приспособить SetParametersStream, указав StreamId например L_STREAM_TTL_OUT? Прямого указание на это нет, однако в примечании на стр. 21 руководства сказано "Поток может быть с АЦП, на ЦАП, на цифровые линии, с цифровых линий"

2)Если использовать IO_ASYNC для вывода последовательности, то регуляция задержек между сменами сигналов произвидится в виде:
while(очередная задержка)
{
{выставить Data)
IO_ASYNC
}?

3)Чтобы зафиксировать изменение на цифровых входах придется в цикле опрашивать IO_ASYNC? Вопрос про SetParametersStream все еще актуален.

4)Возможно ли завести отдельно ADC, отдельно DAC, их вместе, регулируя состояния AdcEna в ADC_PAR и DacEna в DAC_PAR (AdcEna=1, DacEna=0 / AdcEna=0, DacEna=1 / AdcEna=1, DacEna=1). Вопрос назрел, потому что где-то на форуме проскальзывало, что ЦАП работает только с инициализированным АЦП ибо ЦАП - все-го лишь дополнение. В примере l780.osc я видел работающие вместе АЦП и ЦАП, но там l780 - может у l783 по другому... Если для работы ЦАП нужно инициализировать АЦП, то что изменится, если указать AdcEna=0?

5)AutoInit для ЦАП. Как я понял из инструкции значения не имеет - там все время циклически выводится. Тогда вопрос: циклически откуда из ФИФО буфера платы или из буфера в ОЗУ? Т.к. для ЦАП нет прерывания, то как тогда будет происходить подкачка данных из буфера ОЗУ в буфер ФИФО? Или в буфер в ОЗУ нужно заливать данных не больше, чем физический ФИФО-буфер на плате? Опять же, где-то на форуме проскакивало, что после вызова StopLDevice ЦАП продолжает генерить, пока не встретит FFFF, которая к тому же не актуальна для L783. Так как же тогда прекратить вывод на ЦАП на L783?

6)AutoInit для АЦП. Тот же вопрос. Имеется ввиду буфер ФИФО или буфер в ОЗУ? Если AutoInit=0, то АЦП заполнит буфер под завязку и остановится? А если он работает параллельно с ЦАПом, то ЦАП продолжит работать?

7)Если параллельно работают АЦП и ЦАП (ЦАП автономно, выводя циклически заданную последовательность)и буфер АЦП обновляется в одном потоке, возможно ли во втором потоке через IO_ASYNC в цикле опрашивать TTL-входы, а в третьем тем же IO_Async в цикле по принципу указанному выше выводить комбинации из массива? Интересует возможность конфликтов при одновременном поступлении команд.

Вопросы я задал как можно подробнее, вы можете ответить кратко, но желательно на все. Заранее спасибо.

19.04.2006 11:10:55
#4

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

Re: lcomp и многопотоковость

1) только IoAsync
2)типа того только задержка будет плавать...
3)если что-то выведено то прочитаеться оно только если вход -выход соединен
4) в примере 780 на 783 заменить можно, но 780M анлогов нету, а только там есть полноценный стрим на ЦАП. ЦАП завести отдельно реально, но позже АЦП уже не завести. Только все сначала...
5) никак... у всех плат кроме 780M цап работает только из внутреннего буфера платы...
6) именно. Заполнит буфер АЦП в ОЗУ компа и встанет... ЦАП будет крутиться если его AutoInit в 1...
7) по IoAsync возможны конфликты..