PySide6.QtSerialBus.QCanSignalDescription¶
- class QCanSignalDescription¶
QCanSignalDescription类描述了从CAN帧中提取一个值并以应用程序定义的格式表示的规则。More_…概要¶
方法¶
def
__init__()def
bitLength()def
comment()def
dataEndian()def
dataFormat()def
dataSource()def
factor()def
isValid()def
maximum()def
minimum()def
multiplexState()def
name()def
offset()def
physicalUnit()def
receiver()def
scaling()def
setBitLength()def
setComment()def
setDataEndian()def
setDataFormat()def
setDataSource()def
setFactor()def
setName()def
setOffset()def
setRange()def
setReceiver()def
setScaling()def
setStartBit()def
startBit()def
swap()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
QCanSignalDescription类可用于提供信号描述,并随后使用它来解码接收到的QCanBusFrame或将输入数据编码为可以发送给接收者的QCanBusFrame。概述¶
每个CAN帧可以包含多个值。从CAN帧中提取值的规则包括以下内容:
数据源(帧ID或有效载荷)。
数据字节序。有关更多详细信息,请参见
Data Endianness Processing部分。数据格式。
起始位位置。
数据的长度,以位为单位。
多路复用选项。
起始位位置是相对于所选数据源指定的。位从最低有效位(LSB)开始计数。
一旦数据被提取,可能需要将其转换为应用程序定义的格式。以下参数可用于此目的:
用于将提取的值转换为物理值的各种参数(因子、偏移量、比例)。
预期的数据范围。
数据单位。
QCanSignalDescription类提供了控制所有这些参数的方法。数据字节序处理¶
小端序和大端序数据的编码方式不同。对于大端序值,起始位位置是最高有效位。对于小端序值,起始位置是最低有效位。
让我们考虑两个例子。在这两个例子中,我们将在3字节的有效载荷中编码两个12位的值。
小端序¶
对于小端序的情况,数据布局可以用以下图像表示:
这里列表示位号,行表示字节号。
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
大端序¶
下图表示大端情况下的值布局:
这些值可以在
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:
创建一个信号描述,其值从
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:
字符串
返回信号的注释。
此参数仅用于额外描述。在信号处理过程中不使用。
另请参阅
返回信号值的数据字节序。
默认情况下,使用BigEndian。
- dataFormat()¶
- Return type:
返回信号值的数据格式。
默认情况下,使用
SignedInteger。- dataSource()¶
- Return type:
返回信号值的数据源。
默认情况下,使用
Payload。- factor()¶
- Return type:
浮点数
返回用于将信号值转换为物理值并转换回来的因子。
默认情况下,函数返回 qQNaN(),这意味着未使用因子。
Value Conversions部分解释了如何使用此参数。另请参阅
- isValid()¶
- Return type:
布尔
当信号描述有效时返回
true,否则返回false。一个有效的信号描述必须满足以下条件:
有一个非空的
name()如果
dataFormat()是Float,则bitLength()== 32如果
dataFormat()是Double,则bitLength()== 64如果
dataFormat()是AsciiString,则bitLength()必须是8的倍数the
bitLength()必须 大于0并且小于或等于64。
- maximum()¶
- Return type:
浮点数
返回信号支持的最大值。
默认情况下,函数返回 qQNaN(),这意味着没有最大值。
另请参阅
- minimum()¶
- Return type:
浮点数
返回信号支持的最小值。
默认情况下,函数返回 qQNaN(),这意味着没有最小值。
另请参阅
- multiplexSignals()¶
- Return type:
.QHashQString, QCanSignalDescription.MultiplexValueRange的列表
返回用于正确识别此信号的
multiplexor signals及其期望值。返回的哈希包含信号名称作为键和相应的期望值范围作为值。
只有当哈希中的所有信号都具有预期值时,才能从有效载荷中提取此信号的值。
- multiplexState()¶
- Return type:
返回信号的多路复用状态。
有关多路复用信号的更多详细信息,请参见
Multiplexed Signals Explained部分。默认情况下,此方法返回
None。- name()¶
- Return type:
字符串
返回信号的名称。
- offset()¶
- Return type:
浮点数
返回用于将信号值转换为物理值并转换回来的偏移量。
默认情况下,函数返回 qQNaN(),这意味着不使用偏移量。
Value Conversions部分解释了如何使用此参数。另请参阅
- physicalUnit()¶
- Return type:
字符串
返回信号值的物理单位(例如 km/h),如果未设置单位,则返回空字符串。
此参数仅用于额外描述。在信号处理过程中不使用。
另请参阅
- receiver()¶
- Return type:
字符串
返回此信号的接收节点。
此参数仅用于额外描述。在信号处理过程中不使用。
另请参阅
- scaling()¶
- Return type:
浮点数
返回用于将信号值转换为物理值并返回的缩放比例。
默认情况下,函数返回 qQNaN(),这意味着不使用缩放。
Value Conversions部分解释了如何使用此参数。另请参阅
- setBitLength(length)¶
- Parameters:
长度 – int
将信号值的位长度设置为
length。- setComment(text)¶
- Parameters:
文本 – str
将信号的注释设置为
text。此参数仅用于额外描述。在信号处理过程中不使用。
另请参阅
将信号值的数据字节序设置为
endian。另请参阅
dataEndian()Endian- setDataFormat(format)¶
- Parameters:
格式 –
DataFormat
将信号值的数据格式设置为
format。另请参阅
- setDataSource(source)¶
- Parameters:
来源 –
DataSource
将信号值的数据源设置为
source。另请参阅
- 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消息中必须是唯一的。
另请参阅
- setOffset(offset)¶
- Parameters:
offset – 浮点数
设置用于将信号值转换为物理值并返回到
offset的偏移量。将qQNaN()传递给此方法以在转换期间跳过此参数。
Value Conversions部分解释了如何使用此参数。- setPhysicalUnit(unit)¶
- Parameters:
单位 – str
设置信号值的物理
单位(例如 km/h)。此参数仅用于额外描述。在信号处理过程中不使用。
另请参阅
- setRange(minimum, maximum)¶
- Parameters:
最小值 – float
maximum – 浮点数
设置信号值的
最小值和最大值。将一个或两个参数设置为qQNaN()意味着将不使用相应的限制。
- setReceiver(receiver)¶
- Parameters:
receiver – str
设置此信号的
receiver节点。此参数仅用于额外描述。在信号处理过程中不使用。
另请参阅
- setScaling(scaling)¶
- Parameters:
缩放 – float
设置用于将信号值转换为物理值并返回到
scaling的缩放比例。将qQNaN()传递给此方法以在转换期间跳过此参数。
缩放比例不能为0。尝试将缩放比例设置为零等同于将其设置为qQNaN()。
Value Conversions部分解释了如何使用此参数。- setStartBit(bit)¶
- Parameters:
bit – 整数
将信号值在
dataSource()中的起始位设置为bit。- startBit()¶
- Return type:
整数
返回信号值在
dataSource()中的起始位。- swap(other)¶
- Parameters:
- class MultiplexValueRange¶
概要¶
方法¶
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
- PySide6.QtSerialBus.QCanSignalDescription.MultiplexValueRange.minimum¶
- PySide6.QtSerialBus.QCanSignalDescription.MultiplexValueRange.maximum¶
- __ne__(rhs)¶
- Parameters:
rhs –
MultiplexValueRange- Return type:
布尔
- __eq__(rhs)¶
- Parameters:
rhs –
MultiplexValueRange- Return type:
布尔