class QSensor#

QSensor 类表示单个硬件传感器。更多...

Inheritance diagram of PySide6.QtSensors.QSensor

继承自: QTiltSensorQTapSensorQRotationSensorQProximitySensorQPressureSensorQOrientationSensorQMagnetometerQLightSensorQLidSensorQIRProximitySensorQHumiditySensorQGyroscopeQCompassQAmbientTemperatureSensorQAmbientLightSensorQAccelerometer

概要#

属性#

  • active - 表示传感器是否活跃的值

  • alwaysOn - 表示传感器是否应该在屏幕关闭时继续运行的值

  • availableDataRates - 传感器支持的数据速率

  • axesOrientationMode - 影响屏幕方向变化如何影响读取值的模式

  • bufferSize

  • busy - 表示传感器是否忙碌的值

  • connectedToBackend - 表示传感器是否已连接到后端的值

  • currentOrientation - 旋转读取值时使用的当前方向

  • dataRate - 传感器应该运行的数据速率

  • description - 传感器的描述性字符串

  • efficientBufferSize

  • error - 设置在传感器上的最后一个错误代码

  • identifier - 传感器的后端标识符

  • maxBufferSize

  • outputRange - 传感器使用的输出范围

  • outputRanges - 支持的输出范围列表

  • reading - 读取类

  • skipDuplicates - 指示是否应忽略重复的读取值

  • type - 传感器的类型

  • userOrientation - 在UserOrientation模式下旋转读取值的角度

方法#

槽函数#

信号#

静态函数#

注意

本文档可能包含自动从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度的设备。

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 更改为其他方向。

class AxesOrientationMode#

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

常数

描述

QSensor.FixedOrientation

读取值不应用自动旋转。

QSensor.AutomaticOrientation

读取值根据屏幕方向自动旋转。

QSensor.UserOrientation

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

注意

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

property activeᅟ: bool#

该属性包含一个值,用于指示传感器是否处于活动状态。

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

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

访问函数
property alwaysOnᅟ: bool#

该属性包含一个值,用于指示当屏幕关闭时传感器是否应该保持运行。

某些平台在屏幕关闭时会暂停传感器。将此属性设置为 `true` 将确保传感器继续运行。

访问函数
property availableDataRatesᅟ: list of std.pair int,int#

该属性包含传感器支持的数据速率。

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

列表中的条目可以表示离散速率或一系列连续速率。连续速率的两个值相同。

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

访问函数
属性 axesOrientationMode: QSensor.AxesOrientationMode#

此属性控制屏幕方向变化时读取值的方式。

当设置为FixedOrientation(默认模式)时,不对读取值进行自动旋转。这是不支持AxesOrientation特性的后端所提供的唯一模式。

当设置为AutomaticOrientation时,当屏幕方向变化时,读取值将自动旋转。实际上,屏幕方向被消除。

举例来说,假如设备旋转了180度,因此屏幕方向也从原始方向旋转了180度。如果没有自动轴方向,读取值将发生变化:X和Y值都将被取反,迫使应用程序开发者手动在应用程序代码中消除取反。自动轴方向会自动执行此操作,在此模式下,X和Y值将与默认屏幕方向相同。

这种自动旋转在有些情况下很有用,例如,在测量如何通过看加速度传感器的X轴值的气泡水平应用程序中。当设备和屏幕方向旋转90度时,应用程序开发者无需做任何改变,即使设备已旋转,他也可以继续使用X轴值。如果没有自动轴方向,应用程序开发者将需要查看Y值,从而在应用程序中添加依赖屏幕方向的读取不同轴值的代码。

UserOrientation模式与AutomaticOrientation模式非常相似,只是屏幕方向由手动控制,而不是自动确定。此时将使用userOrientation属性的角来旋转读取值。

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

此属性仅用于可旋转的传感器。

访问函数
属性 bufferSize: int#

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

如果将bufferSize设置大于maxBufferSize将使用maxBufferSize

当bufferSize大于1时,缓冲被打开。传感器将收集所需数量的样本,并将它们一次性交付给应用程序。它们将作为变化的读数批次交付给应用程序,因此应用程序立即处理每个读数或将其保存到其他地方尤为重要。

如果在缓冲过程中调用stop(),则不会交付部分缓冲区。

当以缓冲选项启动传感器时,从那一刻开始就开始收集值。没有可以使用的预现有缓冲区。

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

参见

maxBufferSize efficientBufferSize

访问函数
property busy: bool#

该属性保存一个值以指示传感器是否忙碌。

一些传感器可能存在于系统中,但不可用。如果传感器忙碌,此函数将返回true。您无法启动传感器。

请注意,此函数仅在另一个进程正在使用传感器时返回true,而您正在使用传感器时不会返回true。

参见

busyChanged()

