Using TinyCAN Plugin

The TinyCAN plugin encapsulates the low-level API to work with the MHS Elektronik CAN adapters.

Creating CAN Bus Devices

At first it is necessary to check that QCanBus provides the desired plugin:


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

Where tinycan is the plugin name.

Next, a connection to a specific interface can be established:


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

Where can0.0 is the active CAN interface name. TinyCAN provides the interfaces can0.0 and can0.1, which maps to INDEX_CAN_KANAL_A resp. INDEX_CAN_KANAL_B in the TinyCAN plugin.

Note: Only the USB adapters are currently supported by this plugin.

The device is now open for writing and reading CAN frames:


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

The reading can be done using the readFrame() method. The framesReceived() signal is emitted when at least one new frame is available for reading:


  QCanBusFrame frame = device->readFrame();

TinyCAN supports the following configurations that can be controlled through setConfigurationParameter():

Configuration parameter keyDescription
QCanBusDevice::BitRateKeyDetermines the bit rate of the CAN bus connection. The following bit rates are supported: 10000, 20000, 50000, 100000, 125000, 250000, 500000, 800000, 1000000.