このページでは

VectorCANプラグインの使用方法

VectorCANプラグインは、Vector InformatikのCANアダプタと連携するための低レベルAPIをカプセル化しています。

このプラグインを使用するには、Vector CAN デバイスドライバおよび vxlapi.dll(64 ビットビルドの場合は vxlapi64.dll)が必要です。

CANバスデバイスの作成

まず、QCanBus に目的のプラグインが含まれていることを確認する必要があります:

if (QCanBus::instance()->plugins().contains(QStringLiteral("vectorcan"))) {
    // plugin available
}

ここで、vectorcanはプラグイン名です。

次に、特定のインターフェースへの接続を確立できます:

QString errorString;
QCanBusDevice*device =QCanBus::instance()->createDevice(
    QStringLiteral("vectorcan"), QStringLiteral("can0"), &errorString);
if(!device) {
    // ここにエラー処理を記述
    qDebug << errorString;
}else{
    device->connectDevice();
}

ここで、can0はアクティブな CAN チャネル名です。VectorCAN プラグインは、can0からcan63 までの 64 チャネル(Vector API の XL_CONFIG_MAX_CHANNELS で定義)を提供します。 これらのチャンネルのうち一部は仮想チャンネルであり、実際のCANハードウェアがなくても使用できます。仮想チャンネルを確認するには、Vectorのドライバパッケージに含まれている「Vector Hardware Config」(vcanconf.exe)というプログラムを使用できます。availableDevices() メソッドは、現在利用可能なデバイスのリストを返します。

これで、デバイスが CAN フレームの読み書きに対応するようになりました:

QCanBusFrame frame;
frame.setFrameId(8);
QByteArray payload("A36E");
frame.setPayload(payload);
device->writeFrame(frame);

読み取りは、readFrame() メソッドを使用して行うことができます。読み取り可能な新しいフレームが少なくとも 1 つ存在する場合、framesReceived() シグナルが発行されます:

QCanBusFrame frame = device->readFrame();

VectorCAN は、setConfigurationParameter() を通じて制御可能な以下の設定をサポートしています:

設定パラメータのキー説明
QCanBusDevice::BitRateKeyCANバス接続のビットレートを決定します。
QCanBusDevice::ReceiveOwnKeyデフォルトでは、CANフレームを送信した同じデバイスでのそのフレームの受信は無効になっています。このオプションを有効にすると、CANバスに送信されたすべてのCANフレームが直ちに受信バッファに表示されます。これにより、送信が成功したかどうかを確認できます。このオプションが有効になっている場合、受信されたフレームにはQCanBusFrame::hasLocalEcho()のマークが付きます。
QCanBusDevice::CanFdKeyCANバス接続でCAN FDの使用を有効にします。このオプションを有効にすると、自身が送信したCANフレームを受信できなくなるため、QCanBusDevice::ReceiveOwnKey をtrueに設定しても効果はありません。Qt 5.15以降。
QCanBusDevice::DataBitRateKeyCANバス接続のデータ転送レートを指定します。これは、QCanBusDevice::CanFdKey がtrueに設定されている場合にのみ利用可能です。Qt 5.15以降。

VectorCANは、以下の追加機能をサポートしています:

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.