Using TinyCAN Backend

The TinyCAN backend encapsulates the low-level API to work with the Tiny-CAN adapters.

Creating CAN Bus Devices

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


  foreach (const QByteArray &backend, QCanBus::instance()->plugins()) {
      if (backend == "tinycan") {
          // were found
          break;
      }
  }

Where, tinycan is the backend name.

Further, it is necessary to request from QCanBus the device with the active Tiny-CAN interface:


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

Where, channela is the active CAN interface name. The Tiny-CAN API provides only two interfaces channela and channelb.

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

The device is now open and can be written and read:


  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 new frames are available for reading:


  QCanBusFrame frame = device->readFrame();

Tiny-CAN supports the following configurations that can be controlled through setConfigurationParameter():

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