×
Namespaces

Variants
Actions
(Difference between revisions)

How to use QCompass sensor

From Nokia Developer Wiki
Jump to: navigation, search
hamishwillee (Talk | contribs)
hamishwillee (Talk | contribs)
m (Hamishwillee - Tidy wiki text)
Line 1: Line 1:
[[Category:Qt]][[Category:Qt Mobility]][[Category:Code Examples]]
+
[[Category:Qt Mobility]][[Category:Code Examples]][[Category:MeeGo]][[Category:Symbian]][[Category:QWidget UI]]
{{Abstract|This code snippet shows how to use QCompass Sensor using Qt Mobility Project and display sensor data on the screen}}
+
{{Abstract|This code snippet shows how to use Qt's [http://doc.qt.nokia.com/qtmobility-1.1.0/qcompass.html QCompass] sensor and display sensor data on the screen.}}  
  
 
{{ArticleMetaData <!-- v1.2 -->
 
{{ArticleMetaData <!-- v1.2 -->
Line 24: Line 24:
 
|author= [[User:Chintandave er]]
 
|author= [[User:Chintandave er]]
 
}}
 
}}
 
== Overview ==
 
 
{{Abstract|This code snippet shows how to use [http://doc.qt.nokia.com/qtmobility-1.1.0/qcompass.html QCompass] Sensor using [http://developer.qt.nokia.com/wiki/Category:Qt_Labs_Projects Qt Mobility Project] and display sensor data on the screen.}} This Example use [http://doc.qt.nokia.com/qtmobility-1.1.0/sensors-api.html Sensor API] of  [http://doc.qt.nokia.com/qtmobility-1.1.0/index.html Qt Mobilty].
 
 
==Preconditions==
 
 
Read this for how to [[CS001615 - Setting up Qt Mobility]]
 
  
 
==Project File (.pro file)==
 
==Project File (.pro file)==
Line 117: Line 109:
 
     QTimer inactiveTimer;
 
     QTimer inactiveTimer;
 
};
 
};
 
 
 
</code>
 
</code>
  
Line 210: Line 200:
 
==Related Articles==
 
==Related Articles==
  
[[Turning phone into magnetic compass using Qt mobility project]]
+
* [[Turning phone into magnetic compass using Qt mobility project]]
 
+
* [[Accelerometer Sensor Example Using QtMobility Project]]
[[Accelerometer Sensor Example Using QtMobility Project]]
+
* [[QtMagnetometer Sensor Example Using QtMobility Project]]
 
+
* [http://doc.qt.nokia.com/qtmobility-1.2/ Qt Mobility 1.2]
[[QtMagnetometer Sensor Example Using QtMobility Project]]
+
 
+
[http://doc.qt.nokia.com/qtmobility-1.2/ Qt Mobility 1.2]
+
 
+
- [[User:Chintandave er|Chintandave er]] 05:33, 9 December 2010 (UTC)[[Category:MeeGo]] [[Category:Symbian]]
+

Revision as of 09:03, 17 February 2012

This code snippet shows how to use Qt's QCompass sensor and display sensor data on the screen.

Article Metadata
Code ExampleTested with
Devices(s): N8,C7,E7
Compatibility
Platform(s): Symbian
Symbian
Article
Keywords: QCompass,Qt Mobility ,Sensor API
Created: chintandave_er (29 Nov 2010)
Last edited: hamishwillee (17 Feb 2012)

Contents

Project File (.pro file)

  • Add the Qt Mobility project configuration option in the .Pro file as shown below
CONFIG += mobility
MOBILITY += sensors
  • here is the full project(.pro) file.
QT       += core gui
 
TARGET = QtCompasSensor
TEMPLATE = app
 
 
SOURCES += main.cpp\
qtcompassensor.cpp
 
HEADERS += qtcompassensor.h
 
CONFIG += mobility
CONFIG += debug
MOBILITY = sensors
 
symbian {
TARGET.UID3 = 0xe00fb3c0
# TARGET.CAPABILITY +=
TARGET.EPOCSTACKSIZE = 0x14000
TARGET.EPOCHEAPSIZE = 0x020000 0x800000
}


Header

  • Add the Qt Mobility namespace to use Qt Mobiltiy in header file
QTM_USE_NAMESPACE

Here is the qtcompassensor.h header file.

#include <QtGui/QMainWindow>
#include <QGraphicsView>
#include <QBasicTimer>
#include <QTimer>
#include <QCompass> // Add Sensor Class
 
// add Qt Mobility Project Namespace
QTM_USE_NAMESPACE
 
class QGraphicsRectItem;
class QGraphicsSimpleTextItem;
 
class QtCompasSensor : public QGraphicsView
{
Q_OBJECT
 
public:
QtCompasSensor(QWidget *parent = 0);
 
protected:
bool event(QEvent *event);
 
private:
void updateCompasSensor();
 
private:
QGraphicsRectItem *Rect;
QGraphicsSimpleTextItem *text;
QCompass *CompasSensor;
QBasicTimer Timer;
QTimer inactiveTimer;
};


Source

Here is the qtcompassensor.cpp source file.

#include "qtcompassensor.h"
#include <QGraphicsRectItem>
#include <QGraphicsSimpleTextItem>
#include <QResizeEvent>
 
// include timer event
#include <QTimerEvent>
#include <QDebug>
 
QtCompasSensor::QtCompasSensor(QWidget *parent)
: QGraphicsView(parent), Rect(0), text(0), CompasSensor(0)
{
QGraphicsScene *scene = new QGraphicsScene(this);
setScene(scene);
 
Rect = new QGraphicsRectItem();
 
text = new QGraphicsSimpleTextItem(Rect);
text->setBrush(Qt::gray);
scene->addItem(Rect);
 
CompasSensor = new QCompass(this);
inactiveTimer.setSingleShot(true);
 
if (!Timer.isActive())
Timer.start(20, this);
 
// start the sensor
if (!CompasSensor->isActive())
CompasSensor->start();
 
if (!CompasSensor->isActive())
{
qDebug() << "Compas Sensor didn't start!" << endl;
}
 
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
}
 
bool QtCompasSensor::event(QEvent *event)
{
switch (event->type()) {
case QEvent::Timer:
if (static_cast<QTimerEvent*>(event)->timerId() == Timer.timerId())
updateCompasSensor(); // update the sensor data
break;
default:
break;
}
return QGraphicsView::event(event);
}
 
void QtCompasSensor::updateCompasSensor()
{
QCompassReading *reading = CompasSensor->reading();
qreal azi = 0.0f;
qreal calibrationLevel = 0.0f;
if (reading) {
azi = reading->azimuth();
calibrationLevel = reading->calibrationLevel();
 
// set the text and display it on the screen
QLocale c(QLocale::C);
text->setText("azimuth: " + c.toString(azi) + "\n\nCompass Sensor Calibration Level: " + c.toString(calibrationLevel));
 
}
}

Postconditions

Here is the QtCompassSensor Application's Screenshot. You can change the Compass Sensor data like azimuth and Calibration Level from Qt Simulator.

QtCompassSimulator.png QtCompassExample.png

Example Application

Example application can be found on the following link File:QtCompassSensorExample.zip.

Related Articles

143 page views in the last 30 days.
×