PySide6.QtSerialBus.QCanFrameProcessor¶
- class QCanFrameProcessor¶
The
QCanFrameProcessor
class can be used to decode aQCanBusFrame
or to convert the input data into aQCanBusFrame
that is ready to be sent to the receiver. More…Synopsis¶
Methods¶
def
__init__()
def
error()
def
errorString()
def
parseFrame()
def
prepareFrame()
def
warnings()
Note
This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE
Detailed Description¶
The
QCanFrameProcessor
class operates on the CAN message descriptions (represented by theQCanMessageDescription
andQCanSignalDescription
classes) and a unique identifier description (represented byQCanUniqueIdDescription
). It uses the descriptions to decode the incomingQCanBusFrame
or to encode the user-specified data into the proper payload.Before doing any decoding or encoding, the
QCanFrameProcessor
instance must be initialized properly. The following data needs to be provided:A
valid
unique identifier description. Use thesetUniqueIdDescription()
method to provide a proper description.At least one message description. Use the
addMessageDescriptions()
orsetMessageDescriptions()
method to provide message descriptions. All message descriptions must have distinct unique identifiers. Each message can contain multiple signal descriptions, but signal names within one message must be unique as well.
The
parseFrame()
method can be used to process the incomingQCanBusFrame
. The method returns aParseResult
structure which contains the unique identifier and the signal values map. The keys of the map are thesignal names
, and the values of the map are signal values.The
prepareFrame()
method can be used to generate aQCanBusFrame
object for a specific unique identifier, using the provided signal names and desired values.Errors can occur during the encoding or decoding process. In such cases the
error()
anderrorString()
methods can be used to get the information about the error.Some non-critical problems may occur as well. Such problems will be logged, but the process will not be stopped. After the process is completed, the
warnings()
method can be used to access the list of all the warnings.Note
The last error and error description, as well as the warnings, are reset once the decoding or encoding is started.
- class Error¶
This enum represents the possible errors that can occur while encoding or decoding the
QCanBusFrame
.Constant
Description
QCanFrameProcessor.Error.None
No error occurred.
QCanFrameProcessor.Error.InvalidFrame
The received frame is invalid and cannot be parsed.
QCanFrameProcessor.Error.UnsupportedFrameFormat
The format of the received frame is not supported and cannot be parsed.
QCanFrameProcessor.Error.Decoding
An error occurred during decoding. Use
errorString()
to get a string representation of the error.QCanFrameProcessor.Error.Encoding
An error occurred during encoding. Use
errorString()
to get a string representation of the error.
- __init__()¶
Creates a CAN frame processor.
- addMessageDescriptions(descriptions)¶
- Parameters:
descriptions – .list of QCanMessageDescription
Adds new message descriptions
descriptions
to the available message descriptions.All message descriptions should have distinct unique ids.
If some message descriptions have repeated unique ids, only the last description will be used.
If the parser already had a message description with the same unique id, it will be overwritten.
- clearMessageDescriptions()¶
Removes all message descriptions for this frame processor.
Returns the last error.
See also
- errorString()¶
- Return type:
str
Returns the text description of the last error.
See also
- messageDescriptions()¶
- Return type:
.list of QCanMessageDescription
Returns all the message descriptions that are currently used by this frame processor.
- parseFrame(frame)¶
- Parameters:
frame –
QCanBusFrame
- Return type:
ParseResult
Parses the frame
frame
using the specified message descriptions.The process of parsing is as follows:
The
uniqueIdDescription()
is used to extract the unique identifier of the message.The extracted unique identifier is used to search for a suitable
QCanMessageDescription
from the list of all availablemessageDescriptions()
.The matching
QCanMessageDescription
is used to extract the signal values from the frame.
This method returns a
ParseResult
, which contains both the extracted unique identifier and a QVariantMap with the signals and their values. The keys of the map are thesignal names
, and the values of the map are signal values.If an error occurred during the decoding, a result with empty signalValues is returned. In such cases, the
error()
anderrorString()
methods can be used to get information about the errors.Note
Calling this method clears all previous errors and warnings.
- prepareFrame(uniqueId, signalValues)¶
- Parameters:
uniqueId –
UniqueId
signalValues – Dictionary with keys of type .QString and values of type QVariant.
- Return type:
Constructs a CAN data frame, using
uniqueId
andsignalValues
and returns the constructedQCanBusFrame
.The
signalValues
parameter must contain signal names as keys, and expected signal values as values.The process of creating the frame is as follows:
The
uniqueId
is used to find an appropriate message description.If the message description is found, a
QCanBusFrame
with a payload of the specified size is created. All bytes of the payload, as well as the frame id, are initialized to zeros.The
uniqueIdDescription()
is used to encode theuniqueId
into the appropriate part of the frame (frame id or payload).The selected message description is used to encode all the
signalValues
into the frame.The parts of the frame that are not covered by a unique id or existing signal descriptions are untouched (and so still contain zeros).
If an error occurred during the encoding, an invalid
QCanBusFrame
is returned. In such cases, theerror()
anderrorString()
methods can be used to get information about the errors.Note
Calling this method clears all previous errors and warnings.
- setMessageDescriptions(descriptions)¶
- Parameters:
descriptions – .list of QCanMessageDescription
Replaces current message descriptions used by this frame processor with the new message descriptions
descriptions
.- setUniqueIdDescription(description)¶
- Parameters:
description –
QCanUniqueIdDescription
Sets the unique identifier description to
description
.The unique identifier description must be valid in order to encode or decode the CAN bus frames. See the
QCanUniqueIdDescription
class documentation for more details.- uniqueIdDescription()¶
- Return type:
Returns the unique identifier description.
The unique identifier description must be valid in order to encode or decode the CAN bus frames. See the
QCanUniqueIdDescription
class documentation for more details.- warnings()¶
- Return type:
list of strings
Returns the list of warnings generated during the last encoding or decoding call.
See also