PySide6.QtSerialBus.QCanBusDevice

class QCanBusDevice

QCanBusDevice 类是 CAN 总线的接口类。More_

PySide6.QtSerialBus.QCanBusDevice 的继承图

概要

方法

虚拟方法

信号

静态函数

注意

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

详细描述

QCanBusDevice 与一个CAN插件通信,为用户提供方便的API。CAN插件必须在对象创建时指定。

class CanBusError

此枚举描述了所有可能的错误情况。

常量

描述

QCanBusDevice.NoError

没有发生错误。

QCanBusDevice.ReadError

在读取操作期间发生了错误。

QCanBusDevice.WriteError

在写操作期间发生错误。

QCanBusDevice.ConnectionError

尝试打开插件时发生错误。

QCanBusDevice.ConfigurationError

尝试设置配置参数时发生错误。

QCanBusDevice.UnknownError

发生了一个未知错误。

QCanBusDevice.OperationError

尝试执行操作时,设备处于不允许该操作的状态。此枚举在Qt 5.14中引入。

QCanBusDevice.TimeoutError

在等待写入或接收的帧时发生了超时。此枚举在Qt 5.14中引入。

class CanBusDeviceState

此枚举描述了所有可能的设备状态。

常量

描述

QCanBusDevice.UnconnectedState

设备已断开连接。

QCanBusDevice.ConnectingState

设备正在连接中。

QCanBusDevice.ConnectedState

设备已连接到CAN总线。

QCanBusDevice.ClosingState

设备正在关闭。

class CanBusStatus

此枚举描述了可能的CAN总线状态值。

常量

描述

QCanBusDevice.CanBusStatus.Unknown

CAN总线状态未知(例如,CAN插件不支持)。

QCanBusDevice.CanBusStatus.Good

CAN控制器完全正常运行

QCanBusDevice.CanBusStatus.Warning

CAN控制器处于警告状态

QCanBusDevice.CanBusStatus.Error

CAN控制器处于错误状态(不再发送CAN帧)

QCanBusDevice.CanBusStatus.BusOff

CAN控制器处于总线关闭状态(与CAN总线断开连接)

class ConfigurationKey

此枚举描述了CAN总线连接的可能配置选项。

常量

描述

QCanBusDevice.RawFilterKey

此配置决定了当前设备接受的CAN总线帧的类型。预期值为QList。传递一个空列表将清除所有先前设置的过滤器,包括默认过滤器。更多详情请参见Filter

QCanBusDevice.ErrorFilterKey

此键定义了应通过当前连接转发的错误类型。关联值应为FrameErrors类型。

QCanBusDevice.LoopbackKey

此键定义了CAN总线设备是否应在回环模式下运行。回环意味着,每当在CAN总线上传输一个CAN帧时,该帧的本地回显将发送到连接到此CAN设备的所有应用程序。此键的预期值为bool

QCanBusDevice.ReceiveOwnKey

此键定义此CAN设备是否接收其自己发送的帧。这可以用于检查传输是否成功。此键的预期值为bool

QCanBusDevice.BitRateKey

此键定义了CAN的比特率,单位为每秒比特数。如果hasBitrateSwitch()被设置,使用CAN FD时,有效载荷可以以更高的数据比特率传输。在这种情况下,QCanBusDevice::BitRateKey仅用于CAN ID仲裁阶段。另请参阅QCanBusDevice::DataBitRateKey

QCanBusDevice.CanFdKey

此键定义是否应启用CAN FD帧的发送和接收。此键的预期值为bool

QCanBusDevice.DataBitRateKey

此键定义了CAN FD有效载荷的比特率,单位为每秒比特数。CAN FD允许在仲裁阶段以标称比特率完成后,以更高的数据比特率传输带有hasBitrateSwitch()标志的帧的有效载荷。此枚举值在Qt 5.9中引入。另请参见QCanBusDevice::BitRateKey

QCanBusDevice.ProtocolKey

此键允许指定另一个协议。目前,此参数只能在SocketCAN插件中设置和使用。此枚举值在Qt 5.14中引入。

QCanBusDevice.UserKey

此键定义了自定义键的起始范围。其最常见的用途是允许特定于平台的配置选项。

class Direction

(继承自 enum.Flag) 此枚举描述了可能的数据传输方向。

常量

描述

QCanBusDevice.Input

输入方向。

QCanBusDevice.Output

输出方向。

QCanBusDevice.AllDirections

双向,输入和输出。

__init__([parent=None])
Parameters:

父对象QObject

使用指定的parent构造一个串行总线设备。

busStatus()
Return type:

CanBusStatus

返回当前CAN总线状态。如果无法请求状态,则返回QCanBusDevice::UnknownStatus。

注意

此功能可能未在所有CAN插件中实现。请参阅插件的帮助页面以获取更多信息。函数hasBusStatus()可以在运行时用于检查所使用的CAN插件是否支持请求CAN总线状态。

clear([direction=QCanBusDevice.Direction.AllDirections])
Parameters:

directionDirection 的组合

清除设备的输入或输出缓冲区,取决于 direction

