QT实现参数批量配置
QT实现批量配置
需求
- 一些参数需要批量化配置
- 之前搭建的FPGA的寄存器控制模型
- 使用AXI-lite搭建
- 直接操作上位机
- 这里需要一个可以快速配置所有参数的上位机
- 需要保存文件,可以保留上一次的参数
直接实现
- 使用输入框复制,每个输入框配置一个下载按钮
- 加载的时间很长,且实现繁琐
- 需要不断地拖动UI控件
表格实现
- 将参数直接制作成表格
- 在表格中完成参数地控制
- 参数直接全部丢给ARM,UDP的宽度足以支撑这个参数同时更新

实现步骤
- 库文件直接同名导入头文件
#include "fpga_subs.h"
#include "ui_fpga_subs.h"
#include <QFile>
#include <QFileInfo>
#include <QDebug>
#include <QTableWidgetItem>
fpga_subs::fpga_subs(QWidget *parent) :
QWidget(parent),
ui(new Ui::fpga_subs)
{
ui->setupUi(this);
//QRegExp regx("[A-Fa-f0-9]{4}");
//QValidator *validator = new QRegExpValidator(regx, ui->lineEdit);
//ui->lineEdit->setValidator(validator);
table = new QTableWidget(row,column+1,this);
ui->ui_table_layout->addWidget(table);
table->resize(900,350);
QStringList head_lab;
head_lab << "0x0000" << "0x0001" << "0x0002" << "0x0003" << "note";
table->setHorizontalHeaderLabels(head_lab);
QStringList column_lab;
for(int i = 0; i < row * column; i=i+4)
{
column_lab << QString::number(i);
table->setVerticalHeaderLabels(column_lab);
}
}
fpga_subs::~fpga_subs()
{
delete ui;
}
void fpga_subs::update_file_path(QList<QString> p_list)
{
p_fpga_file = p_list[P_FPGA_FILE]; //path update
on_ui_rd_param_clicked(); //update chart
}
void fpga_subs::on_ui_rd_param_clicked()
{
QString pns_ini;
pns_ini = p_fpga_file + "fpga_ini.dat";
QFile f(pns_ini);
QFileInfo fi(pns_ini);
qDebug() << pns_ini;
if(!fi.exists())
{
QString info = "no file " + pns_ini + " to read";
emit info_trig(0,CODE_FPGA_SET,"error",info);
return;
}
f.open(QIODevice::ReadOnly | QIODevice::Text);
l_fpga_set.clear();
for(int j = 0; j < row * column; j++)
{
l_fpga_set.append("0");
}
int i = 0;
while(!f.atEnd() && i < row * column)
{
QByteArray b_line = f.readLine();
QString s_line(b_line);
s_line.remove("\n");
l_fpga_set.replace(i,s_line);
i ++;
}
f.close();
qDebug() << l_fpga_set;
for(int i = 0; i <row;i++)
{
for(int j = 0; j < column; j++)
{
//table->item(i,j)->setText(l_fpga_set[i*4+j]);
QTableWidgetItem *item = new QTableWidgetItem;
item->setText(l_fpga_set[i*4+j]);
table->setItem(i,j,item);
//delete item;
}
}
}
void fpga_subs::on_ui_wr_param_clicked()
{
l_fpga_set.clear();
for(int i = 0; i <row;i++)
{
for(int j = 0; j < column; j++)
{
//table->item(i,j)->setText(l_fpga_set[i*4+j]);
QTableWidgetItem *item_rd = new QTableWidgetItem;
item_rd = table->item(i,j);
if(item_rd == NULL)
{
l_fpga_set.append("0");
}
else
{
l_fpga_set.append(item_rd->text());
}
}
}
//write file
QString pns_ini;
pns_ini = p_fpga_file + "fpga_ini.dat";
QFile f(pns_ini);
f.open(QIODevice::WriteOnly | QIODevice::Text);
QTextStream f_out(&f);
f.seek(0);
for(int i = 0; i < row * column; i++)
{
f_out << l_fpga_set[i] << "\n";
}
f.close();
}
效果
- 直接将表格的数据和文件连接
- 配置的参数保存在文件中
- 后续将写入部分直接发送信号UDP模块就可以实现实际配置到FPGA
QT实现参数批量配置的更多相关文章
- qt configure参数配置介绍
======================================全文是按照./configure -help来翻译的==================================== ...
- Linux下Qt的安装与配置
参考资料:http://www.cnblogs.com/emouse/archive/2013/01/28/2880142.html Linux 下编译.安装.配置 QT 下载qt 这里用的是4.7. ...
- Qt configure 参数不完全说明
只需要加个 -fast参数就ok了.其他参数视自己情况而定,比如你不需要qt3支持可以添加-no-qt3support,或者不需要webkit插件 -no-webkit配置参数选项: 前面是*号的表示 ...
- BatchConfigTool批量配置工具
海康批量配置工具BatchConfigTool是一款支持设备在线搜索.批量配置参数.批量升级等功能的软件,支持对大批量设备同时进行各参数的配置,极大的简化了操作过程! 软件功能 1.对在线设备进行搜索 ...
- Qt configure 参数
在编译QT前,可加各种参数来定制自己想要的QT库.这对需要裁减QT库的朋友来说非常重要.对于如何编译QT,可以参考:http://hi.baidu.com/agassi%5Fp/blog/item/4 ...
- thinkphp 批量配置
C配置方法支持批量配置,例如: $config = array('WEB_SITE_TITLE'=>'ThinkPHP','WEB_SITE_DESCRIPTION'=>'开源PHP框架' ...
- HighCharts选项和参数详细配置查询表
概述:作为一款出色的交互图表制作工具,HighCharts有着全面的选项.参数等配置信息.为了帮助大家进一步掌握HighCharts,今天我们为大家整理了HighCharts的所有配置信息和说明,将其 ...
- Mybatis 插入与批量插入以及多参数批量删除
实体类: import java.io.Serializable; public class AttachmentTable implements Serializable { private sta ...
- struts文件上传拦截器中参数的配置(maximumSize,allowedTypes ,allowedExtensions)问题
<interceptor-ref name="fileUpload"> <param name="allowedTypes">image ...
- 【转】生产环境MySQL Server核心参数的配置
⑴ lower_case_table_names ● 推荐理由 GNU/Linux 平台,对数据库.表.存储过程等对象名称大小 ...
随机推荐
- python中两个不同shape的数组间运算规则
1 前言 声明:本博客讨论的数组间运算是指四则运算,如:a+b.a-b.a*b.a/b,不包括 a.dot(b) 等运算,由于 numpy 和 tensorflow 中都遵循相同的规则,本博客以 nu ...
- Laravel入坑指南(9)——数据迁移与填充
当我们开发完成一个(小)项目,发布到线上时,我们需要将本地数据库迁移到服务器上,并且填充初始化数据.而Laravel框架规定了一套完善的数据迁移与填充机制. 在官网中分别介绍了以下四个命令: php ...
- 解决Springboot发起https请求报错:sun.sec urity.validator.ValidatorException: PKIX path building failed
问题描述 最近开发项目中在springboot接口中调用第三方https接口,后台日志报错: sun.sec urity.validator.ValidatorException: PKIX path ...
- Java设计模式-中介者模式Mediator
介绍 中介者模式(Mediator Pattern),用一个中介对象来封装一系列的对象交互.中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 中介者模式属于行 ...
- spring boot整合poi实现excel文件导入导出实战
今天科比离去,今天肺炎病毒持续肆虐... 意识到生命的脆弱,今天我继续前行,比以往更加坚定和紧迫,这辈子不活好自己就算白来一趟. 1.项目介绍 最近帮朋友做了一个小工具,就是实现:上传一个excel文 ...
- 【Android逆向】某小说网站签名破解
1. 豌豆荚下载v5.4的版本 2. 参考前面两篇文章进行反编译和重打包后,安装到手机发现会有验签失败的报错 抓取log 03-29 16:15:37.545 25910 26539 D KM-NAT ...
- OpenCV开发笔记(六十二):红胖子8分钟带你深入了解亚像素角点检测(图文并茂+浅显易懂+程序源码)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- Qt三方库开发技术(一):QuaZIP介绍、编译和使用
前言 Qt使用一些压缩解压功能,探讨过libzip库,zlib库,libzip库比较原始,还有其他库,都比较基础,而在基础库之上,又有高级封装库,Qt中的QuaZIP是一个很好的选择. 本文主要 ...
- 无法加载 DLL“librdkafka”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)
我这个错误是在引用了封装kafka项目的情况下提示的. 解决方案:在本项目里面安装 RdKafka ,再次运行就好了.
- 如何在矩池云上安装语音识别模型 Whisper
如何在矩池云上安装语音识别模型 Whisper Whisper 是 OpenAI 近期开源的一个语音识别的模型,研究人员基于 680,000 小时的标记音频数据进行训练,它同时也是一个多任务模型,可以 ...