gpt4 book ai didi

c++ - Qt 5.3 无法使 QCompass (QSensor) 在 Windows 8.1 上运行

转载 作者:太空狗 更新时间:2023-10-29 21:42:58 25 4
gpt4 key购买 nike

我无法让传感器在我的 Asus Transformer T100 上工作。

磁力计和指南针不启动,我从加速度计得到假值(始终 x=0、y=9.8、z=0)。

我总是得到相同的结果,即使是我的笔记本电脑也是如此:

第一个文本编辑:

Initialisation...
QAccelerometer is connected to backend...
QAccelerometer isActive...
Attente des données capteur...

第二个文本编辑:

ven. juin 6 14:56:41 2014
Acceleration: x = 0
y = 9.8
z = 0

Compass: UNAVAILABLE
QMagnetometer: UNAVAILABLE

还有这段代码:

QList<QByteArray> sensorList = QSensor::sensorTypes();
ui->init->append("Sensor list length: " + QString::number(sensorList.size()).toUtf8());
foreach( QByteArray sensorName, sensorList ) {
ui->init->append("Sensor: " + sensorName);
}

给我:

Sensor: QAmbientLightSensor
Sensor: QAccelerometer
Sensor: QTiltSensor
Sensor: QOrientationSensor
Sensor: QRotationSensor

QCompass 在哪里? Q磁力计?为什么 QAccelerometer 是假的? :'(

这是我的简化测试代码,仅适用于 QCompass :

标题:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QCompass>
#include <QCompassReading>


namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();

public slots:
void update();
void error(int);

private:
Ui::MainWindow *ui;

QCompass *compass;
QCompassReading *compass_reading;
};

#endif // MAINWINDOW_H

代码:

#include <QDateTime>
#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

ui->init->setText("Initialisation...");

compass = new QCompass(this);
connect(compass, SIGNAL(readingChanged()), this, SLOT(update()));
connect(compass, SIGNAL(sensorError(int)), this, SLOT(error(int)));
compass->setDataRate(1);
compass->start();
if (compass->isBusy()) {
ui->init->append("QCompass is busy...");
}
if(compass->isConnectedToBackend()) {
ui->init->append("QCompass is connected to backend...");
}
if(compass->isActive()) {
ui->init->append("QCompass isActive...");
}

ui->init->append("Waiting for sensors...");
}

MainWindow::~MainWindow()
{
delete compass;
delete ui;
}

void MainWindow::update()
{
QString text_compass;

ui->textEdit->clear();

accel_reading = accel->reading();

compass_reading = compass->reading();
if(compass_reading != 0) {
text_compass = QDateTime::currentDateTime().toString() +
+ "\nCompass: azimuth = " + QString::number(compass_reading->azimuth());
+ "\ncalibration level = " + QString::number(compass_reading->calibrationLevel());

ui->textEdit->append(text_compass);
}
else {
text_compass = "\nCompass: UNAVAILABLE";
ui->textEdit->append(text_compass);
}
}


void MainWindow::error(int erreur) {
QMessageBox::critical(this, "Erreur", "Erreur num : " + QString::number(erreur).toUtf8());
}

最佳答案

目前的解决方案是破解 winrt 传感器插件并重建它。(winrt 的传感器后端适用于 windows 7/8 桌面应用程序)。

首先git clone插件,或者获取Qt的源码。

然后打开 src/plugins/sensors/sensors.pro 并添加这些行:

win32-msvc2012|win32-msvc2013 {
isEmpty(SENSORS_PLUGINS): SENSORS_PLUGINS = winrt generic dummy
}

winrt|win32-msvc2012|win32-msvc2013 {
isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, winrt):SUBDIRS += winrt
}

删除这一行:

isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, winrt):winrt:SUBDIRS += winrt 

然后打开 src/plugins/sensors/winrt/winrt.pro 并添加以下行:

win32-msvc2012|win32-msvc2013: LIBS += -lruntimeobject

最后运行 qmake、make/nmake、make/nmake install(有关如何构建的更多信息,请咨询谷歌)

重要:运行过程应该从 qtsensors.pro 文件所在的目录开始(例如 C:\Qt\5.4\Src\qtsensors)。

获取更多信息,关注:

关于c++ - Qt 5.3 无法使 QCompass (QSensor) 在 Windows 8.1 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24082502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com