summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorAndre Hartmann <aha_1980@gmx.de>2016-04-04 21:08:29 +0200
committerAlex Blasche <alexander.blasche@theqtcompany.com>2016-04-15 09:56:58 +0000
commite2553bc4401e6f245ddaa4be4490e285a45c2e9d (patch)
tree978db1e349d9869279b84f1dd8c70ae8642064b3 /examples
parentc0b0c04cc72a151f532ec1665163e04d62f2e14f (diff)
CAN-Example: Display CAN-IDs and data bytes in hex
Data bytes usually contain binary information so just display them as hex dump. Do so also for the input side. Tested with PCAN-USB Pro, both channels connected, Linux with socketcan, cangen and candump on can0, CAN-Example on can1. CAN-FD was not tested. Change-Id: I55a82bbec874de808bc84a8ea016649e09b5c6d6 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/serialbus/can/mainwindow.cpp25
-rw-r--r--examples/serialbus/can/mainwindow.ui16
2 files changed, 33 insertions, 8 deletions
diff --git a/examples/serialbus/can/mainwindow.cpp b/examples/serialbus/can/mainwindow.cpp
index 16bf947..3c3458e 100644
--- a/examples/serialbus/can/mainwindow.cpp
+++ b/examples/serialbus/can/mainwindow.cpp
@@ -172,6 +172,16 @@ void MainWindow::framesWritten(qint64 count)
qDebug() << "Number of frames written:" << count;
}
+static QByteArray dataToHex(const QByteArray &data)
+{
+ QByteArray result = data.toHex().toUpper();
+
+ for (int i = 0; i < result.size(); i += 3)
+ result.insert(i, ' ');
+
+ return result;
+}
+
void MainWindow::checkMessages()
{
if (!m_canDevice)
@@ -191,11 +201,11 @@ void MainWindow::checkMessages()
interpretError(view, frame);
} else {
view += QLatin1String("Id: ");
- view += QString::number(id, 16);
+ view += QString::number(id, 16).toUpper();
view += QLatin1String(" bytes: ");
view += QString::number(dataLength, 10);
view += QLatin1String(" data: ");
- view += frame.payload().data();
+ view += dataToHex(frame.payload());
}
if (frame.frameType() == QCanBusFrame::RemoteRequestFrame) {
@@ -207,12 +217,19 @@ void MainWindow::checkMessages()
}
}
+static QByteArray dataFromHex(const QString &hex)
+{
+ QByteArray line = hex.toLatin1();
+ line.replace(' ', QByteArray());
+ return QByteArray::fromHex(line);
+}
+
void MainWindow::sendMessage() const
{
if (!m_canDevice)
return;
- QByteArray writings = m_ui->lineEdit->displayText().toUtf8();
+ QByteArray writings = dataFromHex(m_ui->lineEdit->displayText());
QCanBusFrame frame;
const int maxPayload = m_ui->fdBox->checkState() ? 64 : 8;
@@ -222,7 +239,7 @@ void MainWindow::sendMessage() const
writings = writings.left(size);
frame.setPayload(writings);
- qint32 id = m_ui->idEdit->displayText().toInt();
+ qint32 id = m_ui->idEdit->displayText().toInt(nullptr, 16);
if (!m_ui->EFF->checkState() && id > 2047) //11 bits
id = 2047;
diff --git a/examples/serialbus/can/mainwindow.ui b/examples/serialbus/can/mainwindow.ui
index 26c7489..d2f178b 100644
--- a/examples/serialbus/can/mainwindow.ui
+++ b/examples/serialbus/can/mainwindow.ui
@@ -26,12 +26,16 @@
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
- <string>Id</string>
+ <string>ID (hex)</string>
</property>
</widget>
</item>
<item row="0" column="1">
- <widget class="QLineEdit" name="idEdit"/>
+ <widget class="QLineEdit" name="idEdit">
+ <property name="placeholderText">
+ <string>123</string>
+ </property>
+ </widget>
</item>
<item row="0" column="2" rowspan="3">
<widget class="QGroupBox" name="groupBox">
@@ -92,12 +96,16 @@
</widget>
</item>
<item row="1" column="1">
- <widget class="QLineEdit" name="lineEdit"/>
+ <widget class="QLineEdit" name="lineEdit">
+ <property name="placeholderText">
+ <string>12 34 AB CE</string>
+ </property>
+ </widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
- <string>Data</string>
+ <string>Data (hex)</string>
</property>
</widget>
</item>