PySide6.QtSensors.QSensor

class QSensor

QSensor 类代表一个单一的硬件传感器。更多

PySide6.QtSensors.QSensor 的继承图

继承自: QTiltSensor, QTapSensor, QRotationSensor, QProximitySensor, QPressureSensor, QOrientationSensor, QMagnetometer, QLightSensor, QLidSensor, QIRProximitySensor, QHumiditySensor, QGyroscope, QCompass, QAmbientTemperatureSensor, QAmbientLightSensor, QAccelerometer

概要

属性

方法

插槽

信号

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

传感器的生命周期通常是:

  • 在栈或堆上创建QSensor的子类。

  • 根据应用程序的要求进行设置。

  • 开始接收值。

  • 应用程序使用传感器数据。

  • 停止接收值。

传感器数据通过QSensorReading及其子类传递。

方向

一些传感器会对屏幕方向变化做出反应,例如 QAccelerometerQMagnetometerQRotationSensor。这些被称为可定向传感器。对于可定向传感器,QSensor 支持根据屏幕方向改变读数值的报告方式。

对于可定向的传感器,axesOrientationMode 属性控制方向如何影响读数。

在默认模式下,FixedOrientation,读数不受方向影响。在AutomaticOrientation模式下,读数会根据当前屏幕方向自动旋转。最后,在UserOrientation模式下,读数会根据用户指定的方向进行旋转。

此功能仅在后端支持且传感器可定向时可用,可以通过调用isFeatureSupported()并传入AxesOrientation标志来检查。

这里的方位值始终是屏幕的方位,而不是设备的方位。屏幕方位是GUI的方位。例如,当设备逆时针旋转90度时,屏幕方位会通过顺时针旋转90度来补偿,这样在设备旋转后,GUI仍然保持直立。请注意,应用程序可以锁定屏幕方位,例如强制为纵向或横向模式。对于锁定的方位,如果设备方位发生变化,可定向传感器不会响应读数变化,因为可定向传感器仅响应屏幕方位的变化。这是有意义的,因为可定向传感器的目的是使传感器方位与屏幕方位保持同步。

方向值的范围从0到270度。方向按顺时针方向应用,例如,方向值为90度意味着屏幕从其原始位置向右旋转了90度,以补偿设备向左旋转90度。

另请参阅

QSensorReading

class Feature

列出后端可能支持的可选功能。

所有传感器类型的共同特征是:

常量

描述

QSensor.Buffering

后端支持读取的缓冲,由bufferSize属性控制。

QSensor.AlwaysOn

后端支持更改空闲时是否挂起的策略,由alwaysOn属性控制。

QSensor.SkipDuplicates

后端支持跳过相同或非常相似的连续读数。可以通过将skipDuplicates属性设置为true来启用此功能。

QMagnetometer 的功能包括:

常量

描述

QSensor.GeoValues

后端支持返回地理值,可以通过returnGeoValues属性进行控制。

QLightSensor 的功能包括:

常量

描述

QSensor.FieldOfView

后端指定其视野范围,可以从fieldOfView属性中读取。

QAccelerometer 的功能包括:

常量

描述

QSensor.AccelerationMode

后端支持通过accelerationMode属性切换加速度计的模式。

QPressureSensor 的功能包括:

常量

描述

QSensor.PressureSensorTemperature

后端提供压力传感器的芯片温度

所有可定向传感器的特性是:

常量

描述

QSensor.AxesOrientation

后端支持将轴方向从默认的FixedOrientation更改为其他方向。

另请参阅

isFeatureSupported()

class AxesOrientationMode

描述屏幕方向如何影响读取值。

常量

描述

QSensor.FixedOrientation

不会对读数应用自动旋转。

QSensor.AutomaticOrientation

读数会根据屏幕方向自动旋转。

QSensor.UserOrientation

读取的值会根据userOrientation属性的角度进行旋转。

另请参阅

axesOrientationMode

注意

当使用from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。

property activeᅟ: bool

此属性保存一个值,用于指示传感器是否处于活动状态。

如果传感器处于活动状态(返回值),则为真。否则为假。

请注意,将此值设置为true不会立即生效。相反,传感器将在事件循环到达后启动。

Access functions:
property alwaysOnᅟ: bool

此属性保存一个值,用于指示当屏幕关闭时传感器是否应继续运行。

一些平台在屏幕关闭时有暂停传感器的策略。将此属性设置为true将确保传感器继续运行。

Access functions:
property availableDataRatesᅟ: list of std.pairint,int

此属性保存传感器支持的数据速率。

这是传感器支持的数据速率列表。以赫兹为单位测量。

列表中的条目可以表示离散速率或连续速率范围。离散速率通过两个值相同来表示。

请注意,此信息并非强制性的,因为并非所有传感器都有运行速率。在这种情况下,列表将为空。

另请参阅

dataRate qrangelist

Access functions:
property axesOrientationModeᅟ: QSensor.AxesOrientationMode

此属性保存影响屏幕方向如何改变读取值的模式。

当设置为FixedOrientation时,这是默认模式,不会对阅读应用自动旋转。这是不支持AxesOrientation功能的后端唯一可用的模式。

当设置为AutomaticOrientation时,屏幕方向改变时,读数会自动旋转。实际上,屏幕方向的影响被抵消了。

举个例子,假设设备旋转了180度,因此屏幕方向也从原始方向旋转了180度。如果没有自动轴方向调整,读数现在会发生变化:X和Y值都会被取反,迫使应用程序开发人员手动在应用程序代码中取消取反。自动轴方向调整会自动完成这一操作,在这种模式下,X和Y值将与默认屏幕方向下的值相同。

这种轴的自动旋转在某些用例中非常方便,例如在一个气泡水平应用中,通过查看加速度计的X轴值来测量表面的水平程度。当设备和屏幕方向改变90度时,应用程序开发人员不需要更改任何内容,他可以继续使用X轴值,即使设备已经旋转。如果没有自动轴方向,应用程序开发人员将需要查看Y值,从而在应用程序中添加代码,根据屏幕方向从不同的轴读取数据。

UserOrientation 模式与 AutomaticOrientation 非常相似,只是屏幕方向是手动控制的,而不是自动确定的。userOrientation 属性的角度随后用于旋转读取值。

由于读数的旋转是基于屏幕方向的,Z值永远不会改变,因为Z轴垂直于屏幕。当屏幕方向以90度的步长变化时,读数的旋转也以90度的步长进行。

此属性仅用于可定向传感器。

Access functions:
property bufferSizeᅟ: int

此属性保存缓冲区的大小。默认情况下,缓冲区大小为1,这意味着没有缓冲。如果最大缓冲区大小为1,则传感器不支持缓冲。

将bufferSize设置为大于maxBufferSize将导致使用maxBufferSize

当bufferSize大于1时,缓冲功能将开启。传感器将收集所需数量的样本,并一次性将它们全部传递给应用程序。它们将以一系列变化的读数形式传递给应用程序,因此应用程序立即处理每个读数或将值保存到其他地方尤为重要。

如果在缓冲进行时调用stop(),则不会传递部分缓冲区。

当传感器以缓冲选项启动时,从那一刻起开始收集值。没有预先存在的缓冲区可以利用。

一些后端仅支持启用或禁用缓冲区,而不提供对大小的控制。在这种情况下,即使支持缓冲,maxBufferSizeefficientBufferSize 属性可能根本不会被设置。将 bufferSize 属性设置为任何大于 1 的值将启用缓冲。传感器启动后,后端会将 bufferSize 属性设置为实际值。

Access functions:
property busyᅟ: bool

此属性用于指示传感器是否忙碌。

某些传感器可能在系统中但不可用。如果传感器忙,此函数将返回true。您将无法start()传感器。

请注意,如果您正在使用传感器,此函数不会返回true,只有在另一个进程使用传感器时才会返回true。

