Визуализация процесса обработки данных на BananaPI (в C/ C++)
Моя визуализация покажет статус бронирования мест в автобусе. Вы можете увидеть весь автобус с местами, которые должны менять цвет, а также количество свободных / занятых мест под основной картинкой. Например: сначала есть 42 свободных зеленых места, поэтому мы можем видеть текст: "42 свободных"; "0 занят". Допустим, 2 человека будут сидеть на двух местах. Основная картинка изменится: будет 40 зеленых мест и 2 красных. То же самое с текстом ниже: "40 свободных" и "2 занятых".
Мне удалось синхронизировать сигналы от модуля (линия шины CAN) к BananaPi с помощью трансивера TI SN65HVD230D. Я получил информацию от каждой секции идентификаторов сидений за один кадр (места 1-32, 33-64 и статус каждого места - свободно, занято, ошибка и недоступно). Я прикрепляю файл receive.c ( http://svn.code.sf.net/p/can4linux/code/trunk/can4linux-examples/receive.c), который я использую для проверки фреймов (в наборе терминала./ получить -t3 -H).
Сначала я подумал о написании таймера, который будет собирать данные из receive.c. каждые 1 с - интересно, как именно я должен объявлять данные, которые будут отображаться в Qt, в моих QTimer и QProcess. Может ли кто-нибудь предоставить пример кода, как он должен работать?
После того, как я это сделал, я подумал о том, чтобы визуализировать состояние сидений - я думаю, что я должен использовать слоты и сигналы каждого сиденья в зависимости от его состояния (для свободного места - рисунок с зеленым сиденьем, а для занятого / занятого - место с красным рисунком). Это хорошая идея?
Заранее благодарю за каждый совет.
Пример фреймов:
0.167986 938 / 0x000003aa: bD (8): 00 fc ff ff ff ff ff ff 3f - никто не сидит
0,167963 938/0x000003aa: bD ( 8): 01 фк фф фф фф фф фф 3ф - место № 1 занято / занято
0.167972 938/0x000003aa: bD ( 8): 04 фк фф фф фф фф фф 3ф - место № 2 занято / занято
0.167973 938/0x000003aa: bD ( 8): 10 00 fc ff ff ff ff ff 3f - место № 3 занято / занято
0,167973 938/0x000003aa: bD ( 8): 40 00 fc ff ff ff ff ff 3f - место № 4 занято / занято
0.167981 938/0x000003aa: bD ( 8): 00 01 fc ff ff ff ff ff 3f - место № 5 занято / занято
0.168021 938/0x000003aa: bD ( 8): 00 04 fc ff ff ff ff ff 3f - место № 6 занято / занято
0.167986 938/0x000003aa: bD ( 8): 00 10 fc ff ff ff ff ff 3f - место № 7 занято / занято
0.167988 938/0x000003aa: bD ( 8): 00 40 fc ff ff ff ff ff 3f - место № 8 занято / занято
0.168017 938/0x000003aa: bD ( 8): 00 00 fd ff ff ff ff ff 3f - место № 9 занято / занято
0.168023 938/0x000003aa: bD ( 8): 00 00 fc ff ff ff ff ff 7f - место № 32 занято / занято
0.167001 939/0x000003ab: bD ( 8): ff ff ff ff ff ff ff ff ff - место № 53 свободно
0.167023 939/0x000003ab: bD ( 8): ff ff ff ff ff ff ff ff ff - место № 53 занято / занято
0.167992 938/0x000003aa: bD ( 8): 00 01 fc ff ff ff ff ff 7f - места № 5 и 32 заняты / заняты
0.167986 938/0x000003aa: bD ( 8): 05 00 fc ff ff ff ff ff 3f - места № 1 и 2 заняты / заняты
0.167965 938/0x000003aa: bD ( 8): 40 01 fc ff ff ff ff ff 3f - места № 4 и 5 заняты / заняты
0.167971 938/0x000003aa: bD ( 8): 50 01 fc ff ff ff ff ff 3f - места № 3, 4 и 5 заняты / заняты
Прежде всего хотелось бы видеть выходные сигналы (кадры) в Qty. Когда я нажимаю кнопку после отладки, я вижу только в выходных данных приложения:
- ""
- Gotowe!
- 0
и так далее после нажатия кнопки каждый раз.
Мой код: mywindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QProcess>
#include <QDebug>
#include <QByteArray>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QProcess process(this);
QByteArray byteArray = process.readAllStandardOutput();
process.setProcessChannelMode(QProcess::MergedChannels);
process.start("test.sh");
process.waitForReadyRead();
qDebug() << process.readAll();
qDebug("Gotowe!");
process.waitForBytesWritten();
process.waitForFinished();
qDebug() << process.exitCode();
test.sh - это простой bash-скрипт для загрузки./receive с помощью команд "-t3 -H)
#!/bin/bash
./receive -t3 -H