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はプラグイン名です。
次に、特定のインターフェースへの接続を確立できます:
QString errorString;
QCanBusDevice*device =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() メソッドを使用して行うことができます。読み取り可能な新しいフレームが少なくとも1つある場合、framesReceived() シグナルが発信されます:
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は、以下の追加機能をサポートしています:
© 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.