Форум: Техническая поддержка

Тема: Как задается TimeOut?

Вы не вошли.

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

dinick
21.05.2003 17:18:46
#1

Гость

Как задается TimeOut?

Здравствуйте!
Что означает строчка
TimeOut = 8*DataStep/am.ChannelRate + 1000;
в функции ServiceReadThread() в файле ReadData.cpp?
Почему таймаут выбран именно таким?
Спасибо.
П.С.
Это все для Е440. Пример из папки //BC5

21.05.2003 17:46:46
#2

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,479

Re: Как задается TimeOut?

Просто таймаут в примере выбран с оч-ч-чень большим запасом smile)). В принципе можно использовать предопределённую константу INFINITE (см. хелп на WaitForSingleObject() ).

dinick
22.05.2003 08:59:35
#3

Гость

Re: Как задается TimeOut?

Сергей, про ИНФИНИТ я знаю.)
Я понять немогу откуда взялась восьмерка и почему датастеп делят на частоту канала а не на частоту АЦП? Поясните ход мысли? Ведь таймаут должен быть немного больше чем время необходимое для преобразовния АЦП датастеп отсчетов + передачи их по ю-с-би, так?

dinick
22.05.2003 17:18:33
#4

Гость

Re: Как задается TimeOut?

""Ответьте ж, милый глаф, я плав или не плав?""(с) :-)

22.05.2003 17:24:47
#5

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,479

Re: Как задается TimeOut?

Я же говорю, что таймаут выбран с оч-ч-чень большим запасом (можно сказать от балды). В данном конкретном случае это не существенно. А в принципе при выборе величины таймаута следует учитывать не только кол-во собираемых данных и частотные параметры сбора, но и размер FIFO буфера в DSP модуля (FIFO_Lenght). Собранные данные из модуля в РС передаются ТОЛЬКО пачками по FIFO_Lenght/2 отсчётов. Т.е. пока текущая половика FIFO буфера полностью не заполнится новыми данными, их передача в РС не происходит. Например, пусть у Вас FIFO_Lenght = 12288 (по умолчанию). Частота работы АЦП - Tацп. Вы заказываете сбор DataStep = 6400 отсчётов. Тогда выбор таймаута равным DataStep*Tацп будет неверным. Т.к. после передачи первой пачки данных размером FIFO_Lenght/2 = 6144 отсчётов, нам остаётся получить из модуля всего (DataStep - FIFO_Lenght/2)= 256 отсчётов. Но передача в РС этих данных не начнётся пока полностью не заполнится данными вторая половинка FIFO буфера. Поэтому в данном примере более правильным будет выбор величины таймаута равным FIFO_Lenght*Tацп + (время передачи данных по USB).
Также можно посмотреть http://www.lcard.ru/forumthreads/875.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25
Факс: +7 (495) 785-95-14

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск