PySide6.QtSerialBus.QCanBusFrame

class QCanBusFrame

QCanBusFrame 是一个表示单个CAN帧的容器类。更多_

概要

方法

注意

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

详细描述

QCanBusDevice 可以使用 QCanBusFrame 进行读写操作。它包含帧标识符和数据负载。QCanBusFrame 包含读取时的时间戳。

另请参阅

QCanBusFrame::FrameId 时间戳 payload()

class FrameType

此枚举描述了CAN帧的类型。

常量

描述

QCanBusFrame.UnknownFrame

帧类型未知。

QCanBusFrame.DataFrame

该值表示一个数据帧。

QCanBusFrame.ErrorFrame

该值表示一个错误帧。

QCanBusFrame.RemoteRequestFrame

该值表示一个远程请求。

QCanBusFrame.InvalidFrame

此值表示无效的帧。此类型用于错误报告。

class FrameError

(继承 enum.Flag) 此枚举描述了可能的错误类型。

常量

描述

QCanBusFrame.NoError

没有发生错误。

QCanBusFrame.TransmissionTimeoutError

传输已超时。

QCanBusFrame.LostArbitrationError

由于总线上的仲裁丢失,无法发送帧。

QCanBusFrame.ControllerError

控制器遇到错误。

QCanBusFrame.ProtocolViolationError

发生了协议违规。

QCanBusFrame.TransceiverError

发生了收发器错误

QCanBusFrame.MissingAcknowledgmentError

传输未收到确认。

QCanBusFrame.BusOffError

CAN总线已离线。

QCanBusFrame.BusError

发生了CAN总线错误。

QCanBusFrame.ControllerRestartError

控制器重新启动。

QCanBusFrame.UnknownError

发生了一个未知错误。

QCanBusFrame.AnyError

匹配所有其他错误类型。

另请参阅

error() setError()

class Version
__init__([type=QCanBusFrame.FrameType.DataFrame])
Parameters:

类型FrameType

构造指定type的CAN帧。

另请参阅

FrameType setFrameType()

__init__(identifier, data)
Parameters:

使用identifier作为帧标识符和data作为有效载荷来构建CAN帧。

另请参阅

QCanBusFrame::FrameId

error()
Return type:

FrameError 的组合

返回当前错误帧的错误。如果帧不是ErrorFrame,此函数返回NoError

另请参阅

FrameError setError()

frameId()
Return type:

整数

返回CAN帧标识符。如果CAN帧使用扩展帧格式,标识符最多有29位;否则为11位。

如果框架是ErrorFrame类型,此ID始终为0。

frameType()
Return type:

FrameType

返回帧的类型。

另请参阅

FrameType setFrameType()

hasBitrateSwitch()
Return type:

布尔

如果CAN使用灵活数据速率比特率切换以更高的数据比特率传输有效载荷数据,则返回true

hasErrorStateIndicator()
Return type:

布尔

如果CAN使用灵活数据速率并且设置了错误状态指示器,则返回true

此标志由发送器的CAN FD硬件设置,用于指示发送器的错误状态。

hasExtendedFrameFormat()
Return type:

布尔

如果CAN帧使用29位标识符,则返回true;否则返回false,表示使用11位标识符。

hasFlexibleDataRateFormat()
Return type:

布尔

如果CAN帧使用灵活数据速率(允许最多64个数据字节),则返回true,否则返回false,表示最多8个字节的有效载荷。

hasLocalEcho()
Return type:

布尔

如果帧是本地回显帧,即当具有相同内容的帧成功发送到CAN总线时作为回显接收到的帧,则返回true。此标志为应用程序本身发送的帧以及在同一系统上运行的其他应用程序发送的帧设置。

ReceiveOwnKey 必须设置为 true 以接收回显帧。

isValid()
Return type:

布尔

如果frameType()InvalidFrame,或者hasExtendedFrameFormat()未设置尽管frameId()超过11位,或者有效载荷长度超过允许的最大长度(如果启用了Flexible Data-Rate模式则为64字节,如果未启用则为8字节),则返回false。如果frameType()RemoteRequestFrame并且同时启用了Flexible Data-Rate模式,也会返回false

否则此函数返回 true

payload()
Return type:

QByteArray

返回帧的数据负载。

另请参阅

setPayload()

setBitrateSwitch(bitrateSwitch)
Parameters:

bitrateSwitch – 布尔值

灵活数据速率标志比特率切换标志设置为bitrateSwitch。带有此标志的帧的数据字段以更高的数据比特率传输。

setError(e)
Parameters:

eFrameError 的组合

