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。
至此,小工具已经完成了。后续根据项目需要,再来扩展吧。
版权归原作者 jianxuezixuan 所有, 如有侵权,请联系我们删除。