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() が表示されます。 |
© 2025 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.