设置帧的error类型。如果frameType()不是ErrorFrame,则此函数不执行任何操作。

另请参阅

FrameError error()

setErrorStateIndicator(errorStateIndicator)
Parameters:

errorStateIndicator – 布尔值

灵活数据速率标志错误状态指示器标志设置为errorStateIndicator

当发送CAN FD帧时,此标志由CAN FD硬件自动设置。QCanBusFrame::setErrorStateIndicator()应仅用于应用程序测试,例如在虚拟CAN FD总线上。

setExtendedFrameFormat(isExtended)
Parameters:

isExtended – 布尔值

将扩展帧格式标志设置为isExtended

setFlexibleDataRateFormat(isFlexibleData)
Parameters:

isFlexibleData – 布尔值

灵活数据速率标志设置为isFlexibleData。这些帧可以在支持的控制器的更高速度下发送。此外,有效载荷长度限制提高到64字节。

setFrameId(newFrameId)
Parameters:

newFrameId – int

将CAN帧的标识符设置为newFrameId

CAN帧标识符的最大大小为11位,通过支持CAN扩展帧格式可以扩展到29位。当给定一个大小超过11位的newFrameId时,CAN扩展帧格式设置会自动设置。

当格式被扩展并且传递了一个最多11位或更少的newFrameId时,CAN扩展帧格式设置不会改变。

setFrameType(newFormat)
Parameters:

newFormatFrameType

将帧的类型设置为 newType

另请参阅

FrameType frameType()

setLocalEcho(localEcho)
Parameters:

localEcho – 布尔值

本地回显标志设置为echo

当启用ReceiveOwnKey发送CAN总线帧时,所有成功发送的帧都会回显到接收队列,并标记为本地回显帧。因此,QCanBusFrame::setLocalEcho应仅用于应用程序测试,例如在虚拟CAN总线上。

另请参阅

hasLocalEcho()

setPayload(data)
Parameters:

数据QByteArray

data设置为CAN帧的有效载荷。有效载荷的最大大小为8字节,通过支持Flexible Data-Rate可以扩展到64字节。如果data包含超过8字节的数据,Flexible Data-Rate标志将自动设置。必须在QCanBusDevice上通过设置CanFdKey来启用Flexible Data-Rate。

类型为RemoteRequestFrame(RTR)的帧没有有效载荷。然而,它们必须提供预期响应有效载荷长度的指示。要设置预期的长度,需要设置一个假的有效载荷,其长度与响应的预期有效载荷长度匹配。一种可能的方法如下:

QCanBusFrame frame(QCanBusFrame::RemoteRequestFrame);
int expectedResponseLength = ...;
frame.setPayload(QByteArray(expectedResponseLength, 0));
setTimeStamp(ts)
Parameters:

ts时间戳

ts设置为CAN帧的时间戳。通常,不需要使用此函数,因为时间戳是在读取操作期间创建的,在写入操作期间不需要。

另请参阅

timeStamp() 时间戳

timeStamp()
Return type:

时间戳

返回帧的时间戳。

另请参阅

时间戳 setTimeStamp()

toString()
Return type:

字符串

返回CAN帧作为格式化字符串。

输出包含CAN标识符的十六进制格式,右对齐至32位,后跟方括号中的数据长度和十六进制格式的有效载荷。

标准标识符用空格填充,而扩展标识符用零填充。

典型的输出有:

(Error)                                  - error frame
     7FF   [1]  01                       - data frame with standard identifier
1FFFFFFF   [8]  01 23 45 67 89 AB CD EF  - data frame with extended identifier
     400  [10]  01 23 45 67 ... EF 01 23 - CAN FD frame
     123   [5]  Remote Request           - remote frame with standard identifier
00000234   [0]  Remote Request           - remote frame with extended identifier
class TimeStamp

TimeStamp 类提供具有微秒精度的时间戳信息。More_

概要

方法

静态函数

注意

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

详细描述

__init__([s=0[, usec=0]])
Parameters:
  • s – 整数

  • usec – int

构造一个以秒为单位的TimeStamps,和以微秒为单位的usec

注意

TimeStamp 未进行标准化处理,即大于1000000的微秒数不会转换为秒。

static fromMicroSeconds(usec)
Parameters:

usec – 整数

Return type:

时间戳

从微秒 usec 构造一个标准化的 TimeStamp

创建的TimeStamp是标准化的,即大于1000000的微秒被转换为秒。

microSeconds()
Return type:

整数

返回时间戳的微秒部分。

seconds()
Return type:

整数

返回时间戳的秒数。