QCanDbcFileParser Class

QCanDbcFileParser クラスは、DBC ファイルの解析に使用できます。詳細...

Header: #include <QCanDbcFileParser>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: QT += serialbus
Since: Qt 6.5
Status: Preliminary

このクラスは開発中であり、変更される可能性があります。

パブリック型

enum class Error { None, FileReading, Parsing }
MessageValueDescriptions
SignalValueDescriptions
ValueDescriptions

パブリック関数

QCanDbcFileParser()
~QCanDbcFileParser()
QCanDbcFileParser::Error error() const
QString errorString() const
QList<QCanMessageDescription> messageDescriptions() const
QCanDbcFileParser::MessageValueDescriptions messageValueDescriptions() const
bool parse(const QString &fileName)
bool parse(const QStringList &fileNames)
(since 6.7) bool parseData(QStringView data)
QStringList warnings() const

静的パブリックメンバ

QCanUniqueIdDescription uniqueIdDescription()

詳細な説明

CANデータベースまたはCAN DBCファイルは、生のCANバスデータをデコードして解釈する方法に関する情報を含むASCIIテキストファイルです。フォーマットの詳細については、こちらまたはこちらを参照してください。

QCanDbcFileParserクラスは、入力されたDBCファイルを解析し、QCanMessageDescriptionのリストを出力として提供します。これらのメッセージ記述は、QCanFrameProcessor に転送し、後でQCanBusFrameをエンコードまたはデコードするルールとして使用することができます。

処理されるファイルまたはファイルのリストを指定するには、parse() オーバーロードのいずれかを使用する。どちらのオーバーロードも、解析が正常に完了した場合はtrue を返し、そうでない場合はfalse を返します。

解析中に発生したエラーを取得するには、error() メソッドを呼び出します。構文解析が正常に完了した場合、このメソッドはNone を返します。そうでない場合は、errorString() メソッドを使用して、エラーの文字列表現を取得できます。

構文解析中に、重要でない問題が発生することもあります。そのような問題はログに記録されますが、構文解析が中断されることはありません。warnings ()メソッドを使用すると、構文解析が完了した後に、そのような問題の完全なリストを取得できます。

構文解析が正常に完了したら、messageDescriptions() を呼び出して、最後のparse() 呼び出し時に抽出されたメッセージ記述のリストを取得します。messageValueDescriptions() を呼び出して、シグナル生値のテキスト記述があれば、それを取得します。

静的なuniqueIdDescription() 関数を使用して、DBC フォーマットのQCanUniqueIdDescription を取得する。

QCanDbcFileParser fileParser;
const bool result = fileParser.parse(u"path/to/file.dbc"_s);
// Check result, call error() and warnings() if needed

// Prepare a QCanFrameProcessor to decode or encode DBC frames
QCanFrameProcessor frameProcessor;
frameProcessor.setUniqueIdDescription(QCanDbcFileParser::uniqueIdDescription());
frameProcessor.setMessageDescriptions(fileParser.messageDescriptions());

注: パーサーはステートフルであり、すべての結果(抽出されたメッセージ記述、エラー・コード、警告など)は、次のパーシングが開始されるとリセットされる。

サポートされるキーワード

現在の実装では、DBC ファイルで見つけられるキーワードのサブセットのみをサポートしています:

  • BO_ - メッセージの説明
  • SG_ - シグナルの説明
  • SIG_VALTYPE_ - シグナル・タイプの記述
  • SG_MUL_VAL_ - 拡張多重化記述。
  • CM_ - コメント(メッセージとシグナルの記述のみ)。
  • VAL_ - 生のシグナル値のテキスト記述。

他のキーワードで始まる行は単に無視される。

QCanMessageDescription およびQCanFrameProcessorも参照のこと

メンバ型ドキュメント

enum class QCanDbcFileParser::Error

この列挙型は、DBC ファイルの解析中に起こりうるエラーを表す。

定数説明
QCanDbcFileParser::Error::None0エラーは発生しませんでした。
QCanDbcFileParser::Error::FileReading1ファイルのオープンまたは読み込み中にエラーが発生しました。
QCanDbcFileParser::Error::Parsing2ファイルの内容の解析中にエラーが発生しました。

[alias] QCanDbcFileParser::MessageValueDescriptions

これはQHash<QtCanBus::UniqueId, SignalValueDescriptions> の型エイリアスである。

ハッシュのキーはメッセージの一意な ID を表し、ハッシュの値は対応するQCanDbcFileParser::SignalValueDescriptions エントリを含む。

QCanDbcFileParser::SignalValueDescriptionsも参照のこと

[alias] QCanDbcFileParser::SignalValueDescriptions

これはQHash<QString, ValueDescriptions> の型エイリアスである。

ハッシュのキーはシグナル名を表し、ハッシュの値は対応するQCanDbcFileParser::ValueDescriptions エントリを含む。

QCanDbcFileParser::ValueDescriptionsも参照のこと

[alias] QCanDbcFileParser::ValueDescriptions

これはQHash<quint32, QString> の型エイリアスである。

