- class QCanBusDevice#
类的
QCanBusDevice
是 CAN 总线的接口类。了解更多…摘要
方法
def
__init__()
def
clear()
def
clearError()
定义
error()
定义
readFrame()
定义
setError()
定义
setState()
定义
state()
虚方法#
定义
busStatus()
定义
close()
定义
deviceInfo()
定义
open()
定义
writeFrame()
信号#
静态函数#
注意
此文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译问题,您也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单来让我们知道。
详细描述#
QCanBusDevice
与一个 CAN 插件通信,为用户提供便捷的 API。在创建对象期间必须指定 CAN 插件。- 类 CanBusError#
此枚举描述了所有可能的错误条件。
常量
描述
QCanBusDevice.NoError
没有发生错误。
QCanBusDevice.ReadError
读操作期间发生错误。
QCanBusDevice.WriteError
写操作期间发生错误。
QCanBusDevice.ConnectionError
尝试打开插件时发生错误。
QCanBusDevice.ConfigurationError
尝试设置配置参数时发生错误。
QCanBusDevice.UnknownError
发生了未知错误。
QCanBusDevice.OperationError
尝试了一个在设备状态不允许时进行的操作。此枚举是在 Qt 5.14 中引入的。
QCanBusDevice.TimeoutError
等待写入或接收帧时发生超时。此枚举是在 Qt 5.14 中引入的。
- 类 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<QCanBusDevice::Filter>
。传递空列表将清除以前设置的所有筛选器,包括默认筛选器。有关更多详细信息,请参阅Filter
。QCanBusDevice.ErrorFilterKey
此密钥定义应通过当前连接转发哪种类型的错误。关联的值应具有类型
FrameErrors
。QCanBusDevice.LoopbackKey
此密钥定义CAN总线设备是否应处于回环模式。回环意味着,只要在CAN总线上发送CAN帧,就会将此帧的本地回声发送到所有连接到此CAN设备的应用程序。此密钥的期望值是
bool
。QCanBusDevice.ReceiveOwnKey
此密钥定义此CAN设备是否接收其发送的帧。可以用来检查传输是否成功。此密钥的期望值是
bool
。QCanBusDevice.BitRateKey
此密钥定义CAN比特率,以每秒比特数计。使用CAN FD时,如果设置了
hasBitrateSwitch()
,则可以在更高速的数据比特率下发送有效载荷。在这种情况下,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
双向,输入和输出。
使用指定的
parent
构造一个串行总线设备。- busStatus()#
- 返回类型::
返回当前的CAN总线状态。如果无法请求状态,则返回 QCanBusDevice::UnknownStatus。
注意
此函数可能不是所有的CAN插件都实现。请参阅插件帮助页面以获取更多信息。可以使用
hasBusStatus()
函数在运行时检查所使用的CAN插件是否支持请求CAN总线状态。根据
direction
清除设备的输入或输出缓冲区。此函数仅操作于
QCanBusDevice
缓冲区。已经写入CAN驱动程序或CAN硬件层的帧,或尚未从这些层中读取的帧,不会被此函数清除。- clearError()#
清除最后一个设备错误的ID和可读描述。
CAN总线实现必须使用此函数来更新设备的状态。
- abstract close()#
该函数负责关闭CAN总线连接。实现必须确保实例的
state()
设置为UnconnectedState
。该函数最重要的任务是关闭与CAN设备的套接字并调用
setState()
。另请参阅
- configurationKeys()#
- 返回类型::
返回CAN总线连接使用的键列表。
键的意义等同于
ConfigurationKey
。如果一个键没有明确提及,则使用平台对该相关键的默认设置。- configurationParameter(key)#
- 参数::
键 –
ConfigurationKey
- 返回类型::
对象
返回分配给
ConfigurationKey
键的当前值;否则返回无效QVariant。- connectDevice()#
- 返回类型::
布尔型
将设备连接到CAN总线。成功时返回
true
;否则返回false
。该函数在其实现中调用
open()
。另请参阅
- static createDeviceInfo(plugin, name, isVirtual, isFlexibleDataRateCapable)#
- 参数::
plugin – 字符串
name – 字符串
isVirtual – 布尔值
isFlexibleDataRateCapable – 布尔值
- 返回类型::
- static createDeviceInfo(plugin, name, serialNumber, description, alias, channel, isVirtual, isFlexibleDataRateCapable)
- 参数::
plugin – 字符串
name – 字符串
serialNumber – 字符串
description – 字符串
alias – 字符串
channel – 整数
isVirtual – 布尔值
isFlexibleDataRateCapable – 布尔值
- 返回类型::
- dequeueOutgoingFrame()#
- 返回类型::
返回内部待发送帧列表中的下一个
QCanBusFrame
;否则返回一个无效的QCanBusFrame
。返回的帧将从内部列表中移除。- deviceInfo()#
- 返回类型::
为当前的
QCanBusDevice
返回一个QCanBusDeviceInfo
。如果该函数没有由QCanBusDevice
的子类实现,则返回一个默认构造的对象。- disconnectDevice()#
断开设备与CAN总线之间的连接。
此函数的实现部分调用了
close()
。- enqueueOutgoingFrame(newFrame)#
- 参数::
newFrame –
QCanBusFrame
将
newFrame
追加到内部 outgoing frames 列表,可以通过writeFrame()
访问。子类在写入新帧时必须调用此函数。
- enqueueReceivedFrames(newFrames)#
- 参数::
newFrames – QCanBusFrame 列表
将
newFrames
追加到内部 frames 列表,可以使用readFrame()
访问,并触发framesReceived()
信号。子类在接收到帧时必须调用此函数。
- error()#
- 返回类型::
返回上次发生的错误。错误值始终设置为上次发生的最后一个错误,并且永远不会重置。
另请参阅
- errorOccurred(arg__1)#
- 参数::
arg__1 –
CanBusError
当发生错误时,会发出此信号。
- errorString()#
- 返回类型::
str
返回上次发生的设备错误的可读描述。
另请参阅
- framesAvailable()#
- 返回类型::
int
返回可用帧的数量。如果没有可用帧,此函数返回 0。
- framesReceived()#
当接收到一个或多个帧时,会发出此信号。应使用
readFrame()
和framesAvailable()
来读取帧。- framesToWrite()#
- 返回类型::
int
对于缓冲设备,此函数返回等待写入的帧数。对于非缓冲设备,此函数始终返回零。
- framesWritten(framesCount)#
- 参数::
framesCount – int
每次将帧的有效负载写入CAN总线时,都会发出此信号。在这次有效负载中写入的帧数由
framesCount
参数设置。- hasBusStatus()#
- 返回类型::
布尔型
如果CAN插件支持请求CAN总线状态,则返回true。
另请参阅
- hasOutgoingFrames()#
- 返回类型::
布尔型
如果内部要发送的帧列表不为空,则返回
true
;否则返回false
。- abstract interpretErrorFrame(errorFrame)#
- 参数::
errorFrame –
QCanBusFrame
- 返回类型::
str
将
frame
解释为错误帧,并返回错误的人读描述。如果
frame
不是一个错误帧,则返回的字符串为空。- abstract open()#
- 返回类型::
布尔型
此函数通过
connectDevice()
调用。子类必须提供一个返回true
(如果CAN总线连接可以建立)或false
的实现。在调用此函数时,QCanBusDevice
实现确保设备的状态显示为ConnectingState
。实现必须确保在成功的情况下,实例的
state()
设置为ConnectedState
;否则设置为UnconnectedState
。必须使用setState()
来设置新的设备状态。自定义实现负责打开套接字、QSocketNotifier的实例化,以及应用自定义和默认的
configurationParameter()
。- readAllFrames()#
- 返回类型::
列表 QCanBusFrame
返回队列中的所有
QCanBusFrame
;否则返回一个空的 QList。返回的帧将从队列中移除。队列按照先进先出的原则运作。
- readFrame()#
- 返回类型::
从队列中返回下一个
QCanBusFrame
;否则返回一个空的QCanBusFrame
。返回的帧将从队列中移除。队列按照先进先出的原则运作。
- resetController()#
执行CAN控制器重置以将CAN控制器从离线状态释放,如果可能的话。
注意
CAN控制器重置可能会干扰运行中的通信,并且可能需要一秒钟的时间才能完成。只有在此函数以恢复总线错误时调用此函数。
- setConfigurationParameter(key, value)#
- 参数::
键 –
ConfigurationKey
value – 对象
将CAN总线连接的配置参数
key
设置为value
。可能的键表示为ConfigurationKey
。通过设置无效的QVariant可以取消设置参数。取消设置参数表示配置将重置为其默认设置。
- setError(errorText, arg__2)#
- 参数::
errorText – 字符串
arg__2 –
CanBusError
将最后设备错误的可读描述设置为
errorText
。代码errorId
将错误类型分类。CAN总线实现必须使用此函数来更新设备的状态。
- setState(newState)#
- 参数::
newState –
CanBusDeviceState
将设备的设置为
newState
。CAN总线实现必须使用此函数来更新设备状态。另请参阅
- 状态()#
- 返回类型::
返回设备的当前状态。
另请参阅
- stateChanged(状态)#
- 参数::
状态 –
CanBusDeviceState
每当设备状态改变时,都会发出此信号。新的状态由
状态
表示。另请参阅
- waitForFramesReceived(msecs)#
- 参数::
msecs – int
- 返回类型::
布尔型
阻塞直读到有新的帧可用于读取,且
framesReceived()
信号已发出,或直到msecs
毫秒已过。如果msecs
是-1
,则该函数不会超时。如果有新的帧可供读取且
framesReceived()
信号已发出,则返回true
;否则返回false
(如果操作超时或发生错误)。注意
此函数将启动本地事件循环。这可能导致在执行此函数作用域阻止的同时调用其他应用程序槽。为了避免问题,此类的信号不应连接到槽。类似地,此函数永远不应在响应
framesReceived()
或errorOccurred()
信号时使用。- waitForFramesWritten(msecs)#
- 参数::
msecs – int
- 返回类型::
布尔型
对于缓冲设备,此函数将等待直到所有缓冲帧都写入到设备,并且已发射
framesWritten()
信号,或直到msecs
毫秒已过。如果msecs
是 -1,则此函数不会超时。对于非缓冲设备,它将立即返回false
,因为writeFrame()
不需要写缓冲区。如果已发射
framesWritten()
信号,则返回true
;否则返回false
(即如果操作超时或发生错误)。注意
此函数将启动本地事件循环。这可能导致在执行此函数的作用域时调用其他应用程序槽。为了避免问题,此类的信号不应连接到槽。类似地,永不应在
framesWritten()
或errorOccurred()
信号响应中调用此函数。- 抽象 writeFrame(frame)#
- 参数::
frame –
QCanBusFrame
- 返回类型::
布尔型
将
frame
写入 CAN 总线并成功时返回true
;否则返回false
。在某些平台上,帧可能被放入队列,返回值可能仅表示成功插入队列。实际的帧将在稍后发送。因此,
framesWritten()
信号是帧已转交给传输层的最终确认。如果发生错误则发射errorOccurred()
。根据CAN总线规范,类型
远程传输请求 (RTR)
的帧没有负载,但长度从0到8(包括)。这个长度表示远程方期望的响应负载长度。因此,当使用此函数发送RTR帧时,仍然可能需要向frame
设置任意负载。任意负载的长度就是作为RTR帧大小期望设置的。另请参阅