资讯详情

基于Python的PyQt5.QtSensors模块调用Android手机的传感器数据

前言

一、运行环境

二、使用步骤

1.引入库

2.功能函数

2.1 初始化

2.2 定时器函数

传感器数据-toc" style="margin-left:80px;">2.3 刷新传感器数据

2.4 主函数

3.最终效果

总结

后记


前言

为孩子们制作手机遥控器来遥控汽车,需要调用手机的加速度传感器数据来控制转向。因为我从来没有玩过Java,只会一点Python,想着在Android上直接跑Python实现此功能。找了很久的实现方法,发现正好PYQT5支持跨平台,内部QtSensors这似乎是我想要的,遥控器的界面可以一起解决!但是网上找到的QtSensors的用例几乎都是基于C语言的,或者QML。折腾之后还是拿出来,在这里分享,给自己做个记录,也给大家演示一下Python的QtSensors用法(也算是弥补网上空白?当然,也许我自己没有发现)。

有点啰嗦,毕竟第一次发博,下面进入正题。


一、运行环境

我是用Pydroid3在Android上跑的python。其实鸿蒙也应该可以。之前没拿出来,以为鸿蒙系统不支持,后来特意刷回来了。Android,又是一番瞎折腾。

至于Pydroid如何安装,如何使用,这里不多,网上有很多信息。Pydroid3自带了PYQT5.省去了安装仓库的麻烦。

二、使用步骤

1.引入库

从PyQt5.QtSensors导入QAccelerometer模块(还有很多其他传感器模块,可以自己玩)。

from PyQt5.QtSensors import QAccelerometer

本示例中做了一个简单的界面来反馈当前的传感器获取的值,所以一并导入相关的模块:

import sys from PyQt5.QtWidgets import QApplication, QWidget, QFormLayout, QLineEdit from PyQt5.QtCore import QTimer

2.功能函数

2.1 初始化

界面初始化,同时正确QAccelerometer()模块实例化setActive(True)打开传感器。添加定时器,定期刷新数据。

代码如下:

    def __init__(self, parent=None):         super(App, self).__init__(parent)         layout = QFormLayout()         self.editX = QLineEdit()         self.editY = QLineEdit()         self.editZ = QLineEdit()         layout.addRow("X数值", self.editX)         layout.addRow("Y数值", self.editY)         layout.addRow("Z数值", self.editZ)         self.setLayout(layout)          self.Accelerometer = QAccelerometer()         self.Accelerometer.setActive(True)          self.MyTimer()

2.2 定时器函数

定时器每100ms刷新数据:

    def MyTimer(self):         timer = QTimer(self)         timer.timeout.connect(self.update)         timer.start(100)

2.3 刷新传感器数据

刷新传感器数据reading获取当前相应轴坐标的加速度数据,然后刷新到界面:

    def update(self):         current_x = self.Accelerometer.reading().x()         current_y = self.Accelerometer.reading().y()         current_z = self.Accelerometer.reading().z()          self.editX.setText(str(current_x))         self.editY.setText(str(current_y))         self.editZ.setText(str(current_z))

2.4 主函数

剩下的是主函数:

def main():     app = QApplication(sys.argv)     window = App()     window.show()     sys.exit(app.exec_())   if __name__ == '__main__':     main()

3.最终效果

最终效果截图。事实上,如果你摇动手机,界面上每个轴的数据都会发生变化。找出您想要的变化规则,您可以开发相应的应用程序。制作手机遥控器来控制方向非常简单.^-^.

总结

最后,它看起来很简单。关键是两三行代码。然而,由于他们的基础薄弱,他们总是认为自己可以copy当互联网上找不到现成的东西时,它们就会失明。事实上,虽然它不是一种相应的语言,但实现方法和步骤非常不同的,自己认真研究一下也是能行的!

另外,QtSensors还支持很多其他的传感器类型,用法都是差不多了,大家可以试试其他的,这样就可以开发出各种类型的app,可玩性就很高了!

后记

手机跟小车的通信是靠的蓝牙,同样也是基于Python的PyQt5写的蓝牙通信接口。后面有时间也把这部分的经验分享出来,其中有几个问题其实至今也没有很完美的解决,还得请教网络上的各位高手了!

标签: 传感器转向c1623转向传感器2005传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台