Составители:
Рубрика:
120
Более эффективен опрос датчика по прерываниям или иным
способам нотификации. В этом случае датчик при готовности
новых данных генерирует прерывание, и его обработчик забирает
данные. Механизм слотов и сигналов Qt идеально подходит для
этой ситуации.
Для того, чтобы получить оповещение о готовности данных
датчика, достаточно связать сигнал датчика readingChanged() с
каким-либо обработчиком и активировать получение данных
методом start(). Важно понимать, что и создание объекта QSensor, и
начало приема данных совсем необязательно как-то повлияют на
физический датчик или его ядерный драйвер. Например, датчик
ориентации в MeeGo постоянно включен и поставляет данные
приложениям на основе MeeGoTouch. Когда мы запускаем наше
тестовое приложение и выполняем вышеописанные действия, мы
просто добавляем еще одного слушателя к уже работающему
датчику.
Есть датчики, которые работают с высокой частотой, и даже
механизм слотов и сигналов оказывается для них слишком
тяжелым. Для решения этой проблемы применяются фильтры,
создаваемые программистом, которые решают, достаточно ли
полученные данные важны, чтобы оповещать о них слушателей. В
нашем примере фильтры не используются.
В слоте readSensor(), который был связан с сигналом датчика
readingChanged(), мы получаем свежее значение датчика
ориентации. Для наглядности оно будет использоваться для
вращения одного из двух больших смайлов на переднем плане
приложения – красный смайл будет ориентироваться с помощью
стандартных средств, синий смайл будет ориентироваться вручную
по данным датчика.
Поскольку приложение написано с использованием библиотеки
MeeGoTouch, его GUI имеет встроенную поддержку датчика
ориентации, т. е. поворачивается вслед за поворотами планшета.
Пока не нажата кнопка «Find sensors», оба смайла поворачиваются
одинаково. После нажатия кнопки и активации датчика ориентации
красный смайл продолжает вращаться, а синий становится
Страницы
- « первая
- ‹ предыдущая
- …
- 118
- 119
- 120
- 121
- 122
- …
- следующая ›
- последняя »