此函数仅对QCanBusDevice缓冲区进行操作。已经写入CAN驱动程序或CAN硬件层的帧,或者尚未从这些层读取的帧,不会被此函数清除。

注意

清除输出缓冲区仅适用于缓冲设备。

clearError()

清除错误ID和最后一个设备错误的人类可读描述。

CAN总线实现必须使用此函数来更新设备的错误状态。

abstract close()

此函数负责关闭CAN总线连接。实现必须确保实例的state()设置为UnconnectedState

此函数最重要的任务是关闭与CAN设备的套接字并调用setState()

另请参阅

disconnectDevice()

configurationKeys()
Return type:

QCanBusDevice.ConfigurationKey 的列表

返回CAN总线连接使用的键列表。

键的含义等同于ConfigurationKey。如果未明确提及某个键,则使用平台对该相关键的默认设置。

configurationParameter(key)
Parameters:

keyConfigurationKey

Return type:

对象

返回当前分配给ConfigurationKey key的值;否则返回无效的QVariant。

connectDevice()
Return type:

布尔

将设备连接到CAN总线。成功时返回true;否则返回false

此函数在其实现中调用了open()

另请参阅

disconnectDevice()

static createDeviceInfo(plugin, name, isVirtual, isFlexibleDataRateCapable)
Parameters:
  • plugin – str

  • name – str

  • isVirtual – 布尔值

  • isFlexibleDataRateCapable – bool

Return type:

QCanBusDeviceInfo

static createDeviceInfo(plugin, name, serialNumber, description, alias, channel, isVirtual, isFlexibleDataRateCapable)
Parameters:
  • plugin – str

  • name – str

  • serialNumber – str

  • 描述 – str

  • alias – str

  • channel – 整数

  • isVirtual – 布尔值

  • isFlexibleDataRateCapable – bool

Return type:

QCanBusDeviceInfo

dequeueOutgoingFrame()
Return type:

QCanBusFrame

从内部传出帧列表中返回下一个QCanBusFrame;否则返回一个无效的QCanBusFrame。返回的帧将从内部列表中移除。

deviceInfo()
Return type:

QCanBusDeviceInfo

返回当前QCanBusDeviceQCanBusDeviceInfo。如果该函数未由QCanBusDevice的子类实现,则返回默认构造的对象。

disconnectDevice()

将设备从CAN总线断开。

此函数在其实现中调用了close()

注意

只有在connectDevice()返回true时,才应调用此函数。

另请参阅

connectDevice()

enqueueOutgoingFrame(newFrame)
Parameters:

newFrameQCanBusFrame

newFrame 附加到内部传出帧列表中,可以通过 writeFrame() 访问。

子类在写入新帧时必须调用此函数。

enqueueReceivedFrames(newFrames)
Parameters:

newFrames – QCanBusFrame 的列表

newFrames附加到内部帧列表中,可以使用readFrame()访问这些帧,并发出framesReceived()信号。

子类在接收到帧时必须调用此函数。

error()
Return type:

CanBusError

返回最近发生的错误。错误值始终设置为最近发生的错误,并且永远不会被重置。

另请参阅

setError() errorString()

errorOccurred(arg__1)
Parameters:

arg__1CanBusError

当发生错误时,会发出此信号。

errorString()
Return type:

字符串

返回最近发生的设备错误的人类可读描述。

另请参阅

error()

framesAvailable()
Return type:

整数

返回可用帧的数量。如果没有可用的帧,此函数返回0。

framesReceived()

当一个或多个帧被接收时,会发出此信号。应使用readFrame()framesAvailable()来读取这些帧。

framesToWrite()
Return type:

整数

对于缓冲设备,此函数返回等待写入的帧数。对于非缓冲设备,此函数始终返回零。

注意

在CAN驱动程序和CAN硬件层中可能存在额外的缓冲。因此,如果此函数返回零,并不意味着所有CAN帧都已写入CAN总线。

另请参阅

clear() writeFrame()

framesWritten(framesCount)
Parameters:

framesCount – int

每次将一帧数据写入CAN总线时,都会发出此信号。framesCount参数设置为在此数据负载中写入的帧数。

hasBusStatus()
Return type:

布尔

如果CAN插件支持请求CAN总线状态,则返回true。

另请参阅

busStatus()

hasOutgoingFrames()
Return type:

布尔

如果传出帧的内部列表不为空,则返回 true;否则返回 false

abstract interpretErrorFrame(errorFrame)
Parameters:

errorFrameQCanBusFrame

Return type:

字符串

frame 解释为错误帧,并返回人类可读的错误描述。

如果 frame 不是一个错误帧,返回的字符串为空。

abstract open()
Return type:

布尔

此函数由connectDevice()调用。子类必须提供一个实现,如果CAN总线连接可以建立,则返回true;否则返回falseQCanBusDevice实现确保在进入此函数时,设备的state()已设置为ConnectingState

实现必须确保在成功时实例的state()设置为ConnectedState;否则设置为UnconnectedState。必须使用setState()来设置新的设备状态。

自定义实现负责打开套接字,实例化可能需要的QSocketNotifier,并应用自定义和默认的configurationParameter()

另请参阅

connectDevice()