访问函数
property connectedToBackend: bool#

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

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

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

访问函数
属性currentOrientation: int#

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

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

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

AutomaticOrientation 模式下,读取值根据屏幕方向进行旋转,因此此属性将与当前屏幕方向相等。

此属性由后端设置,并且仅对可旋转传感器有效。

访问函数
属性dataRate: int#

此属性持有传感器应运行的速率。

以赫兹为单位测量。

数据速率是传感器可以检测变化的最大频率。

设置此属性不可移植,可能与其他应用发生冲突。请与传感器后端和平台文档检查有关多个应用程序请求数据速率的策略。

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

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

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

访问函数
property 描述: str#

此属性包含传感器的描述字符串。

访问函数
property 有效缓冲区大小: int#

该属性包含最有效的缓冲区大小。通常为1(表示没有特定大小是最有效的)。某些传感器驱动程序具有FIFO缓冲区,这使得一次性传输FIFO大小的读取值更为高效。

访问函数
property 错误: int#

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

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

访问函数
property 标识符: QByteArray#

此属性包含传感器的后端标识符。

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

访问函数
property 最大缓冲区大小: int#

该属性包含最大缓冲区大小。

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

访问函数
属性 outputRange: int#

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

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

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

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

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

参见

outputRanges

访问函数
属性 outputRanges: list of qoutputrange#

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

传感器可能具有多个输出范围。通常,为了降低精度以换取更大的测量范围,会这样做。

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

访问函数
属性 reading: QSensorReading#

此属性保存读取类。

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

请注意,直到连接到后端,此值将返回0。

请注意,在调用 start() 后,读取不一定立即可用。应用程序必须等待 readingChanged() 信号被发出。

访问函数
属性 skipDuplicates: bool#

该属性表示是否应排除重复的读取值。

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

重复跳过不仅适用于完全相同的读取值,还适用于相当相似的读取值,因为即使设备未移动,每个传感器也有一定的抖动。

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

默认情况下禁用重复跳过。

重复跳过在传感器启动时生效,更改活动传感器期间的属性没有立即效果。

访问函数
property typeᅟ: QByteArray#

该属性表示传感器的类型。

访问函数
property userOrientationᅟ: int#

该属性表示用于在 UserOrientation 模式中旋转读取值的角。

当将 axesOrientationMode 属性设置为 UserOrientation 时,旋转读取值的角将从该属性获取。在其他模式中,该属性没有效果。

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

该属性仅适用于可旋转的传感器。

访问函数
__init__(type[, parent=None])#
参数:

警告

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

type 传感器作为 parent 的子对象构建。

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

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

magnetometer = QSensor(QMagnetometer.sensorType, self)

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

magnetometer = QMagnetometer(self)

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

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

activeChanged()#

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

参见

active

# 属性的更新通知信号。

addFilter(filter)#
参数:

filterQSensorFilter

向传感器添加一个 filter

传感器不会获取对过滤器的所有权。 QSensorFilter 会通知传感器如果它被销毁。

参见

QSensorFilter

alwaysOnChanged()#

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

# 属性的更新通知信号。

availableDataRates()#
返回类型:

_std::pair 的列表

# 属性的获取器。

availableSensorsChanged()#

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

axesOrientationMode()#
返回类型:

AxesOrientationMode

axesOrientationMode属性的获取器。

axesOrientationModeChanged(axesOrientationMode)#
参数:

axesOrientationModeAxesOrientationMode

axesOrientationMode属性的属性变更通知信号。

backend()#
返回类型:

QSensorBackend

bufferSize()#
返回类型:

int

bufferSize属性的获取器。

bufferSizeChanged(bufferSize)#
参数:

bufferSize – int

bufferSize属性的通知信号。

busyChanged()#

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

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

busy属性的通知信号。

connectToBackend()#
返回类型:

bool

尝试连接到传感器后端。

如果在调用此方法前设置了类型,并且找到了合适的后端,则返回true,否则返回false。

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

currentOrientation()#
返回类型:

int

属性 currentOrientationᅟ 的获取器。

currentOrientationChanged(currentOrientation)#
参数:

currentOrientation - int

属性 currentOrientationᅟ 的通知信号。

dataRate()#
返回类型:

int

参见

setDataRate()

属性 dataRateᅟ 的获取器。

dataRateChanged()#

属性 dataRateᅟ 的通知信号。

static defaultSensorForType(type)#
参数:

typeQByteArray

返回类型:

QByteArray

返回 type 的默认传感器标识符。这由配置文件设置,必要时可以覆盖。如果没有提供默认值,系统将返回为 type 注册的第一个传感器。

请注意,存在特殊案例逻辑以防止当已为同一类型注册了其他后端时,通用插件的插件变得默认。这种逻辑意味着以 generic. 开头的后端标识符只有在没有为该类型注册其他后端,或者它在 Sensors.conf 中指定时,才会是默认的。