另请参阅

busyChanged()

Access functions:
property connectedToBackendᅟ: bool

此属性保存一个值,指示传感器是否已连接到后端。

未连接到后端的传感器无法执行任何有用的操作。

调用connectToBackend()方法以强制传感器立即连接到后端。如果您调用start(),则会自动调用此方法,因此只有在需要访问传感器属性时才需要执行此操作(例如,在使用传感器之前轮询传感器的元数据)。

Access functions:
property currentOrientationᅟ: int

此属性保存用于旋转读取值的当前方向。

这可能与屏幕方向不同。例如,在FixedOrientation模式下,读取的值不会旋转,因此该属性为0。

UserOrientation模式下,读数会根据userOrientation属性进行旋转,因此该属性等于userOrientation属性。

AutomaticOrientation模式下,读数会根据屏幕方向旋转,因此此属性将等于当前屏幕方向。

此属性由后端设置,仅对可定向传感器有效。

Access functions:
property dataRateᅟ: int

此属性保存传感器应运行的数据速率。

以赫兹为单位测量。

数据速率是传感器能够检测到变化的最大频率。

设置此属性不可移植,并可能导致与其他应用程序的冲突。请查阅传感器后端和平台文档,了解有关多个应用程序请求数据速率的任何政策。

默认值(0)表示应用程序不关心数据速率是多少。应用程序应考虑使用基于定时器的轮询来获取当前值,或确保处理值的代码能够非常快速地运行,因为平台可能每秒提供数百次更新。

这应该在调用start()之前设置,因为传感器在运行时可能不会注意到此值的变化。

请注意,没有机制可以确定平台当前使用的数据速率。

另请参阅

availableDataRates

Access functions:
property descriptionᅟ: str

此属性保存传感器的描述字符串。

Access functions:
property efficientBufferSizeᅟ: int

该属性保存最有效的缓冲区大小。通常这是1(这意味着没有特定的大小是最有效的)。一些传感器驱动程序具有FIFO缓冲区,这使得一次性传递FIFO大小的读数更加高效。

另请参阅

bufferSize maxBufferSize

Access functions:
property errorᅟ: int

此属性保存传感器上设置的最后一个错误代码。

请注意,错误代码是传感器特定的。

Access functions:
property identifierᅟ: QByteArray

此属性保存传感器的后端标识符。

请注意,当传感器连接到后端时,标识符会自动填充。如果您想连接特定的后端,您应该在connectToBackend()之前调用setIdentifier()。

Access functions:
property maxBufferSizeᅟ: int

该属性保存最大缓冲区大小。

请注意,这可能为1,在这种情况下,传感器不支持任何形式的缓冲。在这种情况下,isFeatureSupported ( Buffering ) 也将返回 false。

Access functions:
property outputRangeᅟ: int

此属性保存传感器使用的输出范围。

此值表示要使用的outputRanges列表中的索引。

设置此属性不可移植,并可能与其他应用程序发生冲突。请查阅传感器后端和平台文档,了解有关多个应用程序请求输出范围的任何政策。

默认值 (-1) 表示应用程序不关心输出范围是什么。

请注意,没有机制可以确定平台当前使用的输出范围。

另请参阅

outputRanges

Access functions:
property outputRangesᅟ: list of qoutputrange

此属性包含传感器支持的输出范围列表。

一个传感器可能具有多个输出范围。通常这样做是为了以降低精度为代价提供更大的测量范围。

请注意,此信息并非强制性的。此信息通常仅适用于具有可选输出范围的传感器(例如典型的加速度计)。

Access functions:
property readingᅟ: QSensorReading

此属性保存读取类。

读取类提供了对传感器读数的访问。读取对象是最近接收到的传感器读数的易失性缓存,因此应用程序应立即处理读数或将值保存到某处以供后续处理。

请注意,在传感器后端连接到后端之前,这将返回0。

还要注意,在调用start()后,读数不会立即可用。应用程序必须等待readingChanged()信号被发出。

Access functions:
property skipDuplicatesᅟ: bool

此属性表示是否应省略重复的读取值。

当启用重复跳过时,具有相同或非常相似值的连续读数将被省略。这有助于减少处理量,因为可用的传感器读数较少。因此,读数以不规则的间隔到达。

重复跳过不仅适用于完全相同的读数,也适用于非常相似的读数,因为即使设备没有移动,每个传感器也会有一点抖动。

对此属性的支持取决于后端。使用isFeatureSupported()来检查当前平台是否支持。

默认情况下,跳过重复项的功能是禁用的。

当传感器启动时,跳过重复项生效,在传感器处于活动状态时更改属性不会立即生效。

Access functions:
property typeᅟ: QByteArray

此属性保存传感器的类型。

Access functions:
property userOrientationᅟ: int

此属性保存用于在UserOrientation模式下旋转读数的角度。

axesOrientationMode属性设置为UserOrientation时,旋转读数的角度取自该属性。在其他模式下,该属性无效。

默认值为0。唯一有效的值为0、90、180和270,因为这些是唯一可能的屏幕方向。

此属性仅适用于可定向传感器。

Access functions:
__init__(type[, parent=None])
Parameters:

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

type传感器构造为parent的子项。

如果特定传感器类型存在派生类,请不要使用此构造函数。

错误的方法是使用基类构造函数:

magnetometer = QSensor(QMagnetometer.sensorType, self)

正确的方法是创建派生类的实例:

magnetometer = QMagnetometer(self)

派生类具有额外的属性和数据成员,这些成员是某些功能所需的,例如在QMagnetometer中的地理值支持或在QAccelerometer中的加速度模式支持。这些功能只有在从QSensor子类创建传感器实例时才能正常工作。

只有在没有可用的派生传感器类时才使用此构造函数。请注意,所有内置传感器都有一个派生类,因此只有在实现自定义传感器时才需要使用此构造函数。

activeChanged()

active属性发生变化时,会发出此信号。

另请参阅

active

属性 activeᅟ 的通知信号。

addFilter(filter)
Parameters:

过滤器QSensorFilter

向传感器添加一个filter

传感器不拥有过滤器的所有权。QSensorFilter会在被销毁时通知传感器。

另请参阅

QSensorFilter

alwaysOnChanged()

alwaysOn属性发生变化时,会发出此信号。

属性 alwaysOnᅟ 的通知信号。

availableDataRates()
Return type:

.std.pairint,int 的列表

属性 availableDataRatesᅟ 的获取器。

availableSensorsChanged()

当可用传感器列表发生变化时,会发出此信号。程序可用的传感器通常不会随时间变化,但某些可用传感器可能代表未永久连接的硬件。例如,通过蓝牙连接的游戏控制器在开启时会变为可用,在关闭时会变为不可用。

axesOrientationMode()
Return type:

AxesOrientationMode

属性 axesOrientationModeᅟ 的获取器。

axesOrientationModeChanged(axesOrientationMode)
Parameters:

axesOrientationModeAxesOrientationMode

属性 axesOrientationModeᅟ 的通知信号。

backend()
Return type:

QSensorBackend

bufferSize()
Return type:

整数

另请参阅

setBufferSize()

属性 bufferSizeᅟ 的获取器。

bufferSizeChanged(bufferSize)
Parameters:

bufferSize – int

属性 bufferSizeᅟ 的通知信号。

busyChanged()

当传感器不再忙碌时,会发出此信号。这可以用于在传感器可用时获取它。

sensor.start();
if (sensor.isBusy()) {
    // need to wait for busyChanged signal and try again
}

属性 busyᅟ 的通知信号。

connectToBackend()
Return type:

布尔

尝试连接到传感器后端。

如果找到合适的后端,则返回 true,否则返回 false。

如果您直接使用QSensor,则必须在调用此方法之前设置类型。

另请参阅

isConnectedToBackend()

currentOrientation()
Return type:

整数

属性 currentOrientationᅟ 的获取器。

currentOrientationChanged(currentOrientation)
Parameters:

currentOrientation – int

属性 currentOrientationᅟ 的通知信号。

dataRate()
Return type:

整数

另请参阅

setDataRate()

属性 dataRateᅟ 的获取器。

dataRateChanged()

属性 dataRateᅟ 的通知信号。

static defaultSensorForType(type)
Parameters:

类型QByteArray

Return type:

QByteArray

返回type的默认传感器标识符。这是在配置文件中设置的,如果需要可以覆盖。如果没有默认值,系统将返回type的第一个注册传感器。

请注意,存在特殊情况的逻辑,以防止在注册了相同类型的其他后端时,通用插件的后端成为默认后端。此逻辑意味着,以generic.开头的后端标识符只有在没有为该类型注册其他后端或在Sensors.conf中指定时才会成为默认后端。

description()
Return type:

字符串

属性 descriptionᅟ 的获取器。

efficientBufferSize()
Return type:

整数

属性 efficientBufferSizeᅟ 的获取器。

efficientBufferSizeChanged(efficientBufferSize)
Parameters:

efficientBufferSize – int

属性 efficientBufferSizeᅟ 的通知信号。

error()
Return type:

整数

属性 errorᅟ 的获取器。

filters()
Return type:

QSensorFilter的列表

返回当前附加到传感器的过滤器。

另请参阅

QSensorFilter

identifier()
Return type:

QByteArray

另请参阅

setIdentifier()

属性 identifierᅟ 的获取器。

identifierChanged()

属性 identifierᅟ 的通知信号。

isActive()
Return type:

布尔

属性 activeᅟ 的获取器。

isAlwaysOn()
Return type:

布尔

属性 alwaysOnᅟ 的获取器。

isBusy()
Return type:

布尔

属性 busyᅟ 的获取器。

isConnectedToBackend()
Return type:

布尔

属性 connectedToBackendᅟ 的获取器。

isFeatureSupported(feature)
Parameters:

特征Feature

Return type:

布尔

检查后端是否支持特定功能。

QtSensors 支持一个丰富的API,用于控制和提供有关传感器的信息。当然,并非所有后端都能支持所有这些功能。

要检查当前后端是否支持功能 feature,请调用此函数。

后端需要连接,否则将返回false。调用connectToBackend()start()将创建与后端的连接。

后端必须实现 isFeatureSupported() 才能使此功能正常工作。

如果后端已连接,则返回是否支持该功能;如果后端未连接,则返回 false。

maxBufferSize()
Return type:

整数

另请参阅

setMaxBufferSize()

属性 maxBufferSizeᅟ 的获取器。

maxBufferSizeChanged(maxBufferSize)
Parameters:

maxBufferSize – int

属性 maxBufferSizeᅟ 的通知信号。

outputRange()
Return type:

整数

另请参阅

setOutputRange()

属性 outputRangeᅟ 的获取器。

outputRanges()
Return type:

qoutputrange的列表

属性 outputRangesᅟ 的获取器。

reading()
Return type:

QSensorReading

属性 readingᅟ 的获取器。

readingChanged()

当接收到新的传感器读数时,会发出此信号。

传感器读数可以在reading属性中找到。请注意,读数对象是迄今为止接收到的最新传感器读数的易失性缓存,因此应用程序应立即处理读数或将值保存到某处以供后续处理。

在此信号首次发出之前,读取对象将包含未初始化的数据。

另请参阅

start()

属性 readingᅟ 的通知信号。

removeFilter(filter)
Parameters:

过滤器QSensorFilter

从传感器中移除filter

另请参阅

QSensorFilter

sensorError(error)
Parameters:

错误 – int

当传感器上设置了error代码时,会发出此信号。请注意,某些错误会导致传感器停止工作。您应该调用isActive()来确定传感器是否仍在运行。

属性 errorᅟ 的通知信号。

static sensorTypes()
Return type:

