<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- systeccan.qdoc --> <title>Using SystecCAN Backend | Qt Serial Bus 5.9</title> <link rel="stylesheet" type="text/css" href="style/offline-simple.css" /> <script type="text/javascript"> document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css"); // loading style sheet breaks anchors that were jumped to before // so force jumping to anchor again setTimeout(function() { var anchor = location.hash; // need to jump to different anchor first (e.g. none) location.hash = "#"; setTimeout(function() { location.hash = anchor; }, 0); }, 0); </script> </head> <body> <div class="header" id="qtdocheader"> <div class="main"> <div class="main-rounded"> <div class="navigationbar"> <table><tr> <td >Qt 5.9</td><td ><a href="qtserialbus-index.html">Qt Serial Bus</a></td><td >Using SystecCAN Backend</td></tr></table><table class="buildversion"><tr> <td id="buildversion" width="100%" align="right">Qt 5.9.4 Reference Documentation</td> </tr></table> </div> </div> <div class="content"> <div class="line"> <div class="content mainContent"> <div class="sidebar"> <div class="toc"> <h3><a name="toc">Contents</a></h3> <ul> <li class="level1"><a href="#creating-can-bus-devices">Creating CAN Bus Devices</a></li> </ul> </div> <div class="sidebar-content" id="sidebar-content"></div></div> <h1 class="title">Using SystecCAN Backend</h1> <span class="subtitle"></span> <!-- $$$qtserialbus-SystecCAN-overview.html-description --> <div class="descr"> <a name="details"></a> <p>The SystecCAN backend encapsulates the low-level API to work with the <a href="http://www.systec-electronic.com/">SYS TEC</a> CAN adapters.</p> <p>This plugin requires the SYS TEC CAN device drivers and the usbcan32.dll (usbcan64.dll for 64 bit builds).</p> <a name="creating-can-bus-devices"></a> <h2 id="creating-can-bus-devices">Creating CAN Bus Devices</h2> <p>At first it is necessary to check that <a href="qcanbus.html">QCanBus</a> provides the desired backend:</p> <pre class="cpp"> <span class="keyword">if</span> (<span class="type"><a href="qcanbus.html">QCanBus</a></span><span class="operator">::</span>instance()<span class="operator">-</span><span class="operator">></span>plugins()<span class="operator">.</span>contains(<span class="type">QStringLiteral</span>(<span class="string">"systeccan"</span>))) { <span class="comment">// backend available</span> } </pre> <p>Where <i>systeccan</i> is the backend name.</p> <p>Next, a connection to a specific interface can be established:</p> <pre class="cpp"> <span class="type"><a href="qcanbusdevice.html">QCanBusDevice</a></span> <span class="operator">*</span>device <span class="operator">=</span> <span class="type"><a href="qcanbus.html">QCanBus</a></span><span class="operator">::</span>instance()<span class="operator">-</span><span class="operator">></span>createDevice( <span class="type">QStringLiteral</span>(<span class="string">"systeccan"</span>)<span class="operator">,</span> <span class="type">QStringLiteral</span>(<span class="string">"can0.0"</span>)); device<span class="operator">-</span><span class="operator">></span>connectDevice(); </pre> <p>Where, <i>can0.0</i> is the active CAN interface name (interface 0, channel 0). The SystecCAN backend supports 64 USB interfaces (so called modules) from <i>can0.0</i> to <i>can63.1</i>. Each module can have one or two channels, they can be accessed by the index canX.0 or canX.1.</p> <p><b>Note: </b>SYS TEC also provides 8 or 16 channel CAN interfaces. These units consist of an USB hub and multiple two-channel modules internally.</p><p>The device is now open for writing and reading CAN frames:</p> <pre class="cpp"> <span class="type"><a href="qcanbusframe.html">QCanBusFrame</a></span> frame; frame<span class="operator">.</span>setFrameId(<span class="number">8</span>); <span class="type">QByteArray</span> payload(<span class="string">"A36E"</span>); frame<span class="operator">.</span>setPayload(payload); device<span class="operator">-</span><span class="operator">></span>writeFrame(frame); </pre> <p>The reading can be done using the <a href="qcanbusdevice.html#readFrame">readFrame()</a> method. The <a href="qcanbusdevice.html#framesReceived">framesReceived()</a> signal is emitted when at least one new frame is available for reading:</p> <pre class="cpp"> <span class="type"><a href="qcanbusframe.html">QCanBusFrame</a></span> frame <span class="operator">=</span> device<span class="operator">-</span><span class="operator">></span>readFrame(); </pre> <p>SystecCAN supports the following configurations that can be controlled through <a href="qcanbusdevice.html#setConfigurationParameter">setConfigurationParameter()</a>:</p> <div class="table"><table class="generic"> <thead><tr class="qt-style"><th >Configuration parameter key</th><th >Description</th></tr></thead> <tr valign="top" class="odd"><td ><a href="qcanbusdevice.html#ConfigurationKey-enum">QCanBusDevice::BitRateKey</a></td><td >Determines the bit rate of the CAN bus connection. The following bit rates are supported: 10000, 20000, 50000, 100000, 125000, 250000, 500000, 800000, and 1000000. Note that this configuration parameter can only be adjusted while the <a href="qcanbusdevice.html">QCanBusDevice</a> is not connected.</td></tr> <tr valign="top" class="even"><td ><a href="qcanbusdevice.html#ConfigurationKey-enum">QCanBusDevice::ReceiveOwnKey</a></td><td >The reception of CAN frames on the same channel that was sending the CAN frame is disabled by default.</td></tr> </table></div> </div> <!-- @@@qtserialbus-SystecCAN-overview.html --> </div> </div> </div> </div> </div> <div class="footer"> <p> <acronym title="Copyright">©</acronym> 2017 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners.<br> The documentation provided herein is licensed under the terms of the <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation License version 1.3</a> as published by the Free Software Foundation.<br> 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. </p> </div> </body> </html>