简体   繁体   English

使用Qt c ++在Windows Surface Pro上获取Accelerometer数据?

[英]Getting Accelerometer data on windows Surface pro using Qt c++?

How can I get Accelerometer data on windows Surface pro using Qt c++? 如何使用Qt c ++在Windows Surface Pro上获取Accelerometer数据? I tried the below code but it gives only 0,0,0 values in all scenarios. 我尝试了下面的代码,但它在所有场景中只给出了0,0,0个值。 Please help me! 请帮我!

   QAccelerometer *accmeter = new QAccelerometer();

    accmeter->start();
    QAccelerometerReading *reading = new QAccelerometerReading();

    qreal x = reading->x();
    qreal y = reading->y();
    qreal z = reading->z();

    QMessageBox *box = new QMessageBox();
    box->setText("x="+ QString::number(x)+ "\n" "y="+ QString::number(y)+ "\n" "z="+ QString::number(z)+ "\n");
    box->exec();

To get the accelerometer data, it is recommended by the Qt company to listen to the signal readingChanged , as no data is immediately available after starting the sensor. 为了获得加速度计数据,Qt公司建议听取信号readingChanged ,因为启动传感器后没有数据立即可用。 You code would be shortened to something like this, with accMeter being changed to be a member of the class: 您的代码将缩短为类似的内容,并将accMeter更改为该类的成员:

    accmeter = new QAccelerometer();
    connect(accmeter, SIGNAL(readingChanged()), this, SLOT(checkReading()));
    accmeter->start();

and then add a member function to your class called checkReading : 然后将一个成员函数添加到名为checkReading的类中:

MyClass::checkReading() {
    qreal x = accmeter->reading()->x();
    qreal y = accmeter->reading()->y();
    qreal z = accmeter->reading()->z();
    QMessageBox *box = new QMessageBox();
    box->setText("x="+ QString::number(x)+ "\n" "y="+ QString::number(y)+ "\n" "z="+ QString::number(z)+ "\n");
    box->exec();
}

Note that in order to perfectly replicate the code you had above you should append disconnect(accmeter, SIGNAL(readingChanged()), this, SLOT(checkReading())); 请注意,为了完美复制上面的代码,你应该附加disconnect(accmeter, SIGNAL(readingChanged()), this, SLOT(checkReading())); as the last line to the member function. 作为成员函数的最后一行。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM