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; }
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!
Пікірлер
- Ora Iro
- Жел. 24, 2024, 5:38 Т.Қ.
C++ - Тест 001. Первая программа и типы данных
- Нәтиже:40ұпай,
- Бағалау ұпайлары-8
- Akiv Doros
- Қар. 12, 2024, 1:58 Т.Ж.
C++ - Тест 004. Указатели, Массивы и Циклы
- Нәтиже:50ұпай,
- Бағалау ұпайлары-4
- molni99
- Қаз. 26, 2024, 11:37 Т.Ж.
C++ - Тест 004. Указатели, Массивы и Циклы
- Нәтиже:80ұпай,
- Бағалау ұпайлары4
Проблему удалось решить путем переписания этой части на Objective C и интегрируя ее в Qt.