PySide6.QtSerialBus.QCanSignalDescription

class QCanSignalDescription

QCanSignalDescription 类描述了从CAN帧中提取一个值并以应用程序定义的格式表示的规则。More_

概要

方法

注意

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

详细描述

QCanSignalDescription 类可用于提供信号描述,并随后使用它来解码接收到的 QCanBusFrame 或将输入数据编码为可以发送给接收者的 QCanBusFrame

概述

每个CAN帧可以包含多个值。从CAN帧中提取值的规则包括以下内容:

  • 数据源(帧ID或有效载荷)。

  • 数据字节序。有关更多详细信息,请参见Data Endianness Processing部分。

  • 数据格式。

  • 起始位位置。

  • 数据的长度,以位为单位。

  • 多路复用选项。

起始位位置是相对于所选数据源指定的。位从最低有效位(LSB)开始计数。

一旦数据被提取,可能需要将其转换为应用程序定义的格式。以下参数可用于此目的:

  • 用于将提取的值转换为物理值的各种参数(因子、偏移量、比例)。

  • 预期的数据范围。

  • 数据单位。

QCanSignalDescription 类提供了控制所有这些参数的方法。

数据字节序处理

小端序和大端序数据的编码方式不同。对于大端序值,起始位位置是最高有效位。对于小端序值,起始位置是最低有效位。

让我们考虑两个例子。在这两个例子中,我们将在3字节的有效载荷中编码两个12位的值。

小端序

对于小端序的情况,数据布局可以用以下图像表示:

../../_images/canbus_signals_le.png

这里列表示位号,行表示字节号。LSB标记值的第一个(最低有效)位,MSB标记值的最后一个(最高有效)位。蓝色标记第一个值,橙色标记第二个值。

关于这些值的信息将以以下方式编码在QCanSignalDescription中:

QCanSignalDescription signal1;
signal1.setDataEndian(QSysInfo::Endian::LittleEndian);
signal1.setStartBit(0);
signal1.setBitLength(12);
// other parameters for signal1

QCanSignalDescription signal2;
signal2.setDataEndian(QSysInfo::Endian::LittleEndian);
signal2.setStartBit(12);
signal2.setBitLength(12);
// other parameters for signal2

大端序

下图表示大端情况下的值布局:

../../_images/canbus_signals_be.png

这些值可以在QCanSignalDescription中以以下方式表示:

QCanSignalDescription signal1;
signal1.setDataEndian(QSysInfo::Endian::BigEndian);
signal1.setStartBit(7);
signal1.setBitLength(12);
// other parameters for signal1

QCanSignalDescription signal2;
signal2.setDataEndian(QSysInfo::Endian::BigEndian);
signal2.setStartBit(11);
signal2.setBitLength(12);
// other parameters for signal2

注意起始位与小端情况不同。此外,值的对齐方式也不同。

多路复用信号解释

在CAN负载中编码数据的两种常见方法:

  • 每个比特范围总是代表相同的信号。例如,Bytes 0-1 在有效载荷中可以代表发动机转速(以 rpm 为单位),而 Bytes 2-3 可以代表车辆速度(以 km/h 为单位)。

  • 相同的比特范围可以表示不同的数据,这取决于有效载荷中其他一些比特的值。例如,如果Byte 0的值为0,则Bytes 1-2表示发动机转速(以rpm为单位),如果Byte 0的值为1,则相同的Bytes 1-2表示车速(以km/h为单位)。

第二种情况使用信号多路复用。在提供的示例中,我们将有三个信号。第一个信号表示Byte 0的值,并充当多路复用器信号。其他两个信号分别表示发动机速度和车辆速度,但一次只能从CAN有效载荷中提取其中一个信号。应该提取哪个信号由多路复用器信号的值决定。

在更复杂的情况下,有效载荷可能包含多个多路复用信号。在这种情况下,只有当所有多路复用器都包含预期值时,才能从有效载荷中提取信号。

