реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> получение данных от драйвера, как поступить
Dubov
сообщение Jul 31 2012, 18:49
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



Есть задача реализовать приём данных от драйвера. Драйвер периодически сообщает, что данные готовы (каждые 100 сэмплов) и приложение должно их забирать.
Боюсь такого случая: драйвер скажет, что есть смплы, но приложение не отреагирует сразу и пропустит несколько пачек сэмплов. Понятно, что в драйвере можно сделать буфер побольше, чтобы данные не потерялись, но как в приложении наверстать упущенное если неуспели вовремя? какие механизмы можно применить?
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Aug 1 2012, 04:44
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Сделать двойной буфер. Один заполняется - драйвер сигнализирует приложению и переключается на другой. И так по кругу. Если приложение не успеет обработать буфер до следующего переключения, то ничего особо не сделать.
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Aug 1 2012, 19:51
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Цитата(andrewlekar @ Aug 1 2012, 08:44) *
Сделать двойной буфер. Один заполняется - драйвер сигнализирует приложению и переключается на другой. И так по кругу. Если приложение не успеет обработать буфер до следующего переключения, то ничего особо не сделать.

Я хочу написать драйвер для ADE7880 и тоже опасаюсь, что данные могут теряться, если линукс не успеет отреагировать. Думаю просто можно сделать буфер побольше в драйвере, но непонятно как в случае пропуска данных по вине простоя линукса, искать пропущенные фрагменты? Есть ли какие-либо методы для "запоминания" места последнего чтения из буфера драйвера?

Сообщение отредактировал Zelepuk - Aug 1 2012, 20:05
Go to the top of the page
 
+Quote Post
Idle
сообщение Aug 1 2012, 20:49
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



Цитата(Zelepuk @ Aug 1 2012, 23:51) *
Есть ли какие-либо методы для "запоминания" места последнего чтения из буфера драйвера?

так в методе read устройства и прибавлять к указателю прочитанное количество байт, указатель хранить в device private data, не вижу в чём здесь отличие от случая, когда данные успевают начитываться

а по теме треда, как наверстать упущенное - читать всё, что есть в буфере, пока там что-то есть
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 14:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016