PySide6.QtSerialBus.QCanBusDevice¶
- class QCanBusDevice¶
QCanBusDevice类是 CAN 总线的接口类。More_…概要¶
方法¶
def
__init__()def
clear()def
clearError()def
connectDevice()def
error()def
errorString()def
framesToWrite()def
readAllFrames()def
readFrame()def
setError()def
setState()def
state()
虚拟方法¶
def
busStatus()def
close()def
deviceInfo()def
hasBusStatus()def
open()def
writeFrame()
信号¶
def
errorOccurred()def
framesReceived()def
framesWritten()def
stateChanged()
静态函数¶
注意
本文档可能包含从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::DataBitRateKeyQCanBusDevice.CanFdKey
此键定义是否应启用CAN FD帧的发送和接收。此键的预期值为
bool。QCanBusDevice.DataBitRateKey
此键定义了CAN FD有效载荷的比特率,单位为每秒比特数。CAN FD允许在仲裁阶段以标称比特率完成后,以更高的数据比特率传输带有
hasBitrateSwitch()标志的帧的有效载荷。此枚举值在Qt 5.9中引入。另请参见QCanBusDevice::BitRateKeyQCanBusDevice.ProtocolKey
此键允许指定另一个协议。目前,此参数只能在SocketCAN插件中设置和使用。此枚举值在Qt 5.14中引入。
QCanBusDevice.UserKey
此键定义了自定义键的起始范围。其最常见的用途是允许特定于平台的配置选项。
- class Direction¶
(继承自
enum.Flag) 此枚举描述了可能的数据传输方向。常量
描述
QCanBusDevice.Input
输入方向。
QCanBusDevice.Output
输出方向。
QCanBusDevice.AllDirections
双向,输入和输出。
使用指定的
parent构造一个串行总线设备。- busStatus()¶
- Return type:
返回当前CAN总线状态。如果无法请求状态,则返回QCanBusDevice::UnknownStatus。
注意
此功能可能未在所有CAN插件中实现。请参阅插件的帮助页面以获取更多信息。函数
hasBusStatus()可以在运行时用于检查所使用的CAN插件是否支持请求CAN总线状态。清除设备的输入或输出缓冲区,取决于
direction。此函数仅对
QCanBusDevice缓冲区进行操作。已经写入CAN驱动程序或CAN硬件层的帧,或者尚未从这些层读取的帧,不会被此函数清除。- clearError()¶
清除错误ID和最后一个设备错误的人类可读描述。
CAN总线实现必须使用此函数来更新设备的错误状态。
- abstract close()¶
此函数负责关闭CAN总线连接。实现必须确保实例的
state()设置为UnconnectedState。此函数最重要的任务是关闭与CAN设备的套接字并调用
setState()。另请参阅
- configurationKeys()¶
- Return type:
返回CAN总线连接使用的键列表。
键的含义等同于
ConfigurationKey。如果未明确提及某个键,则使用平台对该相关键的默认设置。- configurationParameter(key)¶
- Parameters:
key –
ConfigurationKey- Return type:
对象
返回当前分配给
ConfigurationKeykey的值;否则返回无效的QVariant。- connectDevice()¶
- Return type:
布尔
将设备连接到CAN总线。成功时返回
true;否则返回false。此函数在其实现中调用了
open()。另请参阅
- static createDeviceInfo(plugin, name, isVirtual, isFlexibleDataRateCapable)¶
- Parameters:
plugin – str
name – str
isVirtual – 布尔值
isFlexibleDataRateCapable – bool
- Return type:
- 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:
- dequeueOutgoingFrame()¶
- Return type:
从内部传出帧列表中返回下一个
QCanBusFrame;否则返回一个无效的QCanBusFrame。返回的帧将从内部列表中移除。- deviceInfo()¶
- Return type:
返回当前
QCanBusDevice的QCanBusDeviceInfo。如果该函数未由QCanBusDevice的子类实现,则返回默认构造的对象。- disconnectDevice()¶
将设备从CAN总线断开。
此函数在其实现中调用了
close()。- enqueueOutgoingFrame(newFrame)¶
- Parameters:
newFrame –
QCanBusFrame
将
newFrame附加到内部传出帧列表中,可以通过writeFrame()访问。子类在写入新帧时必须调用此函数。
- enqueueReceivedFrames(newFrames)¶
- Parameters:
newFrames – QCanBusFrame 的列表
将
newFrames附加到内部帧列表中,可以使用readFrame()访问这些帧,并发出framesReceived()信号。子类在接收到帧时必须调用此函数。
- error()¶
- Return type:
返回最近发生的错误。错误值始终设置为最近发生的错误,并且永远不会被重置。
另请参阅
- errorOccurred(arg__1)¶
- Parameters:
arg__1 –
CanBusError
当发生错误时,会发出此信号。
- errorString()¶
- Return type:
字符串
返回最近发生的设备错误的人类可读描述。
另请参阅
- framesAvailable()¶
- Return type:
整数
返回可用帧的数量。如果没有可用的帧,此函数返回0。
- framesReceived()¶
当一个或多个帧被接收时,会发出此信号。应使用
readFrame()和framesAvailable()来读取这些帧。- framesToWrite()¶
- Return type:
整数
对于缓冲设备,此函数返回等待写入的帧数。对于非缓冲设备,此函数始终返回零。
- framesWritten(framesCount)¶
- Parameters:
framesCount – int
每次将一帧数据写入CAN总线时,都会发出此信号。
framesCount参数设置为在此数据负载中写入的帧数。- hasBusStatus()¶
- Return type:
布尔
如果CAN插件支持请求CAN总线状态,则返回true。
另请参阅
- hasOutgoingFrames()¶
- Return type:
布尔
如果传出帧的内部列表不为空,则返回
true;否则返回false。- abstract interpretErrorFrame(errorFrame)¶
- Parameters:
errorFrame –
QCanBusFrame- Return type:
字符串
将
frame解释为错误帧,并返回人类可读的错误描述。如果
frame不是一个错误帧,返回的字符串为空。- abstract open()¶
- Return type:
布尔
此函数由
connectDevice()调用。子类必须提供一个实现,如果CAN总线连接可以建立,则返回true;否则返回false。QCanBusDevice实现确保在进入此函数时,设备的state()已设置为ConnectingState。实现必须确保在成功时实例的
state()设置为ConnectedState;否则设置为UnconnectedState。必须使用setState()来设置新的设备状态。自定义实现负责打开套接字,实例化可能需要的QSocketNotifier,并应用自定义和默认的
configurationParameter()。另请参阅
- readAllFrames()¶
- Return type:
QCanBusFrame的列表
返回队列中的所有
QCanBusFrame;否则返回一个空的QList。返回的帧将从队列中移除。队列按照先进先出的原则操作。
- readFrame()¶
- Return type:
返回队列中的下一个
QCanBusFrame;否则返回一个空的QCanBusFrame。返回的帧将从队列中移除。队列按照先进先出原则运行。
- resetController()¶
执行CAN控制器复位以将CAN控制器从总线关闭状态释放,如果可能的话。
注意
CAN控制器复位会干扰正在进行的通信,可能需要长达一秒钟才能完成。仅在从总线错误中恢复时调用此函数。
- setConfigurationParameter(key, value)¶
- Parameters:
key –
ConfigurationKeyvalue – 对象
设置CAN总线连接的配置参数
key为value。可能的键由ConfigurationKey表示。可以通过设置无效的QVariant来取消设置参数。取消设置参数意味着配置将重置为其默认设置。
- setError(errorText, errorId)¶
- Parameters:
errorText – str
errorId –
CanBusError
将最后一个设备错误的人类可读描述设置为
errorText。errorId对错误类型进行分类。CAN总线实现必须使用此函数来更新设备的错误状态。
- setState(newState)¶
- Parameters:
newState –
CanBusDeviceState
将设备的状态设置为
newState。CAN总线实现必须使用此函数来更新设备状态。另请参阅
- state()¶
- Return type:
返回设备的当前状态。
另请参阅
- stateChanged(state)¶
- Parameters:
状态 –
CanBusDeviceState
每次设备状态发生变化时都会发出此信号。新状态由
state表示。另请参阅
- waitForFramesReceived(msecs)¶
- Parameters:
msecs – 整数
- Return type:
布尔
阻塞直到有新帧可供读取并且
framesReceived()信号已发出,或者直到msecs毫秒过去。如果msecs是-1,此函数将不会超时。如果有新的帧可用于读取并且
framesReceived()信号被发出,则返回true;否则返回false(如果操作超时或发生错误)。注意
此函数将启动一个本地事件循环。这可能会导致在执行此函数作用域阻塞时调用其他应用程序槽。为了避免问题,此类的信号不应连接到槽。同样,此函数绝不能响应
framesReceived()或errorOccurred()信号而被调用。- 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帧的大小预期。另请参阅
- 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¶
如果过滤器
a不等于过滤器b,则返回true,否则返回false。如果过滤器
a等于过滤器b,则返回true,否则返回false。