值转换

在许多情况下,通过CAN总线传输的信号无法完全表示它们所代表的物理值的范围。为了克服这些限制,物理值在传输前被转换为较小的范围,并且可以在接收端恢复。

以下公式用于在物理值和信号值之间进行转换:

physicalValue = scaling * (signalValue * factor + offset);
signalValue = (physicalValue / scaling - offset) / factor;

因子和缩放参数不能等于0

如果任何参数等于qQNaN(),则在转换过程中不使用它。如果所有参数都等于qQNaN()(这是默认情况),则不执行转换。

__init__()

创建一个空的信号描述。

__init__(other)
Parameters:

其他QCanSignalDescription

创建一个信号描述,其值从other复制而来。

addMultiplexSignal(name, ranges)
Parameters:
  • name – str

  • ranges – QCanSignalDescription.MultiplexValueRange 的列表

addMultiplexSignal(name, value)
Parameters:
  • name – str

  • value – 对象

这是一个重载函数。

这是一个方便的重载,适用于当多路复用器信号预期只有一个特定值,而不是一系列值的情况。

name 参数包含多路复用信号的名称,value 参数包含所需的值。

如果此信号已经具有多路复用器信号name的期望值范围,则这些范围将被覆盖。

bitLength()
Return type:

整数

返回信号值的位长度。

clearMultiplexSignals()

移除此信号的所有multiplexor signals

comment()
Return type:

字符串

返回信号的注释。

此参数仅用于额外描述。在信号处理过程中不使用。

另请参阅

setComment()

dataEndian()
Return type:

Endian

返回信号值的数据字节序。

默认情况下,使用BigEndian。

注意

如果dataFormat()设置为AsciiString,则忽略数据的字节顺序。

另请参阅

setDataEndian() Endian

dataFormat()
Return type:

DataFormat

返回信号值的数据格式。

默认情况下,使用SignedInteger

dataSource()
Return type:

DataSource

返回信号值的数据源。

默认情况下,使用Payload

factor()
Return type:

浮点数

返回用于将信号值转换为物理值并转换回来的因子。

默认情况下,函数返回 qQNaN(),这意味着未使用因子。

Value Conversions 部分解释了如何使用此参数。

isValid()
Return type:

布尔

当信号描述有效时返回true,否则返回false

一个有效的信号描述必须满足以下条件:

maximum()
Return type:

浮点数

返回信号支持的最大值。

默认情况下,函数返回 qQNaN(),这意味着没有最大值。

另请参阅

setRange() minimum()

minimum()
Return type:

浮点数

返回信号支持的最小值。

默认情况下,函数返回 qQNaN(),这意味着没有最小值。

另请参阅

setRange() maximum()

multiplexSignals()
Return type:

.QHashQString, QCanSignalDescription.MultiplexValueRange的列表

返回用于正确识别此信号的multiplexor signals及其期望值。

返回的哈希包含信号名称作为键和相应的期望值范围作为值。

只有当哈希中的所有信号都具有预期值时,才能从有效载荷中提取此信号的值。

multiplexState()
Return type:

MultiplexState

返回信号的多路复用状态。

有关多路复用信号的更多详细信息,请参见Multiplexed Signals Explained部分。

默认情况下,此方法返回 None

name()
Return type:

字符串

返回信号的名称。

另请参阅

setName() isValid()

offset()
Return type:

浮点数

返回用于将信号值转换为物理值并转换回来的偏移量。

默认情况下,函数返回 qQNaN(),这意味着不使用偏移量。

Value Conversions 部分解释了如何使用此参数。

physicalUnit()
Return type:

字符串

返回信号值的物理单位(例如 km/h),如果未设置单位,则返回空字符串。

此参数仅用于额外描述。在信号处理过程中不使用。

另请参阅

setPhysicalUnit()

receiver()
Return type:

字符串

返回此信号的接收节点。

