Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
Тема закрыта
|
||||
|
|
Вопросы по LTR11Вопросы по работе с АЦП LTR11. 1) Для чтения данных из буфера АЦП используется функция LTR_Recv(), одним из передаваемых параметров которой является timeout. Согласно ltrapi.pdf: "timeout – интервал времени в миллисекундах, в течение которого следует ожидать приема запрошенного количества двойных слов. Если в течение указанного интервала времени данные от модуля получены не будут, то произойдет выход из функции". Просьба пояснить словосочетание "следует ожидать", т.к. не очень понятно время выполнения данной функции, т.е. произойдёт ли выход из функции (не дожидаясь окончания временного отрезка, равного timeout), если принято запрашиваемое кол-во слов. 2) Так же было бы интересно узнать о логике формировния этого timeout, например, в примере из ltr11api, он определяется как: const DWORD acq_time_out = (DWORD)(ACQ_BLOCK_SIZE / (hltr11.ChRate * hltr11.LChQnt) +
Из указанного понятно, что (ACQ_BLOCK_SIZE / (hltr11.ChRate * hltr11.LChQnt) - это время "формирования" необходимого количества кадров из hltr11.LChQnt слов, но зачем здесь добавлена целая! секунда. 3) Что происходит с буфером FIFO в момент "считывания" данных из него: он опустошается, остаётся неизменным и т.п.? |
|||
|
||||
|
|
Re: Вопросы по LTR111) LTR_Recv возвращает управление как только произойдет одно из событий: придет запрашиваемое количество данных или истечет заданный таймаут. Т.е. выход произойдет. 2) Таймаут должен превышать время сбора заданного количества кадров + время на передачу этих слов от модуля через драйвер в буфер LTR сервера и из сервера в Вашу программу. Вторую часть времени оценить довольно сложно, Windows в общем не ОС реального времени, и это время может меняться от загруженности ОС и т.д. Естественно, секунда – время намеренно завышено (если Вы работаете по USB), но как следует из пункта 1, это не страшно, так как выход по таймауту должен сработать только в нештатной ситуации, поэтому я бы не стал его ставить меньше. 3) С каким именно буфером FIFO? Если имеется ввиду буфер LTR-Server – то при выполнении LTR_Recv из него будет считано заданное количество слов (то есть полученные данные как бы будут удалены из него), и соответственно следующий LTR_Recv уже считает следующую порцию данных из FIFO-буфера LTR-Server’а. При этом считываются всегда первые отсчеты, то есть самые ранние. Естественно, если вы считываете N слов, а в буфере иx M (M>=N), то M-N слов в нем останется и будет считано при следующем чтении (плюс в конец буфера будут постоянно складываться новые данные, пришедшие от LTR11) |
|||
|
||||
|
|
Re: Вопросы по LTR11Спасибо за исчерпывающий ответ. |
|||
Страницы 1
Тема закрыта
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4
Многоканальный телефон:+7 (495) 785-95-25
Письма и запросы: lcard@lcard.ru
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск