SystecCAN プラグインの使用
SystecCANプラグインは、SYS TECCANアダプターで動作するための低レベルAPIをカプセル化します。
このプラグインを使用するには、SYS TEC CANデバイスドライバとusbcan32.dll (64ビットビルドの場合はusbcan64.dll) が必要です。
CANバスデバイスの作成
最初に、QCanBus 、目的のプラグインが提供されていることを確認する必要があります:
if (QCanBus::instance()->plugins().contains(QStringLiteral("systeccan"))) { // plugin available }
ここで、systeccanはプラグイン名です。
次に、特定のインターフェースへの接続を確立します:
QStringerrorString;QCanBusDevice*デバイス =QCanBus::instance()->createDevice( QStringLiteral("systeccan")、 QStringLiteral("can0.0"), &errorString);if(!device) {// エラー処理はここで行う。 qDebug << errorString; }else{ device->connectDevice(); }
ここで、can0.0はアクティブなCANインターフェース名(インターフェース0、チャンネル0)です。SystecCANプラグインは、can0.0から can63.1までの64個のUSBインターフェース(いわゆるモジュール)をサポートしています。各モジュールは1つまたは2つのチャンネルを持つことができ、それらはインデックスcanX.0またはcanX.1でアクセスできます。availableDevices() メソッドは、現在利用可能なデバイスのリストを返します。
注: SYS TECは、8チャンネルまたは16チャンネルのCANインターフェースも提供しています。これらのユニットは、USBハブと複数の2チャンネル・モジュールで構成されています。
このデバイスは、CANフレームの書き込みと読み出しが可能です:
QCanBusFrame frame; frame.setFrameId(8); QByteArray payload("A36E"); frame.setPayload(payload); device->writeFrame(frame);
読み込みは、readFrame() メソッドを使用して行うことができます。framesReceived() シグナルは、少なくとも1つの新しいフレームが読み出し可能になったときに出力されます:
QCanBusFrame frame = device->readFrame();
SystecCAN は、setConfigurationParameter() で制御できる以下の設定をサポートしています:
設定パラメータキー | 説明 |
---|---|
QCanBusDevice::BitRateKey | CANバス接続のビットレートを決定します。以下のビットレートがサポートされています:10000、20000、50000、100000、125000、250000、500000、800000、1000000。このコンフィギュレーション・パラメーターは、QCanBusDevice が接続されていない状態でしか調整できないことに注意してください。 |
QCanBusDevice::ReceiveOwnKey | デフォルトでは、CANフレームを送信したのと同じチャンネルでのCANフレームの受信は無効になっています。このオプションを有効にすると、受信したフレームにはQCanBusFrame::hasLocalEcho() が表示されます。 |
SystecCANは、以下の追加機能をサポートしています:
© 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.