class QCanFrameProcessor

The QCanFrameProcessor class can be used to decode a QCanBusFrame or to convert the input data into a QCanBusFrame that is ready to be sent to the receiver. More

Synopsis

Methods

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 the QCanMessageDescription and QCanSignalDescription classes) and a unique identifier description (represented by QCanUniqueIdDescription ). It uses the descriptions to decode the incoming QCanBusFrame 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 the setUniqueIdDescription() method to provide a proper description.

  • At least one message description. Use the addMessageDescriptions() or setMessageDescriptions() 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 incoming QCanBusFrame . The method returns a ParseResult structure which contains the unique identifier and the signal values map. The keys of the map are the signal names , and the values of the map are signal values.

The prepareFrame() method can be used to generate a QCanBusFrame 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() and errorString() 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.

error()
Return type:

Error

Returns the last error.

errorString()
Return type:

str

Returns the text description of the last error.

messageDescriptions()
Return type:

.list of QCanMessageDescription

Returns all the message descriptions that are currently used by this frame processor.

parseFrame(frame)
Parameters:

frameQCanBusFrame

Return type:

ParseResult

Parses the frame frame using the specified message descriptions.

The process of parsing is as follows:

  1. The uniqueIdDescription() is used to extract the unique identifier of the message.

  2. The extracted unique identifier is used to search for a suitable QCanMessageDescription from the list of all available messageDescriptions() .

  3. 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 the signal 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() and errorString() methods can be used to get information about the errors.

Note

Calling this method clears all previous errors and warnings.

prepareFrame(uniqueId, signalValues)
Parameters:
  • uniqueIdUniqueId

  • signalValues – Dictionary with keys of type .QString and values of type QVariant.

Return type:

QCanBusFrame

Constructs a CAN data frame, using uniqueId and signalValues and returns the constructed QCanBusFrame .

The signalValues parameter must contain signal names as keys, and expected signal values as values.

The process of creating the frame is as follows:

  1. The uniqueId is used to find an appropriate message description.

  2. 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.

  3. The uniqueIdDescription() is used to encode the uniqueId into the appropriate part of the frame (frame id or payload).

  4. The selected message description is used to encode all the signalValues into the frame.

  5. 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, the error() and errorString() 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:

descriptionQCanUniqueIdDescription

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:

QCanUniqueIdDescription

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.