[英]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.