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 хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Пожалуйста, авторизуйтесь или зарегистрируйтесь
- Unknown akadamn
- 24 января 2025 г. 17:14
Qt - Тест 001. Сигналы и слоты
- Результат:84баллов,
- Очки рейтинга4
- Unknown akadamn
- 24 января 2025 г. 16:22
Qt - Тест 001. Сигналы и слоты
- Результат:42баллов,
- Очки рейтинга-8


Проблему удалось решить путем переписания этой части на Objective C и интегрируя ее в Qt.