PySide6.QtSerialBus.QCanBusFrame¶
- class QCanBusFrame¶
QCanBusFrame是一个表示单个CAN帧的容器类。更多_…概要¶
方法¶
def
__init__()def
error()def
frameId()def
frameType()def
hasLocalEcho()def
isValid()def
payload()def
setError()def
setFrameId()def
setFrameType()def
setLocalEcho()def
setPayload()def
setTimeStamp()def
timeStamp()def
toString()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
QCanBusDevice可以使用QCanBusFrame进行读写操作。它包含帧标识符和数据负载。QCanBusFrame包含读取时的时间戳。另请参阅
- 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
匹配所有其他错误类型。
另请参阅
- class Version¶
构造指定
type的CAN帧。另请参阅
- __init__(identifier, data)
- Parameters:
identifier – 整数
data –
QByteArray
使用
identifier作为帧标识符和data作为有效载荷来构建CAN帧。- error()¶
- Return type:
FrameError的组合
返回当前错误帧的错误。如果帧不是
ErrorFrame,此函数返回NoError。另请参阅
- frameId()¶
- Return type:
整数
返回CAN帧标识符。如果CAN帧使用扩展帧格式,标识符最多有29位;否则为11位。
如果框架是
ErrorFrame类型,此ID始终为0。返回帧的类型。
另请参阅
- 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:
返回帧的数据负载。
另请参阅
- setBitrateSwitch(bitrateSwitch)¶
- Parameters:
bitrateSwitch – 布尔值
将灵活数据速率标志比特率切换标志设置为
bitrateSwitch。带有此标志的帧的数据字段以更高的数据比特率传输。- setError(e)¶
- Parameters:
e –
FrameError的组合
设置帧的
error类型。如果frameType()不是ErrorFrame,则此函数不执行任何操作。另请参阅
- 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扩展帧格式设置不会改变。将帧的类型设置为
newType。另请参阅
- setLocalEcho(localEcho)¶
- Parameters:
localEcho – 布尔值
将本地回显标志设置为
echo。当启用
ReceiveOwnKey发送CAN总线帧时,所有成功发送的帧都会回显到接收队列,并标记为本地回显帧。因此,QCanBusFrame::setLocalEcho应仅用于应用程序测试,例如在虚拟CAN总线上。另请参阅
- 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));
将
ts设置为CAN帧的时间戳。通常,不需要使用此函数,因为时间戳是在读取操作期间创建的,在写入操作期间不需要。另请参阅
timeStamp()时间戳返回帧的时间戳。
另请参阅
时间戳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_…概要¶
方法¶
def
__init__()def
microSeconds()def
seconds()
静态函数¶
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
- __init__([s=0[, usec=0]])¶
- Parameters:
s – 整数
usec – int
构造一个以秒为单位的
TimeStamp,s,和以微秒为单位的usec。注意
TimeStamp未进行标准化处理,即大于1000000的微秒数不会转换为秒。从微秒
usec构造一个标准化的TimeStamp。创建的
TimeStamp是标准化的,即大于1000000的微秒被转换为秒。- microSeconds()¶
- Return type:
整数
返回时间戳的微秒部分。
- seconds()¶
- Return type:
整数
返回时间戳的秒数。