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 хостинг.Вам це подобається? Поділіться в соціальних мережах!
- Akiv Doros
- 11 листопада 2024 р. 14:58
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:50бали,
- Рейтинг балів-4
- molni99
- 26 жовтня 2024 р. 01:37
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80бали,
- Рейтинг балів4
- molni99
- 26 жовтня 2024 р. 01:29
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:20бали,
- Рейтинг балів-10
Проблему удалось решить путем переписания этой части на Objective C и интегрируя ее в Qt.