.list of QByteArray

返回所有传感器类型的列表。

static sensorsForType(type)
Parameters:

类型QByteArray

Return type:

.list of QByteArray

返回每个传感器的ID列表,适用于type类型。如果没有该类型的传感器可用,列表将为空。

setActive(active)
Parameters:

active – 布尔值

另请参阅

isActive()

属性 activeᅟ 的设置器。

setAlwaysOn(alwaysOn)
Parameters:

alwaysOn – 布尔值

另请参阅

isAlwaysOn()

属性 alwaysOnᅟ 的设置器。

setAxesOrientationMode(axesOrientationMode)
Parameters:

axesOrientationModeAxesOrientationMode

另请参阅

axesOrientationMode()

属性 axesOrientationModeᅟ 的设置器。

setBufferSize(bufferSize)
Parameters:

bufferSize – int

另请参阅

bufferSize()

属性 bufferSizeᅟ 的设置器。

setCurrentOrientation(currentOrientation)
Parameters:

currentOrientation – int

将当前屏幕方向设置为currentOrientation。每当屏幕方向或userOrientation属性发生变化时,应从后端调用此方法。

另请参阅

currentOrientation()

setDataRate(rate)
Parameters:

rate – int

另请参阅

dataRate()

属性 dataRateᅟ 的设置器。

setEfficientBufferSize(efficientBufferSize)
Parameters:

efficientBufferSize – int

将有效缓冲区大小设置为efficientBufferSize。这是从后端调用的。

另请参阅

efficientBufferSize()

setIdentifier(identifier)
Parameters:

标识符QByteArray

另请参阅

identifier()

属性 identifierᅟ 的设置器。

setMaxBufferSize(maxBufferSize)
Parameters:

maxBufferSize – int

设置最大缓冲区大小为maxBufferSize。这是从后端调用的。

另请参阅

maxBufferSize()

setOutputRange(index)
Parameters:

索引 – int

另请参阅

outputRange()

属性 outputRangeᅟ 的设置器。

setSkipDuplicates(skipDuplicates)
Parameters:

skipDuplicates – 布尔值

将重复跳过设置为 skipDuplicates

另请参阅

skipDuplicates()

属性 skipDuplicatesᅟ 的设置器。

setUserOrientation(userOrientation)
Parameters:

userOrientation – int

另请参阅

userOrientation()

属性 userOrientationᅟ 的设置器。

skipDuplicates()
Return type:

布尔

另请参阅

setSkipDuplicates()

属性 skipDuplicatesᅟ 的获取器。

skipDuplicatesChanged(skipDuplicates)
Parameters:

skipDuplicates – 布尔值

skipDuplicates属性发生变化时,会发出此信号。

属性 skipDuplicatesᅟ 的通知信号。

start()
Return type:

布尔

开始从传感器检索值。如果传感器已启动,则返回true,否则返回false。

传感器可能由于多种原因无法启动。

一旦应用程序启动了一个传感器,它必须等待直到传感器接收到新值后才能查询传感器的值。这是由于传感器如何从系统接收值的方式决定的。传感器通常不会轮询新值,而是新值在发生时被推送到传感器。

例如,这段代码将无法按预期工作。

sensor->start();
sensor->reading()->x(); // no data available

为了正常工作,访问读数的代码应确保readingChanged()信号已被发出。

    connect(sensor, SIGNAL(readingChanged()), this, SLOT(checkReading()));
    sensor->start();
}
void MyClass::checkReading() {
    sensor->reading()->x();

另请参阅

busy

stop()

停止从传感器检索值。

这将释放传感器,以便其他进程可以使用它。

另请参阅

busy

type()
Return type:

QByteArray

属性 typeᅟ 的获取器。

userOrientation()
Return type:

整数

另请参阅

setUserOrientation()

属性 userOrientationᅟ 的获取器。

userOrientationChanged(userOrientation)
Parameters:

userOrientation – int

属性 userOrientationᅟ 的通知信号。