此参数仅用于额外描述。在信号处理过程中不使用。

另请参阅

setReceiver()

scaling()
Return type:

浮点数

返回用于将信号值转换为物理值并返回的缩放比例。

默认情况下,函数返回 qQNaN(),这意味着不使用缩放。

Value Conversions 部分解释了如何使用此参数。

setBitLength(length)
Parameters:

长度 – int

将信号值的位长度设置为length

setComment(text)
Parameters:

文本 – str

将信号的注释设置为text

此参数仅用于额外描述。在信号处理过程中不使用。

另请参阅

comment()

setDataEndian(endian)
Parameters:

字节序Endian

将信号值的数据字节序设置为endian

另请参阅

dataEndian() Endian

setDataFormat(format)
Parameters:

格式DataFormat

将信号值的数据格式设置为 format

另请参阅

dataFormat() DataFormat

setDataSource(source)
Parameters:

来源DataSource

将信号值的数据源设置为 source

另请参阅

dataSource() DataSource

setFactor(factor)
Parameters:

factor – 浮点数

设置用于将信号值转换为物理值并返回到factor的因子。

将qQNaN()传递给此方法以在转换期间跳过此参数。

因子不能为0。尝试将因子设置为零等同于将其设置为qQNaN()。

Value Conversions 部分解释了如何使用此参数。

setMultiplexSignals(multiplexorSignals)
Parameters:

multiplexorSignals – .QHashQString, QCanSignalDescription.MultiplexValueRange 的列表

设置此信号的多路复用器 信号multiplexorSignals

multiplexorSignals 哈希表 必须 包含信号名称作为键,以及相应的期望值范围作为值。

setMultiplexState(state)
Parameters:

状态MultiplexState

将信号的多路复用状态设置为 state

有关多路复用信号的更多详细信息,请参见Multiplexed Signals Explained部分。

setName(name)
Parameters:

name – str

将信号的名称设置为name

信号的名称在CAN消息中必须是唯一的。

另请参阅

name()

setOffset(offset)
Parameters:

offset – 浮点数

设置用于将信号值转换为物理值并返回到offset的偏移量。

将qQNaN()传递给此方法以在转换期间跳过此参数。

Value Conversions 部分解释了如何使用此参数。

setPhysicalUnit(unit)
Parameters:

单位 – str

设置信号值的物理单位(例如 km/h)。

此参数仅用于额外描述。在信号处理过程中不使用。

另请参阅

physicalUnit()

setRange(minimum, maximum)
Parameters:
  • 最小值 – float

  • maximum – 浮点数

设置信号值的最小值最大值

将一个或两个参数设置为qQNaN()意味着将不使用相应的限制。

另请参阅

minimum() maximum()

setReceiver(receiver)
Parameters:

receiver – str

设置此信号的receiver节点。

此参数仅用于额外描述。在信号处理过程中不使用。

另请参阅

receiver()

setScaling(scaling)
Parameters:

缩放 – float

设置用于将信号值转换为物理值并返回到scaling的缩放比例。

将qQNaN()传递给此方法以在转换期间跳过此参数。

缩放比例不能为0。尝试将缩放比例设置为零等同于将其设置为qQNaN()。

Value Conversions 部分解释了如何使用此参数。

setStartBit(bit)
Parameters:

bit – 整数

将信号值在dataSource()中的起始位设置为bit

startBit()
Return type:

整数

返回信号值在dataSource()中的起始位。

swap(other)
Parameters:

其他QCanSignalDescription

class MultiplexValueRange

概要

方法

注意

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

详细描述

PySide6.QtSerialBus.QCanSignalDescription.MultiplexValueRange.minimum
PySide6.QtSerialBus.QCanSignalDescription.MultiplexValueRange.maximum
__ne__(rhs)
Parameters:

rhsMultiplexValueRange

Return type:

布尔

__eq__(rhs)
Parameters:

rhsMultiplexValueRange

Return type:

布尔