我的可视化将显示公共汽车座位的预订状态。您可以看到整辆巴士的座位应该会改变颜色,以及主图片下方的空闲/繁忙座位数量。例如:起初有 42 个免费的绿色座位,所以我们可以看到文字:“42 free”;“0忙”。假设 2 人将坐在两个座位上。主图将更改:将有 40 个绿色座位和 2 个红色座位。与下面的文本相同:“40 空闲”和“2 忙”。
我设法使用 TI SN65HVD230D 收发器将来自模块盒(CAN 总线)的信号同步到 BananaPi。我从每一帧的每个 ID 座位部分获取信息(座位 1-32、33-64 和每个座位的状态 - 空闲、占用、错误和不可用)。我附上了我用来检查帧的receive.c文件(http://svn.code.sf.net/p/can4linux/code/trunk/can4linux-examples/receive.c )(在终端输入./接收 -t3 -H)。
首先我想写一个定时器来收集来自receive.c的数据。每个 1s - 我想知道我应该如何在 QTimer 和 QProcess 中声明要在 Qt 中看到的数据。有人可以提供一个示例代码它应该如何工作吗?
在我完成之后,我想可视化座位的状态 - 我认为我应该根据每个座位的状态使用插槽和信号(对于空闲座位 - 绿色座位的图形,以及占用/忙碌的座位 - 红色图形座位)。这是一个好主意吗?
提前感谢您的每一个提示。
框架示例:
0.167986 938/0x000003aa : bD ( 8 ): 00 fc ff ff ff ff ff 3f - 没有人坐着
0.167963 938/0x000003aa : bD ( 8 ): 01 fc ff ff ff ff 3f - 1 号座位被占用/忙碌
0.167972 938/0x000003aa : bD ( 8 ): 04 fc ff ff ff ff 3f - 2 号座位被占用/忙碌
0.167973 938/0x000003aa : bD ( 8 ): 10 00 fc ff ff ff ff 3f - 3 号座位被占用/忙碌
0.167973 938/0x000003aa : bD ( 8 ): 40 00 fc ff ff ff ff 3f - 4 号座位被占用/忙碌
0.167981 938/0x000003aa : bD ( 8 ): 00 01 fc ff ff ff ff 3f - 5 号座位被占用/忙碌
0.168021 938/0x000003aa : bD ( 8 ): 00 04 fc ff ff ff ff 3f - 6 号座位被占用/忙碌
0.167986 938/0x000003aa : bD ( 8 ): 00 10 fc ff ff ff ff 3f - 7 号座位被占用/忙碌
0.167988 938/0x000003aa : bD ( 8 ): 00 40 fc ff ff ff ff 3f - 8 号座位被占用/忙碌
0.168017 938/0x000003aa : bD ( 8 ): 00 00 fd ff ff ff ff 3f - 9 号座位被占用/忙碌
0.168023 938/0x000003aa : bD ( 8 ): 00 00 fc ff ff ff ff 7f - 32号座位被占用/忙碌
0.167001 939/0x000003ab : bD ( 8 ): ff ff ff ff ff fc ff ff - 53号座位是免费的
0.167023 939/0x000003ab : bD ( 8 ): ff ff ff ff ff fd ff ff - 53 号座位被占用/忙碌
0.167992 938/0x000003aa : bD ( 8 ): 00 01 fc ff ff ff ff 7f - 5 号和 32 号座位被占用/忙碌
0.167986 938/0x000003aa : bD ( 8 ): 05 00 fc ff ff ff ff 3f - 1 号和 2 号座位被占用/忙碌
0.167965 938/0x000003aa : bD ( 8 ): 40 01 fc ff ff ff ff 3f - 4 号和 5 号座位被占用/忙碌
0.167971 938/0x000003aa : bD ( 8 ): 50 01 fc ff ff ff ff 3f - 3、4 和 5 号座位被占用/忙碌
首先,我想查看 Qty 中的输出信号(帧)。当我在调试后按下按钮时,我只在应用程序输出中看到:
- " "
- 后藤!
- 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