VirtualCANプラグインの使用

VirtualCANプラグインを使用すると、CANハードウェアを使用せずに、ローカルのTCP/IP接続でCANアプリケーションをテストできます。最初のクライアントがcreateDevice()を呼び出すと、TCPサーバーが作成されます。デフォルトのTCPポートは35468ですが、createDevice()に完全修飾URLを指定することで変更できます。いったんサーバーが実行されると、同じシステム上でそれ以降のサーバーが起動されることはありません。

その後、すべてのクライアントがCANフレームをサーバーに送信し、サーバーがそれを他のクライアントに配布します。

CANバスデバイスの作成

最初に、QCanBus 、目的のプラグインが提供されていることを確認する必要がある:

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

ここで、virtualcanはプラグイン名である。

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

QCanBusDevice *device = QCanBus::instance()->createDevice(
    QStringLiteral("virtualcan"), QStringLiteral("can0"));
device->connectDevice();

can0はアクティブなCANチャンネル名です。VirtualCANプラグインは、2つのチャンネル「can0」と「can1」を提供します。どちらも、CAN 2.0またはCAN FDチャンネルとして使用できます。これらのチャンネルのいずれかに接続されているすべてのアプリケーションは、このチャンネルに送信されたすべてのメッセージを受信します。

リモートサーバーに接続するには、以下の完全修飾URLをインターフェース名として使用します:

tcp://server:port/canX

例えば

tcp://192.168.1.2:35468/can0

デバイスは現在、CANフレームの書き込みと読み出しが可能です:

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

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

QCanBusFrame frame = device->readFrame();

VirtualCANは、setConfigurationParameter()で制御できる以下のコンフィギュレーションをサポートしています:

設定パラメータキー説明
QCanBusDevice::CanFdKey仮想 CAN バスが CAN FD モードで動作するかどうかを決定します。このオプションはデフォルトで無効になっています。
QCanBusDevice::ReceiveOwnKeyデフォルトでは、CANフレームを送信したデバイスでCANフレームを受信することはできません。このオプションを有効にすると、CANバスに送信されたすべてのCANフレームが直ちに受信バッファに表示されます。これは、送信に成功したかどうかを確認するために使用できます。このオプションを有効にすると、受信したフレームにはQCanBusFrame::hasLocalEcho() が表示されます。

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