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::None | 0 | エラーは発生しませんでした。 |
QCanDbcFileParser::Error::FileReading | 1 | ファイルのオープンまたは読み込み中にエラーが発生しました。 |
QCanDbcFileParser::Error::Parsing | 2 | ファイルの内容の解析中にエラーが発生しました。 |
[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() 呼び出し時に抽出されたメッセージ記述のリストを返す。
QCanDbcFileParser::MessageValueDescriptions QCanDbcFileParser::messageValueDescriptions() const
シグナル生値のテキスト説明を返します。
DBC は、シグナル生値に対するテキスト記述を提供する可能性をサポートしている。そのようなデータが解析された DBC ファイルに存在する場合は、この関数を使用してアクセスできる。
テキスト記述は、特定のメッセージ内の特定のシグナルに対して一意であるため、返される構造体には、実際の値の記述と同様に、メッセージの一意IDとシグナル名に関する情報が含まれる。
QCanDbcFileParser::MessageValueDescriptions 、QCanDbcFileParser::SignalValueDescriptions 、QCanDbcFileParser::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
パース中に発生した重要でない問題のリストを返します。
典型的な問題は、不正なメッセージやシグナル記述である。このような場合、不正なメッセージやシグナルはスキップされるが、ファイルの残りの部分は通常通り処理できる。
本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。