0


基于QT的CAN数据采集模拟器工具

CANalyst-II基于QT的二次开发
调试完成后,基于项目应用做了些扩展功能,主要有:CAN数据采集及保存,基于SAEJ1939协议常用的几项数据解析,单帧CAN数据发送,CAN文件发送。功能界面如下:
在这里插入图片描述

一、CAN数据采集及保存
1、CAN参数设置

通过“CAN参数设置”按钮进入设置界面:
在这里插入图片描述
常用250K波特率,设为默认,其他125K、500K、1000K等几十种可选;
CANalyst-II为双路CAN,因此双通道0、1可选,一次只能使用一路。
设置好后退出。

2、采集数据
点击“CAN启动”后,即可采集数据。数据显示界面采用tableWidget:
在这里插入图片描述
tableWidget设计时几点需注意的地方:
1)、添加数据时,一定要设置行数,否则数据不会显示出来;

    //serial_number根据接收数据帧数增加,实现行数增加。
    ui->tableWidget->setRowCount(serial_number+1);

2)、让tableWidget的滚动条保持在底部

ui->tableWidget->setItem(serial_number, j, Item);
ui->tableWidget->scrollToBottom();

3)、清空tableWidget需要使用clearContents(),不清理行头和列头。
如果使用clear()函数,清空整个tableWidget,包括行头和列头。

ui->tableWidget->clearContents();

4)、verticalHeaderVisible默认勾选,作为列头。是序号。不需要就去掉勾选。
在这里插入图片描述
5)、最后一列数据项多时,需要勾选上horizontalHeaderStretchLastSection这样数据就能更多显示出来。
在这里插入图片描述
3、保存数据
通过Check Box勾选、取消来实现保存、关闭功能。格式按照tableWidget数据格式来,通过制表符’\t’分隔。
保存采集的CAN数据是可以直接做为文件发送的呦。

void MainWindow::on_checkBox_clicked()
{
    if(ui->checkBox->isChecked())
    {
        QString textFile = QFileDialog::getSaveFileName(this,tr("Save txt"), "",tr("text (*.txt)")); //选择路径

        if(textFile.isEmpty())
        {
            qDebug("文件名为空");
        }
        else
        {
            sfile->setFileName(textFile);//文件命名
            if (!sfile->open(QFile::WriteOnly | QFile::Text))     //检测文件是否打开
            {
                qDebug("打开文件失败");
                return;
            }
            else
            {
                qDebug("打开文件成功");
                QString titlestr ="序号\t传输方向\t时间标识\t状态\t名称\t帧ID\t格式\t类型\tDLC\t数据\n";
                QTextStream out(sfile);                 //分行写入文件
                out << titlestr;
                saveflag = true;
            }
        }
    }
    else
    {
        saveflag = false;
        sfile->close();
    }
}

二、基于SAEJ1939协议常用的几项数据解析
如果采集的数据是基于SAEJ1939协议的,打开"解析数据"按钮,可以实现常用的几项数据解析。且为实时解析
在这里插入图片描述
三、单帧CAN数据发送
在这里插入图片描述
四、文件发送

文件发送分为单次发送和循环发送。文件格式需要按照上面第一部分采集的数据格式来。CANalyst-II商家提供的CANPro协议分析平台采集的数据同样适用。

实车采集的CAN数据,然后在家,通过循环发送文件方式,妥妥的模拟ECU啊。此时CANalyst-II做为模拟器使用,来测试设备就可以了。

QString textFile = QFileDialog::getOpenFileName(this,tr("Open txt"), "",tr("text (*.txt)")); //选择路径

五、设置标题、图标、及执行文件打包

1、设置标题
在这里插入图片描述
2、设置图标
做好图标文件app.ico,放在项目目录下,然后.pro文件中添加

RC_ICONS += app.ico

3、打包执行文件
1)找到exe文件。选的Release,在build-CAN_simulator-Desktop_Qt_5_14_2_MinGW_64_bit-Release\release文件夹下。
在这里插入图片描述
拷贝到一个单独的文件夹。

2)、打开QT5.14.2(MinGW7.3.0 64-bit)
在这里插入图片描述
3、命令行进入要打包的exe目录下
在这里插入图片描述
4、输入命令行:windeployqt 程序名 敲击回车。这一步操作是将所需的库文件全都拷贝到exe程序的当前文件夹。
在这里插入图片描述
注意:ControlCAN.dll需要另外拷贝进文件夹的,不然无法运行。
在这里插入图片描述

此时CAN_simulator.exe已经可以运行,将文件夹发给其他人也可以使用了。

5、使用Enigma Virtual Box虚拟文件打包工具继续打包
在这里插入图片描述
点击浏览选择CAN_simulator.exe文件,点击打包生成最终的CAN_simulator_boxed.exe。
在这里插入图片描述
至此,小工具已经完成了。后续根据项目需要,再来扩展吧。

标签: qt5 c++ ui

本文转载自: https://blog.csdn.net/jianxuezixuan/article/details/127083860
版权归原作者 jianxuezixuan 所有, 如有侵权,请联系我们删除。

“基于QT的CAN数据采集模拟器工具”的评论:

还没有评论