description()#
返回类型:

str

属性 descriptionᅟ 的获取器。

efficientBufferSize()#
返回类型:

int

属性 efficientBufferSizeᅟ 的获取器。

efficientBufferSizeChanged(efficientBufferSize)#
参数:

efficientBufferSize - int

属性 efficientBufferSizeᅟ 的通知信号。

error()#
返回类型:

int

属性 errorᅟ 的获取器。

filters()#
返回类型:

. QSensorFilter 列表

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

参见

QSensorFilter

identifier()#
返回类型:

QByteArray

属性 identifierᅟ 的获取器。

identifierChanged()#

属性 identifierᅟ 的通知信号。

isActive()#
返回类型:

bool

属性 activeᅟ 的获取器。

isAlwaysOn()#
返回类型:

bool

属性 alwaysOnᅟ 的获取器。

isBusy()#
返回类型:

bool

属性 busyᅟ 的获取器。

isConnectedToBackend()#
返回类型:

bool

属性 connectedToBackendᅟ 的获取器。

isFeatureSupported(feature)#
参数:

featureFeature

返回类型:

bool

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

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

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

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

后端必须实现 isFeatureSupported() 以使此功能能够工作。

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

maxBufferSize()#
返回类型:

int

属性 maxBufferSize 的获取器。

maxBufferSizeChanged(maxBufferSize)#
参数:

maxBufferSize – int

属性 maxBufferSize 的通知信号。

outputRange()#
返回类型:

int

属性 outputRange 的获取器。

outputRanges()#
返回类型:

qoutputrange 的列表

属性 outputRanges 的获取器。

reading()#
返回类型:

QSensorReading

属性 reading 的获取器。

readingChanged()#

收到新的传感器读取值时发出此信号。

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

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

参见

start()

属性 reading 的通知信号。

removeFilter(filter)#
参数:

filterQSensorFilter

从传感器中移除 filter

参见

QSensorFilter

sensorError(error)#
参数:

error – int

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

属性 errorᅟ 的通知信号。

static sensorTypes()#
返回类型:

返回一个包含所有传感器类型列表的 QByteArray

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

static sensorsForType(type)#
参数:

typeQByteArray

返回类型:

返回一个包含所有传感器类型列表的 QByteArray

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

setActive(active)#
参数:

active – bool

参见

isActive()

属性 activeᅟ 的设置器。

setAlwaysOnalwaysOn#
参数:

alwaysOn – bool

参见

isAlwaysOn()

属性 alwaysOnᅟ 的设置器。

setAxesOrientationModeaxesOrientationMode#
参数:

axesOrientationModeAxesOrientationMode

属性 axesOrientationModeᅟ 的设置器。

setBufferSizebufferSize#
参数:

bufferSize – int

参见

bufferSize()

属性 bufferSizeᅟ 的设置器。

setCurrentOrientationcurrentOrientation#
参数:

currentOrientation - int

将当前屏幕方向设置为 currentOrientation。这是在屏幕方向或 userOrientation 属性改变时从后端调用的。

setDataRaterate#
参数:

rate – int

参见

dataRate()

属性 dataRate 的设置器。

setEfficientBufferSize(efficientBufferSize)#
参数:

efficientBufferSize - int

设置高效的缓冲区大小为 efficientBufferSize。此方法应在后端调用。

setIdentifier(identifier)#
参数:

identifierQByteArray

参见

identifier()

属性 identifier 的设置器。

setMaxBufferSize(maxBufferSize)#
参数:

maxBufferSize – int

将最大缓冲区大小设置为 maxBufferSize。此方法应在后端调用。

setOutputRange(index)#
参数:

index – int

参见

outputRange()

属性 outputRange 的设置器。

setSkipDuplicates(skipDuplicates)#
参数:

skipDuplicates – bool

设置跳过重复值的功能为 skipDuplicates

属性 skipDuplicates 的设置器。

setUserOrientation(userOrientation)#
参数:

userOrientation – int

属性 userOrientation 的设置器。

skipDuplicates()#
返回类型:

bool

属性 skipDuplicates 的获取器。

skipDuplicatesChanged(skipDuplicates)#
参数:

skipDuplicates – bool

skipDuplicates 属性改变时,会发出这个信号。

属性 skipDuplicates 的通知信号。

start()#
返回类型:

bool

开始从传感器获取值。如果成功 started,则返回 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();

参见

忙碌

stop()#

停止从传感器检索值。

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

参见

忙碌

type()#
返回类型:

QByteArray

属性typeᅟ的获取器。

userOrientation()#
返回类型:

int

属性userOrientationᅟ的获取器。

userOrientationChanged(userOrientation)#
参数:

userOrientation – int

属性userOrientationᅟ的通知信号。