readAllFrames()
Return type:

QCanBusFrame的列表

返回队列中的所有QCanBusFrame;否则返回一个空的QList。返回的帧将从队列中移除。

队列按照先进先出的原则操作。

readFrame()
Return type:

QCanBusFrame

返回队列中的下一个QCanBusFrame;否则返回一个空的QCanBusFrame。返回的帧将从队列中移除。

队列按照先进先出原则运行。

resetController()

执行CAN控制器复位以将CAN控制器从总线关闭状态释放,如果可能的话。

注意

CAN控制器复位会干扰正在进行的通信,可能需要长达一秒钟才能完成。仅在从总线错误中恢复时调用此函数。

注意

此功能可能未在所有CAN插件中实现。请参阅插件的帮助页面以获取更多信息。

另请参阅

busStatus()

setConfigurationParameter(key, value)
Parameters:

设置CAN总线连接的配置参数keyvalue。可能的键由ConfigurationKey表示。

可以通过设置无效的QVariant来取消设置参数。取消设置参数意味着配置将重置为其默认设置。

注意

在大多数情况下,配置更改仅在重新连接后生效。

setError(errorText, errorId)
Parameters:

将最后一个设备错误的人类可读描述设置为errorTexterrorId对错误类型进行分类。

CAN总线实现必须使用此函数来更新设备的错误状态。

setState(newState)
Parameters:

newStateCanBusDeviceState

将设备的状态设置为newState。CAN总线实现必须使用此函数来更新设备状态。

另请参阅

state()

state()
Return type:

CanBusDeviceState

返回设备的当前状态。

另请参阅

setState() stateChanged()

stateChanged(state)
Parameters:

状态CanBusDeviceState

每次设备状态发生变化时都会发出此信号。新状态由state表示。

另请参阅

setState() state()

waitForFramesReceived(msecs)
Parameters:

msecs – 整数

Return type:

布尔

阻塞直到有新帧可供读取并且framesReceived()信号已发出,或者直到msecs毫秒过去。如果msecs-1,此函数将不会超时。

如果有新的帧可用于读取并且framesReceived()信号被发出,则返回true;否则返回false(如果操作超时或发生错误)。

注意

此函数将启动一个本地事件循环。这可能会导致在执行此函数作用域阻塞时调用其他应用程序槽。为了避免问题,此类的信号不应连接到槽。同样,此函数绝不能响应framesReceived()errorOccurred()信号而被调用。

另请参阅

waitForFramesWritten()

waitForFramesWritten(msecs)
Parameters:

msecs – 整数

Return type:

布尔

对于缓冲设备,此函数会等待直到所有缓冲帧都已写入设备并且framesWritten()信号已发出,或者直到msecs毫秒过去。如果msecs为-1,此函数将不会超时。对于无缓冲设备,它会立即返回false,因为writeFrame()不需要写缓冲区。

如果发出framesWritten()信号,则返回true;否则返回false(即如果操作超时或发生错误)。

注意

此函数将启动一个本地事件循环。这可能会导致在执行此函数作用域阻塞时调用其他应用程序槽。为了避免问题,此类的信号不应连接到槽。同样,此函数绝不能响应framesWritten()errorOccurred()信号调用。

abstract writeFrame(frame)
Parameters:

QCanBusFrame

Return type:

布尔

frame写入CAN总线,成功时返回true;否则返回false

在某些平台上,帧可能会被放入队列中,返回值可能仅表示成功插入队列。实际的帧将在稍后发送。因此,framesWritten()信号是帧已移交到传输层的最终确认。如果发生错误,则会发出errorOccurred()信号。

根据CAN总线规范,类型为remote transfer request (RTR)的帧没有有效载荷,但长度从0到8(包括)。这个长度表示远程方预期的响应有效载荷长度。因此,当使用此函数发送RTR帧时,可能仍然需要在frame上设置任意有效载荷。任意有效载荷的长度即为RTR帧的大小预期。

另请参阅

setPayload()

class Filter

概要

方法

注意

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

详细描述

class FormatFilter

(继承自 enum.Flag) 此枚举描述了用于过滤传入CAN总线帧的格式模式。

常量

描述

QCanBusDevice.Filter.MatchBaseFormat

CAN总线帧必须使用基本帧格式(11位标识符)。

QCanBusDevice.Filter.MatchExtendedFormat

CAN总线帧必须使用扩展帧格式(29位标识符)。

QCanBusDevice.Filter.MatchBaseAndExtendedFormat

CAN总线帧可以具有基本或扩展帧格式。

PySide6.QtSerialBus.QCanBusDevice.Filter.frameId
PySide6.QtSerialBus.QCanBusDevice.Filter.frameIdMask
PySide6.QtSerialBus.QCanBusDevice.Filter.type
PySide6.QtSerialBus.QCanBusDevice.Filter.format
__ne__(b)
Parameters:

bFilter

Return type:

布尔

如果过滤器 a 不等于过滤器 b,则返回 true,否则返回 false

__eq__(b)
Parameters:

bFilter

Return type:

布尔

如果过滤器 a 等于过滤器 b,则返回 true,否则返回 false