Qt IOs магнитное поле
Всем привет!
Пытаюсь получить данные магнитного поля, используя класс QMagnetometer.
Все получается, если задать параметр returnGeoValues false (как по-умолчанию). При этом выдаются raw-данные, а мне нужны обработанные данные. Если я задаю параметр returnGeoValues равным true, то значения магнитного поля x, y, z выдаются равными 0. При этом reading->calibrationLevel() тоже выдает 0, но при первых двух-трех выводах выводит 1.
Прикладываю код своего класса по работе с магнитными полями.
Подскажите, пожалуйста, что не так делаю?
Разрабатываю под IOs, версия Qt 5.15.
Спасибо!
#ifndef MAGNETO_H #define MAGNETO_H #include <QObject> #include <QMagnetometer> #include <QMagnetometerFilter> #include <QMagnetometerReading> #include "math.h" #include <QDebug> class Magneto : public QObject, public QMagnetometerFilter { Q_OBJECT public: explicit Magneto(QObject *parent = nullptr); ~Magneto(); bool filter(QMagnetometerReading *reading); void start(); void stop(); bool isMagnetoStarted(); private slots: void onSensorError(const int &errorCode); signals: void dataReceived(const qreal &x, const qreal &y, const qreal &z); private: QMagnetometer *m_magnetometer; qreal m_x; qreal m_y; qreal m_z; bool m_isStarted; }; #endif // MAGNETO_H
#include "magneto.h" Magneto::Magneto(QObject *parent) : QObject(parent) { m_magnetometer = new QMagnetometer(this); m_magnetometer->addFilter(this); m_magnetometer->setReturnGeoValues(true); connect(m_magnetometer, SIGNAL(sensorError(int)), this, SLOT(onSensorError(int))); m_isStarted = false; } Magneto::~Magneto() { m_magnetometer->deleteLater(); } bool Magneto::filter(QMagnetometerReading *reading) { qDebug() << reading->calibrationLevel() << reading->x() << reading->y() << reading->z(); emit dataReceived(reading->x() * pow(10, 6), reading->y() * pow(10, 6), reading->z() * pow(10, 6)); } void Magneto::onSensorError(const int &errorCode) { qDebug() << errorCode; } void Magneto::start() { m_isStarted = true; m_magnetometer->start(); } void Magneto::stop() { m_isStarted = false; m_magnetometer->stop(); } bool Magneto::isMagnetoStarted() { return m_isStarted; }
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.Do you like it? Share on social networks!
- Akiv Doros
- Nov. 11, 2024, 2:58 p.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:50points,
- Rating points-4
- molni99
- Oct. 26, 2024, 1:37 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:80points,
- Rating points4
- molni99
- Oct. 26, 2024, 1:29 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:20points,
- Rating points-10
Проблему удалось решить путем переписания этой части на Objective C и интегрируя ее в Qt.