ハッシュのキーは生のシグナル値を表し、ハッシュの値は対応する文字列の説明を表す。

メンバ関数 ドキュメント

QCanDbcFileParser::QCanDbcFileParser()

DBC ファイル・パーサーを構築する。

[noexcept] QCanDbcFileParser::~QCanDbcFileParser()

この DBC ファイル・パーサーを破棄する。

QCanDbcFileParser::Error QCanDbcFileParser::error() const

解析中に発生した最後のエラーを返す。

errorString() およびparse()も参照

QString QCanDbcFileParser::errorString() const

解析中に発生した最後のエラーのテキスト表現、またはエラーがない場合は空文字列を返します。

error() も参照

QList<QCanMessageDescription> QCanDbcFileParser::messageDescriptions() const

最後のparse() 呼び出し時に抽出されたメッセージ記述のリストを返す。

parse() およびerror() も参照

QCanDbcFileParser::MessageValueDescriptions QCanDbcFileParser::messageValueDescriptions() const

シグナル生値のテキスト説明を返します。

DBC は、シグナル生値に対するテキスト記述を提供する可能性をサポートしている。そのようなデータが解析された DBC ファイルに存在する場合は、この関数を使用してアクセスできる。

テキスト記述は、特定のメッセージ内の特定のシグナルに対して一意であるため、返される構造体には、実際の値の記述と同様に、メッセージの一意IDとシグナル名に関する情報が含まれる。

QCanDbcFileParser::MessageValueDescriptionsQCanDbcFileParser::SignalValueDescriptionsQCanDbcFileParser::ValueDescriptionsも参照

bool QCanDbcFileParser::parse(const QString &fileName)

ファイルfileName を解析する。解析が正常に完了した場合はtrue を返し、そうでない場合はfalse を返す。

解析が正常に完了した場合は、messageDescriptions() メソッドを呼び出して、抽出されたすべてのメッセージ記述のリストを取得します。

解析に失敗した場合は、error() およびerrorString() メソッドを呼び出して、エラーに関する情報を取得します。

warnings() メソッドを呼び出して、解析中にログに記録された警告のリストを取得します。

注釈 このメソッドは、ファイルの内容が UTF-8 でエンコードされていることを想定しています。ファイルのエンコードが異なる場合は、まずそれをデコードし、parseData() を使用して DBC 情報を抽出します。

messageDescriptions()、error()、warnings()、parseData()も参照

bool QCanDbcFileParser::parse(const QStringList &fileNames)

これはオーバーロードされた関数である。

ファイルのリストfileNames を解析します。解析が正常に完了した場合はtrue を、そうでない場合はfalse を返します。

解析が正常に完了した場合は、messageDescriptions() メソッドを呼び出して、抽出されたすべてのメッセージ記述のリストを取得します。

解析は最初のエラーで停止します。error() およびerrorString() メソッドを呼び出して、エラーに関する情報を取得します。

warnings() メソッドを呼び出して、解析中にログに記録された警告のリストを取得します。

注釈 このメソッドは、ファイルの内容が UTF-8 でエンコードされていることを想定しています。ファイルのエンコードが異なる場合は、まずそれをデコードし、parseData() を使用して DBC 情報を抽出します。

messageDescriptions()、error()、warnings() およびparseData()も参照

[since 6.7] bool QCanDbcFileParser::parseData(QStringView data)

入力データdata を解析し、解析に成功した場合はtrue を、そうでない場合はfalse を返す。

構文解析が正常に完了した場合は、messageDescriptions() メソッドを呼び出して、抽出されたすべてのメッセージ記述のリストを取得します。

構文解析に失敗した場合は、error() およびerrorString() メソッドを呼び出して、エラーに関する情報を取得します。

warnings() メソッドを呼び出して、解析中にログに記録された警告のリストを取得します。

このメソッドは、data が有効な DBC ファイルの内容であり、QStringView に適切に変換されていることを想定しています。

このメソッドは、入力ファイルのエンコーディングが UTF-8 と異なる場合に使用します。

// Read the data from a DBC file with custom encoding
const QByteArray initialData = ...;
// Convert to UTF-16 using QStringDecoder or some other way
const QString decodedData = ...;
QCanDbcFileParser parser;
const bool result = parser.parseData(decodedData);

この関数は Qt 6.7 で導入されました。

messageDescriptions(),error(),warnings(),parse()も参照してください

[static] QCanUniqueIdDescription QCanDbcFileParser::uniqueIdDescription()

一意な識別子の説明を返します。DBC プロトコルは常にフレーム ID を識別子として使用するため、一意な識別子の記述は常に同じです。

このメソッドを使用してQCanUniqueIdDescription のインスタンスを取得し、それをQCanFrameProcessor に渡します。

QCanFrameProcessor::setUniqueIdDescription()も参照のこと

QStringList QCanDbcFileParser::warnings() const

パース中に発生した重要でない問題のリストを返します。

典型的な問題は、不正なメッセージやシグナル記述である。このような場合、不正なメッセージやシグナルはスキップされるが、ファイルの残りの部分は通常通り処理できる。

error() とparse()も参照してください

本書に含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。