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实现参数批量配置的更多相关文章

  1. qt configure参数配置介绍

    ======================================全文是按照./configure -help来翻译的==================================== ...

  2. Linux下Qt的安装与配置

    参考资料:http://www.cnblogs.com/emouse/archive/2013/01/28/2880142.html Linux 下编译.安装.配置 QT 下载qt 这里用的是4.7. ...

  3. Qt configure 参数不完全说明

    只需要加个 -fast参数就ok了.其他参数视自己情况而定,比如你不需要qt3支持可以添加-no-qt3support,或者不需要webkit插件 -no-webkit配置参数选项: 前面是*号的表示 ...

  4. BatchConfigTool批量配置工具

    海康批量配置工具BatchConfigTool是一款支持设备在线搜索.批量配置参数.批量升级等功能的软件,支持对大批量设备同时进行各参数的配置,极大的简化了操作过程! 软件功能 1.对在线设备进行搜索 ...

  5. Qt configure 参数

    在编译QT前,可加各种参数来定制自己想要的QT库.这对需要裁减QT库的朋友来说非常重要.对于如何编译QT,可以参考:http://hi.baidu.com/agassi%5Fp/blog/item/4 ...

  6. thinkphp 批量配置

    C配置方法支持批量配置,例如: $config = array('WEB_SITE_TITLE'=>'ThinkPHP','WEB_SITE_DESCRIPTION'=>'开源PHP框架' ...

  7. HighCharts选项和参数详细配置查询表

    概述:作为一款出色的交互图表制作工具,HighCharts有着全面的选项.参数等配置信息.为了帮助大家进一步掌握HighCharts,今天我们为大家整理了HighCharts的所有配置信息和说明,将其 ...

  8. Mybatis 插入与批量插入以及多参数批量删除

    实体类: import java.io.Serializable; public class AttachmentTable implements Serializable { private sta ...

  9. struts文件上传拦截器中参数的配置(maximumSize,allowedTypes ,allowedExtensions)问题

    <interceptor-ref name="fileUpload"> <param name="allowedTypes">image ...

  10. 【转】生产环境MySQL Server核心参数的配置

         ⑴ lower_case_table_names              ● 推荐理由                    GNU/Linux 平台,对数据库.表.存储过程等对象名称大小 ...

随机推荐

  1. 用STM32F401和nRF24L01制作无线调速小车

    硬件配置 在做这个小项目前, 考察过STM32F103C8T6, STM32F401CCU6和STC89C52这三个MCU, 并实际跑了一些用例 STC89C52在代码上要简单得多, 它的问题是没有A ...

  2. SpringBoot+Shiro+LayUI权限管理系统项目-9.核心知识点总结

    1.说明 本篇讲一下本项目几个重要的知识点,详细看源码,文章下方捐赠或QQ联系捐赠获取. 2.Shiro如何设置密码加密算法 1.在shiro配置文件中添加: @Bean public HashedC ...

  3. oracle sqlplus命令详解(官方示例)

    以为内容选自Oracle官方文档,只讲command-line: 规范:<变量名> , {举例} , a | b 枚举可选值,(XX)描述 ------------------------ ...

  4. spring boot+layui实现增删改查实战

    说明: 最近在做一个后台,希望用一个现成的前端模板,找了一圈发现Layui比较合适.我知道很多人都有这个需求,为了使大家快速上手,我把自己写的最实用的增删改查案例完整的展示出来. 源码地址: http ...

  5. xHook 源码解析

    xHook 是爱奇艺开源的一个PLT Hook 框架 项目地址: https://github.com/iqiyi/xHook 该项目实现了 PTL/GOT Hook PTL hook 的本质是修改内 ...

  6. [BUUCTF][Web][极客大挑战 2019]Havefun 1

    打开靶机的URL,看到一个页面 右键查看源代码,看到有用信息 <html> ... <!-- $cat=$_GET['cat']; echo $cat; if($cat=='dog' ...

  7. linux7/8版本的docker-ce安装(2022/5/27亲测可行)

    centos7 # 先配阿里源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup curl - ...

  8. tempfile创建临时文件或目录

    import tempfile tempfile.TemporaryFile() # 创建文件,返回文件对象 tempfile.NamedTemporaryFile() # 同上,不过会生成带有文件名 ...

  9. MySQL 数据库死锁排查

    死锁排查方法 查看进程状态 show processlist; 查看行锁的状态 show status like 'InnoDB_row_lock%'; 查询是否有死锁 show engine inn ...

  10. 【Azure Redis 缓存】定位Java Spring Boot 使用 Jedis 或 Lettuce 无法连接到 Redis的网络连通性步骤

    问题描述 Java Spring Boot的代码在IDE里面跑可以连上 Azure 的 Redis服务,打包成Image放在容器里面跑,就连不上azure的redis服务,错误消息为: Unable ...